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
