|
1 |
| -/* $OpenBSD: a_object.c,v 1.43 2022/03/19 17:49:32 jsing Exp $ */ |
| 1 | +/* $OpenBSD: a_object.c,v 1.44 2022/03/20 13:27:23 jsing Exp $ */ |
2 | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
3 | 3 | * All rights reserved.
|
4 | 4 | *
|
@@ -123,28 +123,6 @@ ASN1_OBJECT_create(int nid, unsigned char *data, int len,
|
123 | 123 | return (OBJ_dup(&o));
|
124 | 124 | }
|
125 | 125 |
|
126 |
| -int |
127 |
| -i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp) |
128 |
| -{ |
129 |
| - unsigned char *p; |
130 |
| - int objsize; |
131 |
| - |
132 |
| - if ((a == NULL) || (a->data == NULL)) |
133 |
| - return (0); |
134 |
| - |
135 |
| - objsize = ASN1_object_size(0, a->length, V_ASN1_OBJECT); |
136 |
| - if (pp == NULL) |
137 |
| - return objsize; |
138 |
| - |
139 |
| - p = *pp; |
140 |
| - ASN1_put_object(&p, 0, a->length, V_ASN1_OBJECT, V_ASN1_UNIVERSAL); |
141 |
| - memcpy(p, a->data, a->length); |
142 |
| - p += a->length; |
143 |
| - |
144 |
| - *pp = p; |
145 |
| - return (objsize); |
146 |
| -} |
147 |
| - |
148 | 126 | static int
|
149 | 127 | oid_add_arc(CBB *cbb, uint64_t arc)
|
150 | 128 | {
|
@@ -541,36 +519,6 @@ i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *aobj)
|
541 | 519 | return ret;
|
542 | 520 | }
|
543 | 521 |
|
544 |
| -ASN1_OBJECT * |
545 |
| -d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long length) |
546 |
| -{ |
547 |
| - const unsigned char *p; |
548 |
| - long len; |
549 |
| - int tag, xclass; |
550 |
| - int inf, i; |
551 |
| - ASN1_OBJECT *ret = NULL; |
552 |
| - |
553 |
| - p = *pp; |
554 |
| - inf = ASN1_get_object(&p, &len, &tag, &xclass, length); |
555 |
| - if (inf & 0x80) { |
556 |
| - i = ASN1_R_BAD_OBJECT_HEADER; |
557 |
| - goto err; |
558 |
| - } |
559 |
| - |
560 |
| - if (tag != V_ASN1_OBJECT) { |
561 |
| - i = ASN1_R_EXPECTING_AN_OBJECT; |
562 |
| - goto err; |
563 |
| - } |
564 |
| - ret = c2i_ASN1_OBJECT(a, &p, len); |
565 |
| - if (ret) |
566 |
| - *pp = p; |
567 |
| - return ret; |
568 |
| - |
569 |
| - err: |
570 |
| - ASN1error(i); |
571 |
| - return (NULL); |
572 |
| -} |
573 |
| - |
574 | 522 | ASN1_OBJECT *
|
575 | 523 | c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)
|
576 | 524 | {
|
@@ -646,3 +594,55 @@ c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)
|
646 | 594 | ASN1_OBJECT_free(ret);
|
647 | 595 | return (NULL);
|
648 | 596 | }
|
| 597 | + |
| 598 | +int |
| 599 | +i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp) |
| 600 | +{ |
| 601 | + unsigned char *p; |
| 602 | + int objsize; |
| 603 | + |
| 604 | + if ((a == NULL) || (a->data == NULL)) |
| 605 | + return (0); |
| 606 | + |
| 607 | + objsize = ASN1_object_size(0, a->length, V_ASN1_OBJECT); |
| 608 | + if (pp == NULL) |
| 609 | + return objsize; |
| 610 | + |
| 611 | + p = *pp; |
| 612 | + ASN1_put_object(&p, 0, a->length, V_ASN1_OBJECT, V_ASN1_UNIVERSAL); |
| 613 | + memcpy(p, a->data, a->length); |
| 614 | + p += a->length; |
| 615 | + |
| 616 | + *pp = p; |
| 617 | + return (objsize); |
| 618 | +} |
| 619 | + |
| 620 | +ASN1_OBJECT * |
| 621 | +d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long length) |
| 622 | +{ |
| 623 | + const unsigned char *p; |
| 624 | + long len; |
| 625 | + int tag, xclass; |
| 626 | + int inf, i; |
| 627 | + ASN1_OBJECT *ret = NULL; |
| 628 | + |
| 629 | + p = *pp; |
| 630 | + inf = ASN1_get_object(&p, &len, &tag, &xclass, length); |
| 631 | + if (inf & 0x80) { |
| 632 | + i = ASN1_R_BAD_OBJECT_HEADER; |
| 633 | + goto err; |
| 634 | + } |
| 635 | + |
| 636 | + if (tag != V_ASN1_OBJECT) { |
| 637 | + i = ASN1_R_EXPECTING_AN_OBJECT; |
| 638 | + goto err; |
| 639 | + } |
| 640 | + ret = c2i_ASN1_OBJECT(a, &p, len); |
| 641 | + if (ret) |
| 642 | + *pp = p; |
| 643 | + return ret; |
| 644 | + |
| 645 | + err: |
| 646 | + ASN1error(i); |
| 647 | + return (NULL); |
| 648 | +} |
0 commit comments