summaryrefslogtreecommitdiff
path: root/lib/libcrypto
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcrypto')
-rw-r--r--lib/libcrypto/x509v3/v3_akeya.c40
-rw-r--r--lib/libcrypto/x509v3/v3_bcons.c32
-rw-r--r--lib/libcrypto/x509v3/v3_cpols.c190
-rw-r--r--lib/libcrypto/x509v3/v3_crld.c153
-rw-r--r--lib/libcrypto/x509v3/v3_extku.c23
-rw-r--r--lib/libcrypto/x509v3/v3_genn.c168
-rw-r--r--lib/libcrypto/x509v3/v3_info.c53
-rw-r--r--lib/libcrypto/x509v3/v3_ncons.c54
-rw-r--r--lib/libcrypto/x509v3/v3_pcia.c63
-rw-r--r--lib/libcrypto/x509v3/v3_pcons.c24
-rw-r--r--lib/libcrypto/x509v3/v3_pku.c32
-rw-r--r--lib/libcrypto/x509v3/v3_pmaps.c53
-rw-r--r--lib/libcrypto/x509v3/v3_sxnet.c62
13 files changed, 806 insertions, 141 deletions
diff --git a/lib/libcrypto/x509v3/v3_akeya.c b/lib/libcrypto/x509v3/v3_akeya.c
index 1848c0911ef..83ef1b58387 100644
--- a/lib/libcrypto/x509v3/v3_akeya.c
+++ b/lib/libcrypto/x509v3/v3_akeya.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_akeya.c,v 1.6 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_akeya.c,v 1.7 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -63,11 +63,39 @@
#include <openssl/conf.h>
#include <openssl/x509v3.h>
-ASN1_SEQUENCE(AUTHORITY_KEYID) = {
- ASN1_IMP_OPT(AUTHORITY_KEYID, keyid, ASN1_OCTET_STRING, 0),
- ASN1_IMP_SEQUENCE_OF_OPT(AUTHORITY_KEYID, issuer, GENERAL_NAME, 1),
- ASN1_IMP_OPT(AUTHORITY_KEYID, serial, ASN1_INTEGER, 2)
-} ASN1_SEQUENCE_END(AUTHORITY_KEYID)
+static const ASN1_TEMPLATE AUTHORITY_KEYID_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(AUTHORITY_KEYID, keyid),
+ .field_name = "keyid",
+ .item = &ASN1_OCTET_STRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(AUTHORITY_KEYID, issuer),
+ .field_name = "issuer",
+ .item = &GENERAL_NAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 2,
+ .offset = offsetof(AUTHORITY_KEYID, serial),
+ .field_name = "serial",
+ .item = &ASN1_INTEGER_it,
+ },
+};
+
+const ASN1_ITEM AUTHORITY_KEYID_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = AUTHORITY_KEYID_seq_tt,
+ .tcount = sizeof(AUTHORITY_KEYID_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(AUTHORITY_KEYID),
+ .sname = "AUTHORITY_KEYID",
+};
AUTHORITY_KEYID *
diff --git a/lib/libcrypto/x509v3/v3_bcons.c b/lib/libcrypto/x509v3/v3_bcons.c
index fb3f6c7619c..eea63b760a0 100644
--- a/lib/libcrypto/x509v3/v3_bcons.c
+++ b/lib/libcrypto/x509v3/v3_bcons.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_bcons.c,v 1.11 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_bcons.c,v 1.12 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -81,10 +81,32 @@ const X509V3_EXT_METHOD v3_bcons = {
NULL
};
-ASN1_SEQUENCE(BASIC_CONSTRAINTS) = {
- ASN1_OPT(BASIC_CONSTRAINTS, ca, ASN1_FBOOLEAN),
- ASN1_OPT(BASIC_CONSTRAINTS, pathlen, ASN1_INTEGER)
-} ASN1_SEQUENCE_END(BASIC_CONSTRAINTS)
+static const ASN1_TEMPLATE BASIC_CONSTRAINTS_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(BASIC_CONSTRAINTS, ca),
+ .field_name = "ca",
+ .item = &ASN1_FBOOLEAN_it,
+ },
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(BASIC_CONSTRAINTS, pathlen),
+ .field_name = "pathlen",
+ .item = &ASN1_INTEGER_it,
+ },
+};
+
+const ASN1_ITEM BASIC_CONSTRAINTS_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = BASIC_CONSTRAINTS_seq_tt,
+ .tcount = sizeof(BASIC_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(BASIC_CONSTRAINTS),
+ .sname = "BASIC_CONSTRAINTS",
+};
BASIC_CONSTRAINTS *
diff --git a/lib/libcrypto/x509v3/v3_cpols.c b/lib/libcrypto/x509v3/v3_cpols.c
index 61e6b3ba472..4244f038518 100644
--- a/lib/libcrypto/x509v3/v3_cpols.c
+++ b/lib/libcrypto/x509v3/v3_cpols.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_cpols.c,v 1.20 2015/07/15 17:00:35 miod Exp $ */
+/* $OpenBSD: v3_cpols.c,v 1.21 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -92,10 +92,23 @@ const X509V3_EXT_METHOD v3_cpols = {
NULL
};
-ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) =
- ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES,
- POLICYINFO)
-ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES)
+static const ASN1_TEMPLATE CERTIFICATEPOLICIES_item_tt = {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = 0,
+ .field_name = "CERTIFICATEPOLICIES",
+ .item = &POLICYINFO_it,
+};
+
+const ASN1_ITEM CERTIFICATEPOLICIES_it = {
+ .itype = ASN1_ITYPE_PRIMITIVE,
+ .utype = -1,
+ .templates = &CERTIFICATEPOLICIES_item_tt,
+ .tcount = 0,
+ .funcs = NULL,
+ .size = 0,
+ .sname = "CERTIFICATEPOLICIES",
+};
CERTIFICATEPOLICIES *
@@ -123,10 +136,32 @@ CERTIFICATEPOLICIES_free(CERTIFICATEPOLICIES *a)
ASN1_item_free((ASN1_VALUE *)a, &CERTIFICATEPOLICIES_it);
}
-ASN1_SEQUENCE(POLICYINFO) = {
- ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
- ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO)
-} ASN1_SEQUENCE_END(POLICYINFO)
+static const ASN1_TEMPLATE POLICYINFO_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICYINFO, policyid),
+ .field_name = "policyid",
+ .item = &ASN1_OBJECT_it,
+ },
+ {
+ .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(POLICYINFO, qualifiers),
+ .field_name = "qualifiers",
+ .item = &POLICYQUALINFO_it,
+ },
+};
+
+const ASN1_ITEM POLICYINFO_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = POLICYINFO_seq_tt,
+ .tcount = sizeof(POLICYINFO_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(POLICYINFO),
+ .sname = "POLICYINFO",
+};
POLICYINFO *
@@ -154,18 +189,75 @@ POLICYINFO_free(POLICYINFO *a)
ASN1_item_free((ASN1_VALUE *)a, &POLICYINFO_it);
}
-ASN1_ADB_TEMPLATE(policydefault) =
- ASN1_SIMPLE(POLICYQUALINFO, d.other, ASN1_ANY);
+static const ASN1_TEMPLATE policydefault_tt = {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICYQUALINFO, d.other),
+ .field_name = "d.other",
+ .item = &ASN1_ANY_it,
+};
-ASN1_ADB(POLICYQUALINFO) = {
- ADB_ENTRY(NID_id_qt_cps, ASN1_SIMPLE(POLICYQUALINFO, d.cpsuri, ASN1_IA5STRING)),
- ADB_ENTRY(NID_id_qt_unotice, ASN1_SIMPLE(POLICYQUALINFO, d.usernotice, USERNOTICE))
-} ASN1_ADB_END(POLICYQUALINFO, 0, pqualid, 0, &policydefault_tt, NULL);
+static const ASN1_ADB_TABLE POLICYQUALINFO_adbtbl[] = {
+ {
+ .value = NID_id_qt_cps,
+ .tt = {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICYQUALINFO, d.cpsuri),
+ .field_name = "d.cpsuri",
+ .item = &ASN1_IA5STRING_it,
+ },
+
+ },
+ {
+ .value = NID_id_qt_unotice,
+ .tt = {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICYQUALINFO, d.usernotice),
+ .field_name = "d.usernotice",
+ .item = &USERNOTICE_it,
+ },
+
+ },
+};
-ASN1_SEQUENCE(POLICYQUALINFO) = {
- ASN1_SIMPLE(POLICYQUALINFO, pqualid, ASN1_OBJECT),
- ASN1_ADB_OBJECT(POLICYQUALINFO)
-} ASN1_SEQUENCE_END(POLICYQUALINFO)
+static const ASN1_ADB POLICYQUALINFO_adb = {
+ .flags = 0,
+ .offset = offsetof(POLICYQUALINFO, pqualid),
+ .app_items = 0,
+ .tbl = POLICYQUALINFO_adbtbl,
+ .tblcount = sizeof(POLICYQUALINFO_adbtbl) / sizeof(ASN1_ADB_TABLE),
+ .default_tt = &policydefault_tt,
+ .null_tt = NULL,
+};
+
+static const ASN1_TEMPLATE POLICYQUALINFO_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICYQUALINFO, pqualid),
+ .field_name = "pqualid",
+ .item = &ASN1_OBJECT_it,
+ },
+ {
+ .flags = ASN1_TFLG_ADB_OID,
+ .tag = -1,
+ .offset = 0,
+ .field_name = "POLICYQUALINFO",
+ .item = (const ASN1_ITEM *)&POLICYQUALINFO_adb,
+ },
+};
+
+const ASN1_ITEM POLICYQUALINFO_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = POLICYQUALINFO_seq_tt,
+ .tcount = sizeof(POLICYQUALINFO_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(POLICYQUALINFO),
+ .sname = "POLICYQUALINFO",
+};
POLICYQUALINFO *
@@ -193,10 +285,32 @@ POLICYQUALINFO_free(POLICYQUALINFO *a)
ASN1_item_free((ASN1_VALUE *)a, &POLICYQUALINFO_it);
}
-ASN1_SEQUENCE(USERNOTICE) = {
- ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
- ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT)
-} ASN1_SEQUENCE_END(USERNOTICE)
+static const ASN1_TEMPLATE USERNOTICE_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(USERNOTICE, noticeref),
+ .field_name = "noticeref",
+ .item = &NOTICEREF_it,
+ },
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(USERNOTICE, exptext),
+ .field_name = "exptext",
+ .item = &DISPLAYTEXT_it,
+ },
+};
+
+const ASN1_ITEM USERNOTICE_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = USERNOTICE_seq_tt,
+ .tcount = sizeof(USERNOTICE_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(USERNOTICE),
+ .sname = "USERNOTICE",
+};
USERNOTICE *
@@ -224,10 +338,32 @@ USERNOTICE_free(USERNOTICE *a)
ASN1_item_free((ASN1_VALUE *)a, &USERNOTICE_it);
}
-ASN1_SEQUENCE(NOTICEREF) = {
- ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
- ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER)
-} ASN1_SEQUENCE_END(NOTICEREF)
+static const ASN1_TEMPLATE NOTICEREF_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(NOTICEREF, organization),
+ .field_name = "organization",
+ .item = &DISPLAYTEXT_it,
+ },
+ {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = offsetof(NOTICEREF, noticenos),
+ .field_name = "noticenos",
+ .item = &ASN1_INTEGER_it,
+ },
+};
+
+const ASN1_ITEM NOTICEREF_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = NOTICEREF_seq_tt,
+ .tcount = sizeof(NOTICEREF_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(NOTICEREF),
+ .sname = "NOTICEREF",
+};
NOTICEREF *
diff --git a/lib/libcrypto/x509v3/v3_crld.c b/lib/libcrypto/x509v3/v3_crld.c
index b2e43706581..9c4017968d7 100644
--- a/lib/libcrypto/x509v3/v3_crld.c
+++ b/lib/libcrypto/x509v3/v3_crld.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_crld.c,v 1.16 2015/02/14 15:19:04 miod Exp $ */
+/* $OpenBSD: v3_crld.c,v 1.17 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -374,10 +374,34 @@ dpn_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
}
-ASN1_CHOICE_cb(DIST_POINT_NAME, dpn_cb) = {
- ASN1_IMP_SEQUENCE_OF(DIST_POINT_NAME, name.fullname, GENERAL_NAME, 0),
+static const ASN1_AUX DIST_POINT_NAME_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = dpn_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE DIST_POINT_NAME_ch_tt[] = {
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = offsetof(DIST_POINT_NAME, name.fullname),
+ .field_name = "name.fullname",
+ .item = &GENERAL_NAME_it,
+ },
ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1)
-} ASN1_CHOICE_END_cb(DIST_POINT_NAME, DIST_POINT_NAME, type)
+};
+
+const ASN1_ITEM DIST_POINT_NAME_it = {
+ .itype = ASN1_ITYPE_CHOICE,
+ .utype = offsetof(DIST_POINT_NAME, type),
+ .templates = DIST_POINT_NAME_ch_tt,
+ .tcount = sizeof(DIST_POINT_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &DIST_POINT_NAME_aux,
+ .size = sizeof(DIST_POINT_NAME),
+ .sname = "DIST_POINT_NAME",
+};
@@ -406,11 +430,39 @@ DIST_POINT_NAME_free(DIST_POINT_NAME *a)
ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_NAME_it);
}
-ASN1_SEQUENCE(DIST_POINT) = {
- ASN1_EXP_OPT(DIST_POINT, distpoint, DIST_POINT_NAME, 0),
- ASN1_IMP_OPT(DIST_POINT, reasons, ASN1_BIT_STRING, 1),
- ASN1_IMP_SEQUENCE_OF_OPT(DIST_POINT, CRLissuer, GENERAL_NAME, 2)
-} ASN1_SEQUENCE_END(DIST_POINT)
+static const ASN1_TEMPLATE DIST_POINT_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(DIST_POINT, distpoint),
+ .field_name = "distpoint",
+ .item = &DIST_POINT_NAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(DIST_POINT, reasons),
+ .field_name = "reasons",
+ .item = &ASN1_BIT_STRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
+ .tag = 2,
+ .offset = offsetof(DIST_POINT, CRLissuer),
+ .field_name = "CRLissuer",
+ .item = &GENERAL_NAME_it,
+ },
+};
+
+const ASN1_ITEM DIST_POINT_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = DIST_POINT_seq_tt,
+ .tcount = sizeof(DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(DIST_POINT),
+ .sname = "DIST_POINT",
+};
DIST_POINT *
@@ -438,10 +490,23 @@ DIST_POINT_free(DIST_POINT *a)
ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_it);
}
-ASN1_ITEM_TEMPLATE(CRL_DIST_POINTS) =
- ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CRLDistributionPoints,
- DIST_POINT)
-ASN1_ITEM_TEMPLATE_END(CRL_DIST_POINTS)
+static const ASN1_TEMPLATE CRL_DIST_POINTS_item_tt = {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = 0,
+ .field_name = "CRLDistributionPoints",
+ .item = &DIST_POINT_it,
+};
+
+const ASN1_ITEM CRL_DIST_POINTS_it = {
+ .itype = ASN1_ITYPE_PRIMITIVE,
+ .utype = -1,
+ .templates = &CRL_DIST_POINTS_item_tt,
+ .tcount = 0,
+ .funcs = NULL,
+ .size = 0,
+ .sname = "CRL_DIST_POINTS",
+};
CRL_DIST_POINTS *
@@ -469,14 +534,60 @@ CRL_DIST_POINTS_free(CRL_DIST_POINTS *a)
ASN1_item_free((ASN1_VALUE *)a, &CRL_DIST_POINTS_it);
}
-ASN1_SEQUENCE(ISSUING_DIST_POINT) = {
- ASN1_EXP_OPT(ISSUING_DIST_POINT, distpoint, DIST_POINT_NAME, 0),
- ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyuser, ASN1_FBOOLEAN, 1),
- ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyCA, ASN1_FBOOLEAN, 2),
- ASN1_IMP_OPT(ISSUING_DIST_POINT, onlysomereasons, ASN1_BIT_STRING, 3),
- ASN1_IMP_OPT(ISSUING_DIST_POINT, indirectCRL, ASN1_FBOOLEAN, 4),
- ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyattr, ASN1_FBOOLEAN, 5)
-} ASN1_SEQUENCE_END(ISSUING_DIST_POINT)
+static const ASN1_TEMPLATE ISSUING_DIST_POINT_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(ISSUING_DIST_POINT, distpoint),
+ .field_name = "distpoint",
+ .item = &DIST_POINT_NAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(ISSUING_DIST_POINT, onlyuser),
+ .field_name = "onlyuser",
+ .item = &ASN1_FBOOLEAN_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 2,
+ .offset = offsetof(ISSUING_DIST_POINT, onlyCA),
+ .field_name = "onlyCA",
+ .item = &ASN1_FBOOLEAN_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 3,
+ .offset = offsetof(ISSUING_DIST_POINT, onlysomereasons),
+ .field_name = "onlysomereasons",
+ .item = &ASN1_BIT_STRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 4,
+ .offset = offsetof(ISSUING_DIST_POINT, indirectCRL),
+ .field_name = "indirectCRL",
+ .item = &ASN1_FBOOLEAN_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 5,
+ .offset = offsetof(ISSUING_DIST_POINT, onlyattr),
+ .field_name = "onlyattr",
+ .item = &ASN1_FBOOLEAN_it,
+ },
+};
+
+const ASN1_ITEM ISSUING_DIST_POINT_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = ISSUING_DIST_POINT_seq_tt,
+ .tcount = sizeof(ISSUING_DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(ISSUING_DIST_POINT),
+ .sname = "ISSUING_DIST_POINT",
+};
ISSUING_DIST_POINT *
diff --git a/lib/libcrypto/x509v3/v3_extku.c b/lib/libcrypto/x509v3/v3_extku.c
index c37b65f7a5c..2ee7594fed4 100644
--- a/lib/libcrypto/x509v3/v3_extku.c
+++ b/lib/libcrypto/x509v3/v3_extku.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_extku.c,v 1.11 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_extku.c,v 1.12 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -91,10 +91,23 @@ const X509V3_EXT_METHOD v3_ocsp_accresp = {
NULL
};
-ASN1_ITEM_TEMPLATE(EXTENDED_KEY_USAGE) =
- ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, EXTENDED_KEY_USAGE,
- ASN1_OBJECT)
-ASN1_ITEM_TEMPLATE_END(EXTENDED_KEY_USAGE)
+static const ASN1_TEMPLATE EXTENDED_KEY_USAGE_item_tt = {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = 0,
+ .field_name = "EXTENDED_KEY_USAGE",
+ .item = &ASN1_OBJECT_it,
+};
+
+const ASN1_ITEM EXTENDED_KEY_USAGE_it = {
+ .itype = ASN1_ITYPE_PRIMITIVE,
+ .utype = -1,
+ .templates = &EXTENDED_KEY_USAGE_item_tt,
+ .tcount = 0,
+ .funcs = NULL,
+ .size = 0,
+ .sname = "EXTENDED_KEY_USAGE",
+};
EXTENDED_KEY_USAGE *
diff --git a/lib/libcrypto/x509v3/v3_genn.c b/lib/libcrypto/x509v3/v3_genn.c
index 25d7f447d25..9943fd33d28 100644
--- a/lib/libcrypto/x509v3/v3_genn.c
+++ b/lib/libcrypto/x509v3/v3_genn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_genn.c,v 1.10 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_genn.c,v 1.11 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -63,11 +63,33 @@
#include <openssl/conf.h>
#include <openssl/x509v3.h>
-ASN1_SEQUENCE(OTHERNAME) = {
- ASN1_SIMPLE(OTHERNAME, type_id, ASN1_OBJECT),
+static const ASN1_TEMPLATE OTHERNAME_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(OTHERNAME, type_id),
+ .field_name = "type_id",
+ .item = &ASN1_OBJECT_it,
+ },
/* Maybe have a true ANY DEFINED BY later */
- ASN1_EXP(OTHERNAME, value, ASN1_ANY, 0)
-} ASN1_SEQUENCE_END(OTHERNAME)
+ {
+ .flags = ASN1_TFLG_EXPLICIT,
+ .tag = 0,
+ .offset = offsetof(OTHERNAME, value),
+ .field_name = "value",
+ .item = &ASN1_ANY_it,
+ },
+};
+
+const ASN1_ITEM OTHERNAME_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = OTHERNAME_seq_tt,
+ .tcount = sizeof(OTHERNAME_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(OTHERNAME),
+ .sname = "OTHERNAME",
+};
OTHERNAME *
@@ -95,10 +117,32 @@ OTHERNAME_free(OTHERNAME *a)
ASN1_item_free((ASN1_VALUE *)a, &OTHERNAME_it);
}
-ASN1_SEQUENCE(EDIPARTYNAME) = {
- ASN1_IMP_OPT(EDIPARTYNAME, nameAssigner, DIRECTORYSTRING, 0),
- ASN1_IMP_OPT(EDIPARTYNAME, partyName, DIRECTORYSTRING, 1)
-} ASN1_SEQUENCE_END(EDIPARTYNAME)
+static const ASN1_TEMPLATE EDIPARTYNAME_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(EDIPARTYNAME, nameAssigner),
+ .field_name = "nameAssigner",
+ .item = &DIRECTORYSTRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(EDIPARTYNAME, partyName),
+ .field_name = "partyName",
+ .item = &DIRECTORYSTRING_it,
+ },
+};
+
+const ASN1_ITEM EDIPARTYNAME_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = EDIPARTYNAME_seq_tt,
+ .tcount = sizeof(EDIPARTYNAME_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(EDIPARTYNAME),
+ .sname = "EDIPARTYNAME",
+};
EDIPARTYNAME *
@@ -126,19 +170,83 @@ EDIPARTYNAME_free(EDIPARTYNAME *a)
ASN1_item_free((ASN1_VALUE *)a, &EDIPARTYNAME_it);
}
-ASN1_CHOICE(GENERAL_NAME) = {
- ASN1_IMP(GENERAL_NAME, d.otherName, OTHERNAME, GEN_OTHERNAME),
- ASN1_IMP(GENERAL_NAME, d.rfc822Name, ASN1_IA5STRING, GEN_EMAIL),
- ASN1_IMP(GENERAL_NAME, d.dNSName, ASN1_IA5STRING, GEN_DNS),
+static const ASN1_TEMPLATE GENERAL_NAME_ch_tt[] = {
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_OTHERNAME,
+ .offset = offsetof(GENERAL_NAME, d.otherName),
+ .field_name = "d.otherName",
+ .item = &OTHERNAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_EMAIL,
+ .offset = offsetof(GENERAL_NAME, d.rfc822Name),
+ .field_name = "d.rfc822Name",
+ .item = &ASN1_IA5STRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_DNS,
+ .offset = offsetof(GENERAL_NAME, d.dNSName),
+ .field_name = "d.dNSName",
+ .item = &ASN1_IA5STRING_it,
+ },
/* Don't decode this */
- ASN1_IMP(GENERAL_NAME, d.x400Address, ASN1_SEQUENCE, GEN_X400),
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_X400,
+ .offset = offsetof(GENERAL_NAME, d.x400Address),
+ .field_name = "d.x400Address",
+ .item = &ASN1_SEQUENCE_it,
+ },
/* X509_NAME is a CHOICE type so use EXPLICIT */
- ASN1_EXP(GENERAL_NAME, d.directoryName, X509_NAME, GEN_DIRNAME),
- ASN1_IMP(GENERAL_NAME, d.ediPartyName, EDIPARTYNAME, GEN_EDIPARTY),
- ASN1_IMP(GENERAL_NAME, d.uniformResourceIdentifier, ASN1_IA5STRING, GEN_URI),
- ASN1_IMP(GENERAL_NAME, d.iPAddress, ASN1_OCTET_STRING, GEN_IPADD),
- ASN1_IMP(GENERAL_NAME, d.registeredID, ASN1_OBJECT, GEN_RID)
-} ASN1_CHOICE_END(GENERAL_NAME)
+ {
+ .flags = ASN1_TFLG_EXPLICIT,
+ .tag = GEN_DIRNAME,
+ .offset = offsetof(GENERAL_NAME, d.directoryName),
+ .field_name = "d.directoryName",
+ .item = &X509_NAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_EDIPARTY,
+ .offset = offsetof(GENERAL_NAME, d.ediPartyName),
+ .field_name = "d.ediPartyName",
+ .item = &EDIPARTYNAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_URI,
+ .offset = offsetof(GENERAL_NAME, d.uniformResourceIdentifier),
+ .field_name = "d.uniformResourceIdentifier",
+ .item = &ASN1_IA5STRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_IPADD,
+ .offset = offsetof(GENERAL_NAME, d.iPAddress),
+ .field_name = "d.iPAddress",
+ .item = &ASN1_OCTET_STRING_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT,
+ .tag = GEN_RID,
+ .offset = offsetof(GENERAL_NAME, d.registeredID),
+ .field_name = "d.registeredID",
+ .item = &ASN1_OBJECT_it,
+ },
+};
+
+const ASN1_ITEM GENERAL_NAME_it = {
+ .itype = ASN1_ITYPE_CHOICE,
+ .utype = offsetof(GENERAL_NAME, type),
+ .templates = GENERAL_NAME_ch_tt,
+ .tcount = sizeof(GENERAL_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(GENERAL_NAME),
+ .sname = "GENERAL_NAME",
+};
GENERAL_NAME *
@@ -166,9 +274,23 @@ GENERAL_NAME_free(GENERAL_NAME *a)
ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAME_it);
}
-ASN1_ITEM_TEMPLATE(GENERAL_NAMES) =
- ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, GENERAL_NAME)
-ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES)
+static const ASN1_TEMPLATE GENERAL_NAMES_item_tt = {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = 0,
+ .field_name = "GeneralNames",
+ .item = &GENERAL_NAME_it,
+};
+
+const ASN1_ITEM GENERAL_NAMES_it = {
+ .itype = ASN1_ITYPE_PRIMITIVE,
+ .utype = -1,
+ .templates = &GENERAL_NAMES_item_tt,
+ .tcount = 0,
+ .funcs = NULL,
+ .size = 0,
+ .sname = "GENERAL_NAMES",
+};
GENERAL_NAMES *
diff --git a/lib/libcrypto/x509v3/v3_info.c b/lib/libcrypto/x509v3/v3_info.c
index d9fa1333082..795a7bb6ff8 100644
--- a/lib/libcrypto/x509v3/v3_info.c
+++ b/lib/libcrypto/x509v3/v3_info.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_info.c,v 1.21 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_info.c,v 1.22 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -93,10 +93,32 @@ const X509V3_EXT_METHOD v3_sinfo = {
NULL
};
-ASN1_SEQUENCE(ACCESS_DESCRIPTION) = {
- ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT),
- ASN1_SIMPLE(ACCESS_DESCRIPTION, location, GENERAL_NAME)
-} ASN1_SEQUENCE_END(ACCESS_DESCRIPTION)
+static const ASN1_TEMPLATE ACCESS_DESCRIPTION_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(ACCESS_DESCRIPTION, method),
+ .field_name = "method",
+ .item = &ASN1_OBJECT_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(ACCESS_DESCRIPTION, location),
+ .field_name = "location",
+ .item = &GENERAL_NAME_it,
+ },
+};
+
+const ASN1_ITEM ACCESS_DESCRIPTION_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = ACCESS_DESCRIPTION_seq_tt,
+ .tcount = sizeof(ACCESS_DESCRIPTION_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(ACCESS_DESCRIPTION),
+ .sname = "ACCESS_DESCRIPTION",
+};
ACCESS_DESCRIPTION *
@@ -124,10 +146,23 @@ ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *a)
ASN1_item_free((ASN1_VALUE *)a, &ACCESS_DESCRIPTION_it);
}
-ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) =
- ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames,
- ACCESS_DESCRIPTION)
-ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS)
+static const ASN1_TEMPLATE AUTHORITY_INFO_ACCESS_item_tt = {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = 0,
+ .field_name = "GeneralNames",
+ .item = &ACCESS_DESCRIPTION_it,
+};
+
+const ASN1_ITEM AUTHORITY_INFO_ACCESS_it = {
+ .itype = ASN1_ITYPE_PRIMITIVE,
+ .utype = -1,
+ .templates = &AUTHORITY_INFO_ACCESS_item_tt,
+ .tcount = 0,
+ .funcs = NULL,
+ .size = 0,
+ .sname = "AUTHORITY_INFO_ACCESS",
+};
AUTHORITY_INFO_ACCESS *
diff --git a/lib/libcrypto/x509v3/v3_ncons.c b/lib/libcrypto/x509v3/v3_ncons.c
index 7cb272a58f1..e154b6ba187 100644
--- a/lib/libcrypto/x509v3/v3_ncons.c
+++ b/lib/libcrypto/x509v3/v3_ncons.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_ncons.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */
+/* $OpenBSD: v3_ncons.c,v 1.7 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project.
*/
@@ -89,18 +89,56 @@ const X509V3_EXT_METHOD v3_name_constraints = {
NULL
};
-ASN1_SEQUENCE(GENERAL_SUBTREE) = {
- ASN1_SIMPLE(GENERAL_SUBTREE, base, GENERAL_NAME),
- ASN1_IMP_OPT(GENERAL_SUBTREE, minimum, ASN1_INTEGER, 0),
- ASN1_IMP_OPT(GENERAL_SUBTREE, maximum, ASN1_INTEGER, 1)
-} ASN1_SEQUENCE_END(GENERAL_SUBTREE)
+static const ASN1_TEMPLATE GENERAL_SUBTREE_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(GENERAL_SUBTREE, base),
+ .field_name = "base",
+ .item = &GENERAL_NAME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(GENERAL_SUBTREE, minimum),
+ .field_name = "minimum",
+ .item = &ASN1_INTEGER_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(GENERAL_SUBTREE, maximum),
+ .field_name = "maximum",
+ .item = &ASN1_INTEGER_it,
+ },
+};
+
+const ASN1_ITEM GENERAL_SUBTREE_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = GENERAL_SUBTREE_seq_tt,
+ .tcount = sizeof(GENERAL_SUBTREE_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(GENERAL_SUBTREE),
+ .sname = "GENERAL_SUBTREE",
+};
-ASN1_SEQUENCE(NAME_CONSTRAINTS) = {
+static const ASN1_TEMPLATE NAME_CONSTRAINTS_seq_tt[] = {
ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees,
GENERAL_SUBTREE, 0),
ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees,
GENERAL_SUBTREE, 1),
-} ASN1_SEQUENCE_END(NAME_CONSTRAINTS)
+};
+
+const ASN1_ITEM NAME_CONSTRAINTS_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = NAME_CONSTRAINTS_seq_tt,
+ .tcount = sizeof(NAME_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(NAME_CONSTRAINTS),
+ .sname = "NAME_CONSTRAINTS",
+};
diff --git a/lib/libcrypto/x509v3/v3_pcia.c b/lib/libcrypto/x509v3/v3_pcia.c
index 07e294e6331..f9ec02c00a5 100644
--- a/lib/libcrypto/x509v3/v3_pcia.c
+++ b/lib/libcrypto/x509v3/v3_pcia.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_pcia.c,v 1.5 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_pcia.c,v 1.6 2015/07/25 16:00:14 jsing Exp $ */
/* Contributed to the OpenSSL Project 2004
* by Richard Levitte (richard@levitte.org)
*/
@@ -38,10 +38,32 @@
#include <openssl/asn1t.h>
#include <openssl/x509v3.h>
-ASN1_SEQUENCE(PROXY_POLICY) = {
- ASN1_SIMPLE(PROXY_POLICY, policyLanguage, ASN1_OBJECT),
- ASN1_OPT(PROXY_POLICY, policy, ASN1_OCTET_STRING)
-} ASN1_SEQUENCE_END(PROXY_POLICY)
+static const ASN1_TEMPLATE PROXY_POLICY_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(PROXY_POLICY, policyLanguage),
+ .field_name = "policyLanguage",
+ .item = &ASN1_OBJECT_it,
+ },
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(PROXY_POLICY, policy),
+ .field_name = "policy",
+ .item = &ASN1_OCTET_STRING_it,
+ },
+};
+
+const ASN1_ITEM PROXY_POLICY_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = PROXY_POLICY_seq_tt,
+ .tcount = sizeof(PROXY_POLICY_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(PROXY_POLICY),
+ .sname = "PROXY_POLICY",
+};
PROXY_POLICY *
@@ -69,11 +91,32 @@ PROXY_POLICY_free(PROXY_POLICY *a)
ASN1_item_free((ASN1_VALUE *)a, &PROXY_POLICY_it);
}
-ASN1_SEQUENCE(PROXY_CERT_INFO_EXTENSION) = {
- ASN1_OPT(PROXY_CERT_INFO_EXTENSION, pcPathLengthConstraint,
- ASN1_INTEGER),
- ASN1_SIMPLE(PROXY_CERT_INFO_EXTENSION, proxyPolicy, PROXY_POLICY)
-} ASN1_SEQUENCE_END(PROXY_CERT_INFO_EXTENSION)
+static const ASN1_TEMPLATE PROXY_CERT_INFO_EXTENSION_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(PROXY_CERT_INFO_EXTENSION, pcPathLengthConstraint),
+ .field_name = "pcPathLengthConstraint",
+ .item = &ASN1_INTEGER_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(PROXY_CERT_INFO_EXTENSION, proxyPolicy),
+ .field_name = "proxyPolicy",
+ .item = &PROXY_POLICY_it,
+ },
+};
+
+const ASN1_ITEM PROXY_CERT_INFO_EXTENSION_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = PROXY_CERT_INFO_EXTENSION_seq_tt,
+ .tcount = sizeof(PROXY_CERT_INFO_EXTENSION_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(PROXY_CERT_INFO_EXTENSION),
+ .sname = "PROXY_CERT_INFO_EXTENSION",
+};
PROXY_CERT_INFO_EXTENSION *
diff --git a/lib/libcrypto/x509v3/v3_pcons.c b/lib/libcrypto/x509v3/v3_pcons.c
index 075efd88510..7bece062711 100644
--- a/lib/libcrypto/x509v3/v3_pcons.c
+++ b/lib/libcrypto/x509v3/v3_pcons.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_pcons.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */
+/* $OpenBSD: v3_pcons.c,v 1.7 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project.
*/
@@ -82,11 +82,27 @@ const X509V3_EXT_METHOD v3_policy_constraints = {
NULL
};
-ASN1_SEQUENCE(POLICY_CONSTRAINTS) = {
+static const ASN1_TEMPLATE POLICY_CONSTRAINTS_seq_tt[] = {
ASN1_IMP_OPT(POLICY_CONSTRAINTS, requireExplicitPolicy,
ASN1_INTEGER, 0),
- ASN1_IMP_OPT(POLICY_CONSTRAINTS, inhibitPolicyMapping, ASN1_INTEGER, 1)
-} ASN1_SEQUENCE_END(POLICY_CONSTRAINTS)
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(POLICY_CONSTRAINTS, inhibitPolicyMapping),
+ .field_name = "inhibitPolicyMapping",
+ .item = &ASN1_INTEGER_it,
+ },
+};
+
+const ASN1_ITEM POLICY_CONSTRAINTS_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = POLICY_CONSTRAINTS_seq_tt,
+ .tcount = sizeof(POLICY_CONSTRAINTS_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(POLICY_CONSTRAINTS),
+ .sname = "POLICY_CONSTRAINTS",
+};
POLICY_CONSTRAINTS *
diff --git a/lib/libcrypto/x509v3/v3_pku.c b/lib/libcrypto/x509v3/v3_pku.c
index 4bce07f09ca..360e3daa58f 100644
--- a/lib/libcrypto/x509v3/v3_pku.c
+++ b/lib/libcrypto/x509v3/v3_pku.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_pku.c,v 1.10 2015/02/09 16:03:11 jsing Exp $ */
+/* $OpenBSD: v3_pku.c,v 1.11 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -75,10 +75,32 @@ const X509V3_EXT_METHOD v3_pkey_usage_period = {
NULL
};
-ASN1_SEQUENCE(PKEY_USAGE_PERIOD) = {
- ASN1_IMP_OPT(PKEY_USAGE_PERIOD, notBefore, ASN1_GENERALIZEDTIME, 0),
- ASN1_IMP_OPT(PKEY_USAGE_PERIOD, notAfter, ASN1_GENERALIZEDTIME, 1)
-} ASN1_SEQUENCE_END(PKEY_USAGE_PERIOD)
+static const ASN1_TEMPLATE PKEY_USAGE_PERIOD_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(PKEY_USAGE_PERIOD, notBefore),
+ .field_name = "notBefore",
+ .item = &ASN1_GENERALIZEDTIME_it,
+ },
+ {
+ .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(PKEY_USAGE_PERIOD, notAfter),
+ .field_name = "notAfter",
+ .item = &ASN1_GENERALIZEDTIME_it,
+ },
+};
+
+const ASN1_ITEM PKEY_USAGE_PERIOD_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = PKEY_USAGE_PERIOD_seq_tt,
+ .tcount = sizeof(PKEY_USAGE_PERIOD_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(PKEY_USAGE_PERIOD),
+ .sname = "PKEY_USAGE_PERIOD",
+};
PKEY_USAGE_PERIOD *
diff --git a/lib/libcrypto/x509v3/v3_pmaps.c b/lib/libcrypto/x509v3/v3_pmaps.c
index e8099d7f12c..32ab04eda90 100644
--- a/lib/libcrypto/x509v3/v3_pmaps.c
+++ b/lib/libcrypto/x509v3/v3_pmaps.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_pmaps.c,v 1.7 2015/02/13 01:16:26 beck Exp $ */
+/* $OpenBSD: v3_pmaps.c,v 1.8 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project.
*/
@@ -80,15 +80,50 @@ const X509V3_EXT_METHOD v3_policy_mappings = {
NULL
};
-ASN1_SEQUENCE(POLICY_MAPPING) = {
- ASN1_SIMPLE(POLICY_MAPPING, issuerDomainPolicy, ASN1_OBJECT),
- ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT)
-} ASN1_SEQUENCE_END(POLICY_MAPPING)
+static const ASN1_TEMPLATE POLICY_MAPPING_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICY_MAPPING, issuerDomainPolicy),
+ .field_name = "issuerDomainPolicy",
+ .item = &ASN1_OBJECT_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(POLICY_MAPPING, subjectDomainPolicy),
+ .field_name = "subjectDomainPolicy",
+ .item = &ASN1_OBJECT_it,
+ },
+};
+
+const ASN1_ITEM POLICY_MAPPING_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = POLICY_MAPPING_seq_tt,
+ .tcount = sizeof(POLICY_MAPPING_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(POLICY_MAPPING),
+ .sname = "POLICY_MAPPING",
+};
-ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) =
-ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS,
- POLICY_MAPPING)
-ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS)
+static const ASN1_TEMPLATE POLICY_MAPPINGS_item_tt = {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = 0,
+ .field_name = "POLICY_MAPPINGS",
+ .item = &POLICY_MAPPING_it,
+};
+
+const ASN1_ITEM POLICY_MAPPINGS_it = {
+ .itype = ASN1_ITYPE_PRIMITIVE,
+ .utype = -1,
+ .templates = &POLICY_MAPPINGS_item_tt,
+ .tcount = 0,
+ .funcs = NULL,
+ .size = 0,
+ .sname = "POLICY_MAPPINGS",
+};
POLICY_MAPPING *
diff --git a/lib/libcrypto/x509v3/v3_sxnet.c b/lib/libcrypto/x509v3/v3_sxnet.c
index 7029aad9164..d87dd343391 100644
--- a/lib/libcrypto/x509v3/v3_sxnet.c
+++ b/lib/libcrypto/x509v3/v3_sxnet.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: v3_sxnet.c,v 1.13 2015/02/10 08:33:10 jsing Exp $ */
+/* $OpenBSD: v3_sxnet.c,v 1.14 2015/07/25 16:00:14 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -90,10 +90,32 @@ const X509V3_EXT_METHOD v3_sxnet = {
NULL
};
-ASN1_SEQUENCE(SXNETID) = {
- ASN1_SIMPLE(SXNETID, zone, ASN1_INTEGER),
- ASN1_SIMPLE(SXNETID, user, ASN1_OCTET_STRING)
-} ASN1_SEQUENCE_END(SXNETID)
+static const ASN1_TEMPLATE SXNETID_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(SXNETID, zone),
+ .field_name = "zone",
+ .item = &ASN1_INTEGER_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(SXNETID, user),
+ .field_name = "user",
+ .item = &ASN1_OCTET_STRING_it,
+ },
+};
+
+const ASN1_ITEM SXNETID_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = SXNETID_seq_tt,
+ .tcount = sizeof(SXNETID_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(SXNETID),
+ .sname = "SXNETID",
+};
SXNETID *
@@ -121,10 +143,32 @@ SXNETID_free(SXNETID *a)
ASN1_item_free((ASN1_VALUE *)a, &SXNETID_it);
}
-ASN1_SEQUENCE(SXNET) = {
- ASN1_SIMPLE(SXNET, version, ASN1_INTEGER),
- ASN1_SEQUENCE_OF(SXNET, ids, SXNETID)
-} ASN1_SEQUENCE_END(SXNET)
+static const ASN1_TEMPLATE SXNET_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(SXNET, version),
+ .field_name = "version",
+ .item = &ASN1_INTEGER_it,
+ },
+ {
+ .flags = ASN1_TFLG_SEQUENCE_OF,
+ .tag = 0,
+ .offset = offsetof(SXNET, ids),
+ .field_name = "ids",
+ .item = &SXNETID_it,
+ },
+};
+
+const ASN1_ITEM SXNET_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = SXNET_seq_tt,
+ .tcount = sizeof(SXNET_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(SXNET),
+ .sname = "SXNET",
+};
SXNET *