summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509name.c
diff options
context:
space:
mode:
authortedu <>2014-04-18 01:59:00 +0000
committertedu <>2014-04-18 01:59:00 +0000
commit513bec93d6747369737d3a618ef58a44410059f6 (patch)
tree88ee4831e2437f9075e786ffb662bb05fe0e3df6 /src/lib/libcrypto/x509/x509name.c
parent1fca82b89342502ff32bda59bd067e303ff9d5ab (diff)
downloadopenbsd-513bec93d6747369737d3a618ef58a44410059f6.tar.gz
openbsd-513bec93d6747369737d3a618ef58a44410059f6.tar.bz2
openbsd-513bec93d6747369737d3a618ef58a44410059f6.zip
blunt force knf
Diffstat (limited to 'src/lib/libcrypto/x509/x509name.c')
-rw-r--r--src/lib/libcrypto/x509/x509name.c123
1 files changed, 53 insertions, 70 deletions
diff --git a/src/lib/libcrypto/x509/x509name.c b/src/lib/libcrypto/x509/x509name.c
index 27bc4dc9a3..729fb060f8 100644
--- a/src/lib/libcrypto/x509/x509name.c
+++ b/src/lib/libcrypto/x509/x509name.c
@@ -65,17 +65,17 @@
65#include <openssl/x509.h> 65#include <openssl/x509.h>
66 66
67int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len) 67int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len)
68 { 68{
69 ASN1_OBJECT *obj; 69 ASN1_OBJECT *obj;
70 70
71 obj=OBJ_nid2obj(nid); 71 obj=OBJ_nid2obj(nid);
72 if (obj == NULL) return(-1); 72 if (obj == NULL) return(-1);
73 return(X509_NAME_get_text_by_OBJ(name,obj,buf,len)); 73 return(X509_NAME_get_text_by_OBJ(name,obj,buf,len));
74 } 74}
75 75
76int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf, 76int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf,
77 int len) 77 int len)
78 { 78{
79 int i; 79 int i;
80 ASN1_STRING *data; 80 ASN1_STRING *data;
81 81
@@ -87,27 +87,27 @@ int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf,
87 memcpy(buf,data->data,i); 87 memcpy(buf,data->data,i);
88 buf[i]='\0'; 88 buf[i]='\0';
89 return(i); 89 return(i);
90 } 90}
91 91
92int X509_NAME_entry_count(X509_NAME *name) 92int X509_NAME_entry_count(X509_NAME *name)
93 { 93{
94 if (name == NULL) return(0); 94 if (name == NULL) return(0);
95 return(sk_X509_NAME_ENTRY_num(name->entries)); 95 return(sk_X509_NAME_ENTRY_num(name->entries));
96 } 96}
97 97
98int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos) 98int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos)
99 { 99{
100 ASN1_OBJECT *obj; 100 ASN1_OBJECT *obj;
101 101
102 obj=OBJ_nid2obj(nid); 102 obj=OBJ_nid2obj(nid);
103 if (obj == NULL) return(-2); 103 if (obj == NULL) return(-2);
104 return(X509_NAME_get_index_by_OBJ(name,obj,lastpos)); 104 return(X509_NAME_get_index_by_OBJ(name,obj,lastpos));
105 } 105}
106 106
107/* NOTE: you should be passsing -1, not 0 as lastpos */ 107/* NOTE: you should be passsing -1, not 0 as lastpos */
108int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, 108int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
109 int lastpos) 109 int lastpos)
110 { 110{
111 int n; 111 int n;
112 X509_NAME_ENTRY *ne; 112 X509_NAME_ENTRY *ne;
113 STACK_OF(X509_NAME_ENTRY) *sk; 113 STACK_OF(X509_NAME_ENTRY) *sk;
@@ -117,26 +117,25 @@ int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
117 lastpos= -1; 117 lastpos= -1;
118 sk=name->entries; 118 sk=name->entries;
119 n=sk_X509_NAME_ENTRY_num(sk); 119 n=sk_X509_NAME_ENTRY_num(sk);
120 for (lastpos++; lastpos < n; lastpos++) 120 for (lastpos++; lastpos < n; lastpos++) {
121 {
122 ne=sk_X509_NAME_ENTRY_value(sk,lastpos); 121 ne=sk_X509_NAME_ENTRY_value(sk,lastpos);
123 if (OBJ_cmp(ne->object,obj) == 0) 122 if (OBJ_cmp(ne->object,obj) == 0)
124 return(lastpos); 123 return(lastpos);
125 }
126 return(-1);
127 } 124 }
125 return(-1);
126}
128 127
129X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc) 128X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc)
130 { 129{
131 if(name == NULL || sk_X509_NAME_ENTRY_num(name->entries) <= loc 130 if(name == NULL || sk_X509_NAME_ENTRY_num(name->entries) <= loc
132 || loc < 0) 131 || loc < 0)
133 return(NULL); 132 return(NULL);
134 else 133 else
135 return(sk_X509_NAME_ENTRY_value(name->entries,loc)); 134 return(sk_X509_NAME_ENTRY_value(name->entries,loc));
136 } 135}
137 136
138X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc) 137X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc)
139 { 138{
140 X509_NAME_ENTRY *ret; 139 X509_NAME_ENTRY *ret;
141 int i,n,set_prev,set_next; 140 int i,n,set_prev,set_next;
142 STACK_OF(X509_NAME_ENTRY) *sk; 141 STACK_OF(X509_NAME_ENTRY) *sk;
@@ -169,7 +168,7 @@ X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc)
169 for (i=loc; i<n; i++) 168 for (i=loc; i<n; i++)
170 sk_X509_NAME_ENTRY_value(sk,i)->set--; 169 sk_X509_NAME_ENTRY_value(sk,i)->set--;
171 return(ret); 170 return(ret);
172 } 171}
173 172
174int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, 173int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
175 unsigned char *bytes, int len, int loc, int set) 174 unsigned char *bytes, int len, int loc, int set)
@@ -211,7 +210,7 @@ int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
211 * prepend to the guy we are about to stomp on. */ 210 * prepend to the guy we are about to stomp on. */
212int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, int loc, 211int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, int loc,
213 int set) 212 int set)
214 { 213{
215 X509_NAME_ENTRY *new_name=NULL; 214 X509_NAME_ENTRY *new_name=NULL;
216 int n,i,inc; 215 int n,i,inc;
217 STACK_OF(X509_NAME_ENTRY) *sk; 216 STACK_OF(X509_NAME_ENTRY) *sk;
@@ -224,101 +223,87 @@ int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, int loc,
224 223
225 name->modified=1; 224 name->modified=1;
226 225
227 if (set == -1) 226 if (set == -1) {
228 { 227 if (loc == 0) {
229 if (loc == 0)
230 {
231 set=0; 228 set=0;
232 inc=1; 229 inc=1;
233 } 230 } else {
234 else
235 {
236 set=sk_X509_NAME_ENTRY_value(sk,loc-1)->set; 231 set=sk_X509_NAME_ENTRY_value(sk,loc-1)->set;
237 inc=0; 232 inc=0;
238 }
239 } 233 }
240 else /* if (set >= 0) */ 234 } else /* if (set >= 0) */ {
241 { 235 if (loc >= n) {
242 if (loc >= n)
243 {
244 if (loc != 0) 236 if (loc != 0)
245 set=sk_X509_NAME_ENTRY_value(sk,loc-1)->set+1; 237 set=sk_X509_NAME_ENTRY_value(sk,loc-1)->set+1;
246 else 238 else
247 set=0; 239 set=0;
248 } 240 } else
249 else
250 set=sk_X509_NAME_ENTRY_value(sk,loc)->set; 241 set=sk_X509_NAME_ENTRY_value(sk,loc)->set;
251 inc=(set == 0)?1:0; 242 inc=(set == 0)?1:0;
252 } 243 }
253 244
254 if ((new_name=X509_NAME_ENTRY_dup(ne)) == NULL) 245 if ((new_name=X509_NAME_ENTRY_dup(ne)) == NULL)
255 goto err; 246 goto err;
256 new_name->set=set; 247 new_name->set=set;
257 if (!sk_X509_NAME_ENTRY_insert(sk,new_name,loc)) 248 if (!sk_X509_NAME_ENTRY_insert(sk,new_name,loc)) {
258 {
259 X509err(X509_F_X509_NAME_ADD_ENTRY,ERR_R_MALLOC_FAILURE); 249 X509err(X509_F_X509_NAME_ADD_ENTRY,ERR_R_MALLOC_FAILURE);
260 goto err; 250 goto err;
261 } 251 }
262 if (inc) 252 if (inc) {
263 {
264 n=sk_X509_NAME_ENTRY_num(sk); 253 n=sk_X509_NAME_ENTRY_num(sk);
265 for (i=loc+1; i<n; i++) 254 for (i=loc+1; i<n; i++)
266 sk_X509_NAME_ENTRY_value(sk,i-1)->set+=1; 255 sk_X509_NAME_ENTRY_value(sk,i-1)->set+=1;
267 } 256 }
268 return(1); 257 return(1);
269err: 258err:
270 if (new_name != NULL) 259 if (new_name != NULL)
271 X509_NAME_ENTRY_free(new_name); 260 X509_NAME_ENTRY_free(new_name);
272 return(0); 261 return(0);
273 } 262}
274 263
275X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, 264X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
276 const char *field, int type, const unsigned char *bytes, int len) 265 const char *field, int type, const unsigned char *bytes, int len)
277 { 266{
278 ASN1_OBJECT *obj; 267 ASN1_OBJECT *obj;
279 X509_NAME_ENTRY *nentry; 268 X509_NAME_ENTRY *nentry;
280 269
281 obj=OBJ_txt2obj(field, 0); 270 obj=OBJ_txt2obj(field, 0);
282 if (obj == NULL) 271 if (obj == NULL) {
283 {
284 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT, 272 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT,
285 X509_R_INVALID_FIELD_NAME); 273 X509_R_INVALID_FIELD_NAME);
286 ERR_add_error_data(2, "name=", field); 274 ERR_add_error_data(2, "name=", field);
287 return(NULL); 275 return(NULL);
288 } 276 }
289 nentry = X509_NAME_ENTRY_create_by_OBJ(ne,obj,type,bytes,len); 277 nentry = X509_NAME_ENTRY_create_by_OBJ(ne,obj,type,bytes,len);
290 ASN1_OBJECT_free(obj); 278 ASN1_OBJECT_free(obj);
291 return nentry; 279 return nentry;
292 } 280}
293 281
294X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, 282X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
295 int type, unsigned char *bytes, int len) 283 int type, unsigned char *bytes, int len)
296 { 284{
297 ASN1_OBJECT *obj; 285 ASN1_OBJECT *obj;
298 X509_NAME_ENTRY *nentry; 286 X509_NAME_ENTRY *nentry;
299 287
300 obj=OBJ_nid2obj(nid); 288 obj=OBJ_nid2obj(nid);
301 if (obj == NULL) 289 if (obj == NULL) {
302 {
303 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_NID,X509_R_UNKNOWN_NID); 290 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_NID,X509_R_UNKNOWN_NID);
304 return(NULL); 291 return(NULL);
305 } 292 }
306 nentry = X509_NAME_ENTRY_create_by_OBJ(ne,obj,type,bytes,len); 293 nentry = X509_NAME_ENTRY_create_by_OBJ(ne,obj,type,bytes,len);
307 ASN1_OBJECT_free(obj); 294 ASN1_OBJECT_free(obj);
308 return nentry; 295 return nentry;
309 } 296}
310 297
311X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, 298X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
312 ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len) 299 ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len)
313 { 300{
314 X509_NAME_ENTRY *ret; 301 X509_NAME_ENTRY *ret;
315 302
316 if ((ne == NULL) || (*ne == NULL)) 303 if ((ne == NULL) || (*ne == NULL)) {
317 {
318 if ((ret=X509_NAME_ENTRY_new()) == NULL) 304 if ((ret=X509_NAME_ENTRY_new()) == NULL)
319 return(NULL); 305 return(NULL);
320 } 306 } else
321 else
322 ret= *ne; 307 ret= *ne;
323 308
324 if (!X509_NAME_ENTRY_set_object(ret,obj)) 309 if (!X509_NAME_ENTRY_set_object(ret,obj))
@@ -332,23 +317,22 @@ err:
332 if ((ne == NULL) || (ret != *ne)) 317 if ((ne == NULL) || (ret != *ne))
333 X509_NAME_ENTRY_free(ret); 318 X509_NAME_ENTRY_free(ret);
334 return(NULL); 319 return(NULL);
335 } 320}
336 321
337int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj) 322int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj)
338 { 323{
339 if ((ne == NULL) || (obj == NULL)) 324 if ((ne == NULL) || (obj == NULL)) {
340 {
341 X509err(X509_F_X509_NAME_ENTRY_SET_OBJECT,ERR_R_PASSED_NULL_PARAMETER); 325 X509err(X509_F_X509_NAME_ENTRY_SET_OBJECT,ERR_R_PASSED_NULL_PARAMETER);
342 return(0); 326 return(0);
343 } 327 }
344 ASN1_OBJECT_free(ne->object); 328 ASN1_OBJECT_free(ne->object);
345 ne->object=OBJ_dup(obj); 329 ne->object=OBJ_dup(obj);
346 return((ne->object == NULL)?0:1); 330 return((ne->object == NULL)?0:1);
347 } 331}
348 332
349int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, 333int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
350 const unsigned char *bytes, int len) 334 const unsigned char *bytes, int len)
351 { 335{
352 int i; 336 int i;
353 337
354 if ((ne == NULL) || ((bytes == NULL) && (len != 0))) return(0); 338 if ((ne == NULL) || ((bytes == NULL) && (len != 0))) return(0);
@@ -359,25 +343,24 @@ int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
359 if (len < 0) len=strlen((const char *)bytes); 343 if (len < 0) len=strlen((const char *)bytes);
360 i=ASN1_STRING_set(ne->value,bytes,len); 344 i=ASN1_STRING_set(ne->value,bytes,len);
361 if (!i) return(0); 345 if (!i) return(0);
362 if (type != V_ASN1_UNDEF) 346 if (type != V_ASN1_UNDEF) {
363 {
364 if (type == V_ASN1_APP_CHOOSE) 347 if (type == V_ASN1_APP_CHOOSE)
365 ne->value->type=ASN1_PRINTABLE_type(bytes,len); 348 ne->value->type=ASN1_PRINTABLE_type(bytes,len);
366 else 349 else
367 ne->value->type=type; 350 ne->value->type=type;
368 }
369 return(1);
370 } 351 }
352 return(1);
353}
371 354
372ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne) 355ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne)
373 { 356{
374 if (ne == NULL) return(NULL); 357 if (ne == NULL) return(NULL);
375 return(ne->object); 358 return(ne->object);
376 } 359}
377 360
378ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne) 361ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne)
379 { 362{
380 if (ne == NULL) return(NULL); 363 if (ne == NULL) return(NULL);
381 return(ne->value); 364 return(ne->value);
382 } 365}
383 366