Remove the tag parameter to IMPLEMENT_EXTERN_ASN1 It would be tempting to move knowledge of the tag to tasn_dec.cc, so that the callbacks don't need to handle optionality, but this field cannot express all tags, and we may have to bridge a type that's a CHOICE. Instead, remove it, since we're not actually using it. (Although this macro is public, it is not possible to call it externally because we don't export ASN1_EXTERN_FUNCS.) Change-Id: I2adcc2a152b0f643e1d1a70e31510c8bdd432b3d Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/81775 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/x509/x_name.cc b/crypto/x509/x_name.cc index 035a03a..8597375 100644 --- a/crypto/x509/x_name.cc +++ b/crypto/x509/x_name.cc
@@ -85,7 +85,7 @@ x509_name_ex_i2d, }; -IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff) +IMPLEMENT_EXTERN_ASN1(X509_NAME, x509_name_ff) IMPLEMENT_ASN1_FUNCTIONS(X509_NAME)
diff --git a/crypto/x509/x_x509.cc b/crypto/x509/x_x509.cc index be0420c..a2a5bdc 100644 --- a/crypto/x509/x_x509.cc +++ b/crypto/x509/x_x509.cc
@@ -251,7 +251,7 @@ x509_i2d_cb, }; -IMPLEMENT_EXTERN_ASN1(X509, V_ASN1_SEQUENCE, x509_extern_funcs) +IMPLEMENT_EXTERN_ASN1(X509, x509_extern_funcs) X509 *X509_dup(X509 *x509) { uint8_t *der = NULL;
diff --git a/include/openssl/asn1t.h b/include/openssl/asn1t.h index b3650af..2e8d296 100644 --- a/include/openssl/asn1t.h +++ b/include/openssl/asn1t.h
@@ -491,8 +491,8 @@ ASN1_ITEM_start(itname) ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, \ sizeof(ASN1_STRING), #itname ASN1_ITEM_end(itname) -#define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ - ASN1_ITEM_start(sname) ASN1_ITYPE_EXTERN, tag, NULL, 0, &fptrs, 0, \ +#define IMPLEMENT_EXTERN_ASN1(sname, fptrs) \ + ASN1_ITEM_start(sname) ASN1_ITYPE_EXTERN, -1, NULL, 0, &fptrs, 0, \ #sname ASN1_ITEM_end(sname) /* Macro to implement standard functions in terms of ASN1_ITEM structures */