diff options
Diffstat (limited to 'src/lib/libcrypto/cms/cms_att.c')
-rw-r--r-- | src/lib/libcrypto/cms/cms_att.c | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/src/lib/libcrypto/cms/cms_att.c b/src/lib/libcrypto/cms/cms_att.c new file mode 100644 index 0000000000..664e64971b --- /dev/null +++ b/src/lib/libcrypto/cms/cms_att.c | |||
@@ -0,0 +1,152 @@ | |||
1 | /* | ||
2 | * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. | ||
3 | * | ||
4 | * Licensed under the OpenSSL license (the "License"). You may not use | ||
5 | * this file except in compliance with the License. You can obtain a copy | ||
6 | * in the file LICENSE in the source distribution or at | ||
7 | * https://www.openssl.org/source/license.html | ||
8 | */ | ||
9 | |||
10 | #include <openssl/asn1t.h> | ||
11 | #include <openssl/pem.h> | ||
12 | #include <openssl/x509v3.h> | ||
13 | #include <openssl/err.h> | ||
14 | #include <openssl/cms.h> | ||
15 | #include "cms_lcl.h" | ||
16 | |||
17 | /* CMS SignedData Attribute utilities */ | ||
18 | |||
19 | int CMS_signed_get_attr_count(const CMS_SignerInfo *si) | ||
20 | { | ||
21 | return X509at_get_attr_count(si->signedAttrs); | ||
22 | } | ||
23 | |||
24 | int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, int lastpos) | ||
25 | { | ||
26 | return X509at_get_attr_by_NID(si->signedAttrs, nid, lastpos); | ||
27 | } | ||
28 | |||
29 | int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, | ||
30 | int lastpos) | ||
31 | { | ||
32 | return X509at_get_attr_by_OBJ(si->signedAttrs, obj, lastpos); | ||
33 | } | ||
34 | |||
35 | X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc) | ||
36 | { | ||
37 | return X509at_get_attr(si->signedAttrs, loc); | ||
38 | } | ||
39 | |||
40 | X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc) | ||
41 | { | ||
42 | return X509at_delete_attr(si->signedAttrs, loc); | ||
43 | } | ||
44 | |||
45 | int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr) | ||
46 | { | ||
47 | if (X509at_add1_attr(&si->signedAttrs, attr)) | ||
48 | return 1; | ||
49 | return 0; | ||
50 | } | ||
51 | |||
52 | int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, | ||
53 | const ASN1_OBJECT *obj, int type, | ||
54 | const void *bytes, int len) | ||
55 | { | ||
56 | if (X509at_add1_attr_by_OBJ(&si->signedAttrs, obj, type, bytes, len)) | ||
57 | return 1; | ||
58 | return 0; | ||
59 | } | ||
60 | |||
61 | int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, | ||
62 | int nid, int type, const void *bytes, int len) | ||
63 | { | ||
64 | if (X509at_add1_attr_by_NID(&si->signedAttrs, nid, type, bytes, len)) | ||
65 | return 1; | ||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, | ||
70 | const char *attrname, int type, | ||
71 | const void *bytes, int len) | ||
72 | { | ||
73 | if (X509at_add1_attr_by_txt(&si->signedAttrs, attrname, type, bytes, len)) | ||
74 | return 1; | ||
75 | return 0; | ||
76 | } | ||
77 | |||
78 | void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *oid, | ||
79 | int lastpos, int type) | ||
80 | { | ||
81 | return X509at_get0_data_by_OBJ(si->signedAttrs, oid, lastpos, type); | ||
82 | } | ||
83 | |||
84 | int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si) | ||
85 | { | ||
86 | return X509at_get_attr_count(si->unsignedAttrs); | ||
87 | } | ||
88 | |||
89 | int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, | ||
90 | int lastpos) | ||
91 | { | ||
92 | return X509at_get_attr_by_NID(si->unsignedAttrs, nid, lastpos); | ||
93 | } | ||
94 | |||
95 | int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, | ||
96 | const ASN1_OBJECT *obj, int lastpos) | ||
97 | { | ||
98 | return X509at_get_attr_by_OBJ(si->unsignedAttrs, obj, lastpos); | ||
99 | } | ||
100 | |||
101 | X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc) | ||
102 | { | ||
103 | return X509at_get_attr(si->unsignedAttrs, loc); | ||
104 | } | ||
105 | |||
106 | X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc) | ||
107 | { | ||
108 | return X509at_delete_attr(si->unsignedAttrs, loc); | ||
109 | } | ||
110 | |||
111 | int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr) | ||
112 | { | ||
113 | if (X509at_add1_attr(&si->unsignedAttrs, attr)) | ||
114 | return 1; | ||
115 | return 0; | ||
116 | } | ||
117 | |||
118 | int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, | ||
119 | const ASN1_OBJECT *obj, int type, | ||
120 | const void *bytes, int len) | ||
121 | { | ||
122 | if (X509at_add1_attr_by_OBJ(&si->unsignedAttrs, obj, type, bytes, len)) | ||
123 | return 1; | ||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, | ||
128 | int nid, int type, | ||
129 | const void *bytes, int len) | ||
130 | { | ||
131 | if (X509at_add1_attr_by_NID(&si->unsignedAttrs, nid, type, bytes, len)) | ||
132 | return 1; | ||
133 | return 0; | ||
134 | } | ||
135 | |||
136 | int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, | ||
137 | const char *attrname, int type, | ||
138 | const void *bytes, int len) | ||
139 | { | ||
140 | if (X509at_add1_attr_by_txt(&si->unsignedAttrs, attrname, | ||
141 | type, bytes, len)) | ||
142 | return 1; | ||
143 | return 0; | ||
144 | } | ||
145 | |||
146 | void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, | ||
147 | int lastpos, int type) | ||
148 | { | ||
149 | return X509at_get0_data_by_OBJ(si->unsignedAttrs, oid, lastpos, type); | ||
150 | } | ||
151 | |||
152 | /* Specific attribute cases */ | ||