diff options
| author | tb <> | 2023-12-14 14:04:46 +0000 |
|---|---|---|
| committer | tb <> | 2023-12-14 14:04:46 +0000 |
| commit | 987290cd3b734bc2fafd9c58d0105bcd141734cd (patch) | |
| tree | 8cbcb01fec9e072b76e243ecbbca38987b5ac2b4 /src/lib/libcrypto/objects/obj_dat.c | |
| parent | 38e521b2155722f1e4b9d3141ab43f0c4d5d8a1d (diff) | |
| download | openbsd-987290cd3b734bc2fafd9c58d0105bcd141734cd.tar.gz openbsd-987290cd3b734bc2fafd9c58d0105bcd141734cd.tar.bz2 openbsd-987290cd3b734bc2fafd9c58d0105bcd141734cd.zip | |
Simplify OBJ_nid2obj()
This is now yet another identical copy of the same code...
Next step will be to dedup.
ok jsing
Diffstat (limited to 'src/lib/libcrypto/objects/obj_dat.c')
| -rw-r--r-- | src/lib/libcrypto/objects/obj_dat.c | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c index 336673aefe..94841b4265 100644 --- a/src/lib/libcrypto/objects/obj_dat.c +++ b/src/lib/libcrypto/objects/obj_dat.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: obj_dat.c,v 1.67 2023/12/14 14:02:57 tb Exp $ */ | 1 | /* $OpenBSD: obj_dat.c,v 1.68 2023/12/14 14:04:46 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -279,31 +279,34 @@ OBJ_add_object(const ASN1_OBJECT *obj) | |||
| 279 | LCRYPTO_ALIAS(OBJ_add_object); | 279 | LCRYPTO_ALIAS(OBJ_add_object); |
| 280 | 280 | ||
| 281 | ASN1_OBJECT * | 281 | ASN1_OBJECT * |
| 282 | OBJ_nid2obj(int n) | 282 | OBJ_nid2obj(int nid) |
| 283 | { | 283 | { |
| 284 | ADDED_OBJ ad, *adp; | 284 | if (nid >= 0 && nid < NUM_NID) { |
| 285 | ASN1_OBJECT ob; | 285 | if (nid == NID_undef || nid_objs[nid].nid != NID_undef) |
| 286 | return (ASN1_OBJECT *)&nid_objs[nid]; | ||
| 286 | 287 | ||
| 287 | if ((n >= 0) && (n < NUM_NID)) { | 288 | goto unknown; |
| 288 | if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) { | ||
| 289 | OBJerror(OBJ_R_UNKNOWN_NID); | ||
| 290 | return (NULL); | ||
| 291 | } | ||
| 292 | return ((ASN1_OBJECT *)&(nid_objs[n])); | ||
| 293 | } else if (added == NULL) | ||
| 294 | return (NULL); | ||
| 295 | else { | ||
| 296 | ad.type = ADDED_NID; | ||
| 297 | ad.obj = &ob; | ||
| 298 | ob.nid = n; | ||
| 299 | adp = lh_ADDED_OBJ_retrieve(added, &ad); | ||
| 300 | if (adp != NULL) | ||
| 301 | return (adp->obj); | ||
| 302 | else { | ||
| 303 | OBJerror(OBJ_R_UNKNOWN_NID); | ||
| 304 | return (NULL); | ||
| 305 | } | ||
| 306 | } | 289 | } |
| 290 | |||
| 291 | /* XXX - locking. */ | ||
| 292 | if (added != NULL) { | ||
| 293 | ASN1_OBJECT aobj = { | ||
| 294 | .nid = nid, | ||
| 295 | }; | ||
| 296 | ADDED_OBJ needle = { | ||
| 297 | .type = ADDED_NID, | ||
| 298 | .obj = &aobj, | ||
| 299 | }; | ||
| 300 | ADDED_OBJ *found; | ||
| 301 | |||
| 302 | if ((found = lh_ADDED_OBJ_retrieve(added, &needle)) != NULL) | ||
| 303 | return found->obj; | ||
| 304 | } | ||
| 305 | |||
| 306 | unknown: | ||
| 307 | OBJerror(OBJ_R_UNKNOWN_NID); | ||
| 308 | |||
| 309 | return NULL; | ||
| 307 | } | 310 | } |
| 308 | LCRYPTO_ALIAS(OBJ_nid2obj); | 311 | LCRYPTO_ALIAS(OBJ_nid2obj); |
| 309 | 312 | ||
