Remove ASN1_OP_I2D_* callbacks.
These are a little odd with the ASN1_ENCODING paths. And there were some
bugs previously around CHOICE types. Nothing defines them, inside or
outside BoringSSL, so remove them.
Change-Id: Id2954fef8ee9637f36f7511b51dc0adc2557e3ba
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/49352
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/asn1/tasn_enc.c b/crypto/asn1/tasn_enc.c
index 7abd34b..4ccacab 100644
--- a/crypto/asn1/tasn_enc.c
+++ b/crypto/asn1/tasn_enc.c
@@ -174,10 +174,6 @@
OPENSSL_PUT_ERROR(ASN1, ASN1_R_BAD_TEMPLATE);
return -1;
}
- const ASN1_AUX *aux = it->funcs;
- ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
- if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it, NULL))
- return -1;
i = asn1_get_choice_selector(pval, it);
if (i < 0 || i >= it->tcount) {
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NO_MATCHING_CHOICE_TYPE);
@@ -189,12 +185,7 @@
return -1;
}
ASN1_VALUE **pchval = asn1_get_field_ptr(pval, chtt);
- int ret = asn1_template_ex_i2d(pchval, out, chtt, -1, aclass);
- if (ret < 0 ||
- (asn1_cb && !asn1_cb(ASN1_OP_I2D_POST, pval, it, NULL))) {
- return -1;
- }
- return ret;
+ return asn1_template_ex_i2d(pchval, out, chtt, -1, aclass);
}
case ASN1_ITYPE_EXTERN: {
@@ -228,10 +219,6 @@
aclass = (aclass & ~ASN1_TFLG_TAG_CLASS)
| V_ASN1_UNIVERSAL;
}
- const ASN1_AUX *aux = it->funcs;
- ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
- if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it, NULL))
- return -1;
/* First work out sequence content length */
for (i = 0, tt = it->templates; i < it->tcount; tt++, i++) {
const ASN1_TEMPLATE *seqtt;
@@ -263,8 +250,6 @@
return -1;
}
}
- if (asn1_cb && !asn1_cb(ASN1_OP_I2D_POST, pval, it, NULL))
- return -1;
return seqlen;
}
diff --git a/include/openssl/asn1t.h b/include/openssl/asn1t.h
index 20c1e95..45302ef 100644
--- a/include/openssl/asn1t.h
+++ b/include/openssl/asn1t.h
@@ -595,8 +595,8 @@
#define ASN1_OP_FREE_POST 3
#define ASN1_OP_D2I_PRE 4
#define ASN1_OP_D2I_POST 5
-#define ASN1_OP_I2D_PRE 6
-#define ASN1_OP_I2D_POST 7
+/* ASN1_OP_I2D_PRE and ASN1_OP_I2D_POST are not supported. We leave the
+ * constants undefined so code relying on them does not accidentally compile. */
#define ASN1_OP_PRINT_PRE 8
#define ASN1_OP_PRINT_POST 9
#define ASN1_OP_STREAM_PRE 10