diff options
Diffstat (limited to 'src/lib/libcrypto/asn1')
-rw-r--r-- | src/lib/libcrypto/asn1/a_object.c | 39 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn1_locl.h | 3 |
2 files changed, 40 insertions, 2 deletions
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c index 0061ccb880..56a08a3cb4 100644 --- a/src/lib/libcrypto/asn1/a_object.c +++ b/src/lib/libcrypto/asn1/a_object.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: a_object.c,v 1.42 2022/03/19 17:35:52 jsing Exp $ */ | 1 | /* $OpenBSD: a_object.c,v 1.43 2022/03/19 17:49:32 jsing 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 | * |
@@ -475,6 +475,43 @@ i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *aobj) | |||
475 | return i2t_ASN1_OBJECT_internal(aobj, buf, buf_len, 0); | 475 | return i2t_ASN1_OBJECT_internal(aobj, buf, buf_len, 0); |
476 | } | 476 | } |
477 | 477 | ||
478 | ASN1_OBJECT * | ||
479 | t2i_ASN1_OBJECT_internal(const char *oid) | ||
480 | { | ||
481 | ASN1_OBJECT *aobj = NULL; | ||
482 | uint8_t *data = NULL; | ||
483 | size_t data_len; | ||
484 | CBB cbb; | ||
485 | CBS cbs; | ||
486 | |||
487 | memset(&cbb, 0, sizeof(cbb)); | ||
488 | |||
489 | CBS_init(&cbs, oid, strlen(oid)); | ||
490 | |||
491 | if (!CBB_init(&cbb, 0)) | ||
492 | goto err; | ||
493 | if (!a2c_ASN1_OBJECT_internal(&cbb, &cbs)) | ||
494 | goto err; | ||
495 | if (!CBB_finish(&cbb, &data, &data_len)) | ||
496 | goto err; | ||
497 | |||
498 | if (data_len > INT_MAX) | ||
499 | goto err; | ||
500 | |||
501 | if ((aobj = ASN1_OBJECT_new()) == NULL) | ||
502 | goto err; | ||
503 | |||
504 | aobj->data = data; | ||
505 | aobj->length = (int)data_len; | ||
506 | data = NULL; | ||
507 | |||
508 | err: | ||
509 | CBB_cleanup(&cbb); | ||
510 | free(data); | ||
511 | |||
512 | return aobj; | ||
513 | } | ||
514 | |||
478 | int | 515 | int |
479 | i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *aobj) | 516 | i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *aobj) |
480 | { | 517 | { |
diff --git a/src/lib/libcrypto/asn1/asn1_locl.h b/src/lib/libcrypto/asn1/asn1_locl.h index 9a29a2b13f..12f7eadfb3 100644 --- a/src/lib/libcrypto/asn1/asn1_locl.h +++ b/src/lib/libcrypto/asn1/asn1_locl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn1_locl.h,v 1.22 2022/03/13 14:58:14 jsing Exp $ */ | 1 | /* $OpenBSD: asn1_locl.h,v 1.23 2022/03/19 17:49:32 jsing Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 2006. | 3 | * project 2006. |
4 | */ | 4 | */ |
@@ -201,5 +201,6 @@ int asn1_tag2charwidth(int tag); | |||
201 | 201 | ||
202 | int i2t_ASN1_OBJECT_internal(const ASN1_OBJECT *aobj, char *buf, int buf_len, | 202 | int i2t_ASN1_OBJECT_internal(const ASN1_OBJECT *aobj, char *buf, int buf_len, |
203 | int no_name); | 203 | int no_name); |
204 | ASN1_OBJECT *t2i_ASN1_OBJECT_internal(const char *oid); | ||
204 | 205 | ||
205 | __END_HIDDEN_DECLS | 206 | __END_HIDDEN_DECLS |