diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/x_x509a.c')
-rw-r--r-- | src/lib/libcrypto/asn1/x_x509a.c | 85 |
1 files changed, 54 insertions, 31 deletions
diff --git a/src/lib/libcrypto/asn1/x_x509a.c b/src/lib/libcrypto/asn1/x_x509a.c index 287d780830..69ea725709 100644 --- a/src/lib/libcrypto/asn1/x_x509a.c +++ b/src/lib/libcrypto/asn1/x_x509a.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * are met: | 10 | * are met: |
11 | * | 11 | * |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * | 14 | * |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
@@ -66,7 +66,7 @@ | |||
66 | * user modifiable data about a certificate. This data is | 66 | * user modifiable data about a certificate. This data is |
67 | * appended to the X509 encoding when the *_X509_AUX routines | 67 | * appended to the X509 encoding when the *_X509_AUX routines |
68 | * are used. This means that the "traditional" X509 routines | 68 | * are used. This means that the "traditional" X509 routines |
69 | * will simply ignore the extra data. | 69 | * will simply ignore the extra data. |
70 | */ | 70 | */ |
71 | 71 | ||
72 | static X509_CERT_AUX *aux_get(X509 *x); | 72 | static X509_CERT_AUX *aux_get(X509 *x); |
@@ -81,14 +81,18 @@ ASN1_SEQUENCE(X509_CERT_AUX) = { | |||
81 | 81 | ||
82 | IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_AUX) | 82 | IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_AUX) |
83 | 83 | ||
84 | static X509_CERT_AUX *aux_get(X509 *x) | 84 | static X509_CERT_AUX * |
85 | aux_get(X509 *x) | ||
85 | { | 86 | { |
86 | if(!x) return NULL; | 87 | if (!x) |
87 | if(!x->aux && !(x->aux = X509_CERT_AUX_new())) return NULL; | 88 | return NULL; |
89 | if (!x->aux && !(x->aux = X509_CERT_AUX_new())) | ||
90 | return NULL; | ||
88 | return x->aux; | 91 | return x->aux; |
89 | } | 92 | } |
90 | 93 | ||
91 | int X509_alias_set1(X509 *x, unsigned char *name, int len) | 94 | int |
95 | X509_alias_set1(X509 *x, unsigned char *name, int len) | ||
92 | { | 96 | { |
93 | X509_CERT_AUX *aux; | 97 | X509_CERT_AUX *aux; |
94 | if (!name) { | 98 | if (!name) { |
@@ -98,12 +102,15 @@ int X509_alias_set1(X509 *x, unsigned char *name, int len) | |||
98 | x->aux->alias = NULL; | 102 | x->aux->alias = NULL; |
99 | return 1; | 103 | return 1; |
100 | } | 104 | } |
101 | if(!(aux = aux_get(x))) return 0; | 105 | if (!(aux = aux_get(x))) |
102 | if(!aux->alias && !(aux->alias = ASN1_UTF8STRING_new())) return 0; | 106 | return 0; |
107 | if (!aux->alias && !(aux->alias = ASN1_UTF8STRING_new())) | ||
108 | return 0; | ||
103 | return ASN1_STRING_set(aux->alias, name, len); | 109 | return ASN1_STRING_set(aux->alias, name, len); |
104 | } | 110 | } |
105 | 111 | ||
106 | int X509_keyid_set1(X509 *x, unsigned char *id, int len) | 112 | int |
113 | X509_keyid_set1(X509 *x, unsigned char *id, int len) | ||
107 | { | 114 | { |
108 | X509_CERT_AUX *aux; | 115 | X509_CERT_AUX *aux; |
109 | if (!id) { | 116 | if (!id) { |
@@ -113,58 +120,74 @@ int X509_keyid_set1(X509 *x, unsigned char *id, int len) | |||
113 | x->aux->keyid = NULL; | 120 | x->aux->keyid = NULL; |
114 | return 1; | 121 | return 1; |
115 | } | 122 | } |
116 | if(!(aux = aux_get(x))) return 0; | 123 | if (!(aux = aux_get(x))) |
117 | if(!aux->keyid && !(aux->keyid = ASN1_OCTET_STRING_new())) return 0; | 124 | return 0; |
125 | if (!aux->keyid && !(aux->keyid = ASN1_OCTET_STRING_new())) | ||
126 | return 0; | ||
118 | return ASN1_STRING_set(aux->keyid, id, len); | 127 | return ASN1_STRING_set(aux->keyid, id, len); |
119 | } | 128 | } |
120 | 129 | ||
121 | unsigned char *X509_alias_get0(X509 *x, int *len) | 130 | unsigned char * |
131 | X509_alias_get0(X509 *x, int *len) | ||
122 | { | 132 | { |
123 | if(!x->aux || !x->aux->alias) return NULL; | 133 | if (!x->aux || !x->aux->alias) |
124 | if(len) *len = x->aux->alias->length; | 134 | return NULL; |
135 | if (len) | ||
136 | *len = x->aux->alias->length; | ||
125 | return x->aux->alias->data; | 137 | return x->aux->alias->data; |
126 | } | 138 | } |
127 | 139 | ||
128 | unsigned char *X509_keyid_get0(X509 *x, int *len) | 140 | unsigned char * |
141 | X509_keyid_get0(X509 *x, int *len) | ||
129 | { | 142 | { |
130 | if(!x->aux || !x->aux->keyid) return NULL; | 143 | if (!x->aux || !x->aux->keyid) |
131 | if(len) *len = x->aux->keyid->length; | 144 | return NULL; |
145 | if (len) | ||
146 | *len = x->aux->keyid->length; | ||
132 | return x->aux->keyid->data; | 147 | return x->aux->keyid->data; |
133 | } | 148 | } |
134 | 149 | ||
135 | int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj) | 150 | int |
151 | X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj) | ||
136 | { | 152 | { |
137 | X509_CERT_AUX *aux; | 153 | X509_CERT_AUX *aux; |
138 | ASN1_OBJECT *objtmp; | 154 | ASN1_OBJECT *objtmp; |
139 | if(!(objtmp = OBJ_dup(obj))) return 0; | 155 | if (!(objtmp = OBJ_dup(obj))) |
140 | if(!(aux = aux_get(x))) return 0; | 156 | return 0; |
141 | if(!aux->trust | 157 | if (!(aux = aux_get(x))) |
142 | && !(aux->trust = sk_ASN1_OBJECT_new_null())) return 0; | 158 | return 0; |
159 | if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null())) | ||
160 | return 0; | ||
143 | return sk_ASN1_OBJECT_push(aux->trust, objtmp); | 161 | return sk_ASN1_OBJECT_push(aux->trust, objtmp); |
144 | } | 162 | } |
145 | 163 | ||
146 | int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj) | 164 | int |
165 | X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj) | ||
147 | { | 166 | { |
148 | X509_CERT_AUX *aux; | 167 | X509_CERT_AUX *aux; |
149 | ASN1_OBJECT *objtmp; | 168 | ASN1_OBJECT *objtmp; |
150 | if(!(objtmp = OBJ_dup(obj))) return 0; | 169 | if (!(objtmp = OBJ_dup(obj))) |
151 | if(!(aux = aux_get(x))) return 0; | 170 | return 0; |
152 | if(!aux->reject | 171 | if (!(aux = aux_get(x))) |
153 | && !(aux->reject = sk_ASN1_OBJECT_new_null())) return 0; | 172 | return 0; |
173 | if (!aux->reject && !(aux->reject = sk_ASN1_OBJECT_new_null())) | ||
174 | return 0; | ||
154 | return sk_ASN1_OBJECT_push(aux->reject, objtmp); | 175 | return sk_ASN1_OBJECT_push(aux->reject, objtmp); |
155 | } | 176 | } |
156 | 177 | ||
157 | void X509_trust_clear(X509 *x) | 178 | void |
179 | X509_trust_clear(X509 *x) | ||
158 | { | 180 | { |
159 | if(x->aux && x->aux->trust) { | 181 | if (x->aux && x->aux->trust) { |
160 | sk_ASN1_OBJECT_pop_free(x->aux->trust, ASN1_OBJECT_free); | 182 | sk_ASN1_OBJECT_pop_free(x->aux->trust, ASN1_OBJECT_free); |
161 | x->aux->trust = NULL; | 183 | x->aux->trust = NULL; |
162 | } | 184 | } |
163 | } | 185 | } |
164 | 186 | ||
165 | void X509_reject_clear(X509 *x) | 187 | void |
188 | X509_reject_clear(X509 *x) | ||
166 | { | 189 | { |
167 | if(x->aux && x->aux->reject) { | 190 | if (x->aux && x->aux->reject) { |
168 | sk_ASN1_OBJECT_pop_free(x->aux->reject, ASN1_OBJECT_free); | 191 | sk_ASN1_OBJECT_pop_free(x->aux->reject, ASN1_OBJECT_free); |
169 | x->aux->reject = NULL; | 192 | x->aux->reject = NULL; |
170 | } | 193 | } |