Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1752657799, "reponame":"openssl", "desc":"OpenSSL", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/openssl", "f":3, "items": [ {"schema":"libjg2-1", "cid":"7a52a5b41c1d0345a8a4ef20396503e9", "commit": {"type":"commit", "time": 1497965130, "time_ofs": 18446744073709551376, "oid_tree": { "oid": "b90551dfe5cfdd0d3c1ac11f26e1cdd42b910ed5", "alias": []}, "oid":{ "oid": "0c9d6818c85ad185ac7a8904c70486724473420b", "alias": []}, "msg": "Declare a new x509v3 extension: x509ExtAdmission", "sig_commit": { "git_time": { "time": 1497965130, "offset": -240 }, "name": "Rich Salz", "email": "rsalz@openssl.org", "md5": "3ed6b9cf7bbe83902a044f6590346d26" }, "sig_author": { "git_time": { "time": 1497965093, "offset": -240 }, "name": "FdaSilvaYY", "email": "fdasilvayy@gmail.com", "md5": "aa048db1fe1abb73416dee77b8d18f7f" }}, "body": "Declare a new x509v3 extension: x509ExtAdmission\n\nReviewed-by: Stephen Henson \u003csteve@openssl.org\u003e\nReviewed-by: Rich Salz \u003crsalz@openssl.org\u003e\n(Merged from https://github.com/openssl/openssl/pull/2759)\n" , "diff": "diff --git a/crypto/objects/obj_dat.h b/crypto/objects/obj_dat.h\nindex 63422c7..eadc07b 100644\n--- a/crypto/objects/obj_dat.h\n+++ b/crypto/objects/obj_dat.h\n@@ -10,7 +10,7 @@\n */\n \n /* Serialized OID's */\n-static const unsigned char so[6929] \u003d {\n+static const unsigned char so[6934] \u003d {\n 0x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 0] OBJ_rsadsi */\n 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 6] OBJ_pkcs */\n 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x02, /* [ 13] OBJ_md2 */\n@@ -983,9 +983,10 @@ static const unsigned char so[6929] \u003d {\n 0x55,0x04,0x62, /* [ 6919] OBJ_countryCode3c */\n 0x55,0x04,0x63, /* [ 6922] OBJ_countryCode3n */\n 0x55,0x04,0x64, /* [ 6925] OBJ_dnsName */\n+ 0x2B,0x24,0x08,0x03,0x03, /* [ 6928] OBJ_x509ExtAdmission */\n };\n \n-#define NUM_NID 1093\n+#define NUM_NID 1094\n static const ASN1_OBJECT nid_objs[NUM_NID] \u003d {\n {\u0022UNDEF\u0022, \u0022undefined\u0022, NID_undef},\n {\u0022rsadsi\u0022, \u0022RSA Data Security, Inc.\u0022, NID_rsadsi, 6, \u0026so[0]},\n@@ -2080,9 +2081,10 @@ static const ASN1_OBJECT nid_objs[NUM_NID] \u003d {\n {\u0022c3\u0022, \u0022countryCode3c\u0022, NID_countryCode3c, 3, \u0026so[6919]},\n {\u0022n3\u0022, \u0022countryCode3n\u0022, NID_countryCode3n, 3, \u0026so[6922]},\n {\u0022dnsName\u0022, \u0022dnsName\u0022, NID_dnsName, 3, \u0026so[6925]},\n+ {\u0022x509ExtAdmission\u0022, \u0022Professional Information or basis for Admission\u0022, NID_x509ExtAdmission, 5, \u0026so[6928]},\n };\n \n-#define NUM_SN 1084\n+#define NUM_SN 1085\n static const unsigned int sn_objs[NUM_SN] \u003d {\n 364, /* \u0022AD_DVCS\u0022 */\n 419, /* \u0022AES-128-CBC\u0022 */\n@@ -3168,9 +3170,10 @@ static const unsigned int sn_objs[NUM_SN] \u003d {\n 503, /* \u0022x500UniqueIdentifier\u0022 */\n 158, /* \u0022x509Certificate\u0022 */\n 160, /* \u0022x509Crl\u0022 */\n+ 1093, /* \u0022x509ExtAdmission\u0022 */\n };\n \n-#define NUM_LN 1084\n+#define NUM_LN 1085\n static const unsigned int ln_objs[NUM_LN] \u003d {\n 363, /* \u0022AD Time Stamping\u0022 */\n 405, /* \u0022ANSI X9.62\u0022 */\n@@ -3288,6 +3291,7 @@ static const unsigned int ln_objs[NUM_LN] \u003d {\n 164, /* \u0022Policy Qualifier CPS\u0022 */\n 165, /* \u0022Policy Qualifier User Notice\u0022 */\n 385, /* \u0022Private\u0022 */\n+ 1093, /* \u0022Professional Information or basis for Admission\u0022 */\n 663, /* \u0022Proxy Certificate Information\u0022 */\n 1, /* \u0022RSA Data Security, Inc.\u0022 */\n 2, /* \u0022RSA Data Security, Inc. PKCS\u0022 */\n@@ -4258,7 +4262,7 @@ static const unsigned int ln_objs[NUM_LN] \u003d {\n 125, /* \u0022zlib compression\u0022 */\n };\n \n-#define NUM_OBJ 978\n+#define NUM_OBJ 979\n static const unsigned int obj_objs[NUM_OBJ] \u003d {\n 0, /* OBJ_undef 0 */\n 181, /* OBJ_iso 1 */\n@@ -4528,6 +4532,7 @@ static const unsigned int obj_objs[NUM_OBJ] \u003d {\n 70, /* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */\n 115, /* OBJ_sha1WithRSA 1 3 14 3 2 29 */\n 117, /* OBJ_ripemd160 1 3 36 3 2 1 */\n+ 1093, /* OBJ_x509ExtAdmission 1 3 36 8 3 3 */\n 143, /* OBJ_sxnet 1 3 101 1 4 1 */\n 721, /* OBJ_sect163k1 1 3 132 0 1 */\n 722, /* OBJ_sect163r1 1 3 132 0 2 */\ndiff --git a/crypto/objects/obj_mac.num b/crypto/objects/obj_mac.num\nindex b8e6a39..ab587a4 100644\n--- a/crypto/objects/obj_mac.num\n+++ b/crypto/objects/obj_mac.num\n@@ -1090,3 +1090,4 @@ organizationIdentifier\t\t1089\n countryCode3c\t\t1090\n countryCode3n\t\t1091\n dnsName\t\t1092\n+x509ExtAdmission\t\t1093\ndiff --git a/crypto/objects/objects.txt b/crypto/objects/objects.txt\nindex 1917066..073b342 100644\n--- a/crypto/objects/objects.txt\n+++ b/crypto/objects/objects.txt\n@@ -15,6 +15,9 @@ iso 3\t\t\t: identified-organization\n identified-organization 6 1 5 5 8 1 1\t: HMAC-MD5\t: hmac-md5\n identified-organization 6 1 5 5 8 1 2\t: HMAC-SHA1\t: hmac-sha1\n \n+# \u00221.3.36.8.3.3\u0022\n+identified-organization 36 8 3 3\t: x509ExtAdmission\t: Professional Information or basis for Admission\n+\n identified-organization 132\t: certicom-arc\n \n joint-iso-itu-t 23\t: international-organizations\t: International Organizations\ndiff --git a/crypto/x509v3/build.info b/crypto/x509v3/build.info\nindex 452a8b0..4ab6488 100644\n--- a/crypto/x509v3/build.info\n+++ b/crypto/x509v3/build.info\n@@ -5,4 +5,4 @@ SOURCE[../../libcrypto]\u003d\u005c\n v3_int.c v3_enum.c v3_sxnet.c v3_cpols.c v3_crld.c v3_purp.c v3_info.c \u005c\n v3_akeya.c v3_pmaps.c v3_pcons.c v3_ncons.c v3_pcia.c v3_pci.c \u005c\n pcy_cache.c pcy_node.c pcy_data.c pcy_map.c pcy_tree.c pcy_lib.c \u005c\n- v3_asid.c v3_addr.c v3_tlsf.c\n+ v3_asid.c v3_addr.c v3_tlsf.c v3_admis.c\ndiff --git a/crypto/x509v3/ext_dat.h b/crypto/x509v3/ext_dat.h\nindex c9ede96..762e264 100644\n--- a/crypto/x509v3/ext_dat.h\n+++ b/crypto/x509v3/ext_dat.h\n@@ -1,5 +1,5 @@\n /*\n- * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.\n+ * Copyright 1999-2017 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the OpenSSL license (the \u0022License\u0022). You may not use\n * this file except in compliance with the License. You can obtain a copy\n@@ -22,3 +22,4 @@ extern const X509V3_EXT_METHOD v3_name_constraints, v3_inhibit_anyp, v3_idp;\n extern const X509V3_EXT_METHOD v3_addr, v3_asid;\n extern const X509V3_EXT_METHOD v3_ct_scts[3];\n extern const X509V3_EXT_METHOD v3_tls_feature;\n+extern const X509V3_EXT_METHOD v3_ext_admission;\ndiff --git a/crypto/x509v3/standard_exts.h b/crypto/x509v3/standard_exts.h\nindex 05e0869..944f4de 100644\n--- a/crypto/x509v3/standard_exts.h\n+++ b/crypto/x509v3/standard_exts.h\n@@ -1,5 +1,5 @@\n /*\n- * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.\n+ * Copyright 1999-2017 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the OpenSSL license (the \u0022License\u0022). You may not use\n * this file except in compliance with the License. You can obtain a copy\n@@ -69,6 +69,7 @@ static const X509V3_EXT_METHOD *standard_exts[] \u003d {\n \u0026v3_ct_scts[2],\n #endif\n \u0026v3_tls_feature,\n+ \u0026v3_ext_admission\n };\n \n /* Number of standard extensions */\ndiff --git a/crypto/x509v3/v3_admis.c b/crypto/x509v3/v3_admis.c\nnew file mode 100644\nindex 0000000..86978e6\n--- /dev/null\n+++ b/crypto/x509v3/v3_admis.c\n@@ -0,0 +1,204 @@\n+/*\n+ * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.\n+ *\n+ * Licensed under the OpenSSL license (the \u0022License\u0022). You may not use\n+ * this file except in compliance with the License. You can obtain a copy\n+ * in the file LICENSE in the source distribution or at\n+ * https://www.openssl.org/source/license.html\n+ */\n+#include \u003cstdio.h\u003e\n+#include \u0022internal/cryptlib.h\u0022\n+#include \u003copenssl/conf.h\u003e\n+#include \u003copenssl/ossl_typ.h\u003e\n+#include \u003copenssl/asn1.h\u003e\n+#include \u003copenssl/asn1t.h\u003e\n+\n+#include \u003copenssl/x509v3.h\u003e\n+\n+#include \u003copenssl/safestack.h\u003e\n+\n+#include \u0022v3_admis.h\u0022\n+#include \u0022ext_dat.h\u0022\n+\n+\n+ASN1_SEQUENCE(NAMING_AUTHORITY) \u003d {\n+ ASN1_OPT(NAMING_AUTHORITY, namingAuthorityId, ASN1_OBJECT),\n+ ASN1_OPT(NAMING_AUTHORITY, namingAuthorityUrl, ASN1_IA5STRING),\n+ ASN1_OPT(NAMING_AUTHORITY, namingAuthorityText, DIRECTORYSTRING),\n+} ASN1_SEQUENCE_END(NAMING_AUTHORITY)\n+\n+ASN1_SEQUENCE(PROFESSION_INFO) \u003d {\n+ ASN1_EXP_OPT(PROFESSION_INFO, namingAuthority, NAMING_AUTHORITY, 0),\n+ ASN1_SEQUENCE_OF(PROFESSION_INFO, professionItems, DIRECTORYSTRING),\n+ ASN1_SEQUENCE_OF_OPT(PROFESSION_INFO, professionOIDs, ASN1_OBJECT),\n+ ASN1_OPT(PROFESSION_INFO, registrationNumber, ASN1_PRINTABLESTRING),\n+ ASN1_OPT(PROFESSION_INFO, addProfessionInfo, ASN1_OCTET_STRING),\n+} ASN1_SEQUENCE_END(PROFESSION_INFO)\n+\n+ASN1_SEQUENCE(ADMISSIONS) \u003d {\n+ ASN1_EXP_OPT(ADMISSIONS, admissionAuthority, GENERAL_NAME, 0),\n+ ASN1_EXP_OPT(ADMISSIONS, namingAuthority, NAMING_AUTHORITY, 1),\n+ ASN1_SEQUENCE_OF(ADMISSIONS, professionInfos, PROFESSION_INFO),\n+} ASN1_SEQUENCE_END(ADMISSIONS)\n+\n+ASN1_SEQUENCE(ADMISSION_SYNTAX) \u003d {\n+ ASN1_OPT(ADMISSION_SYNTAX, admissionAuthority, GENERAL_NAME),\n+ ASN1_SEQUENCE_OF(ADMISSION_SYNTAX, contentsOfAdmissions, ADMISSIONS),\n+} ASN1_SEQUENCE_END(ADMISSION_SYNTAX)\n+\n+IMPLEMENT_ASN1_FUNCTIONS(NAMING_AUTHORITY)\n+IMPLEMENT_ASN1_FUNCTIONS(PROFESSION_INFO)\n+IMPLEMENT_ASN1_FUNCTIONS(ADMISSIONS)\n+IMPLEMENT_ASN1_FUNCTIONS(ADMISSION_SYNTAX)\n+\n+static int i2r_ADMISSION_SYNTAX(const struct v3_ext_method *method, void *in,\n+ BIO *bp, int ind);\n+\n+const X509V3_EXT_METHOD v3_ext_admission \u003d {\n+ NID_x509ExtAdmission, /* .ext_nid \u003d */\n+ 0, /* .ext_flags \u003d */\n+ ASN1_ITEM_ref(ADMISSION_SYNTAX), /* .it \u003d */\n+ NULL, NULL, NULL, NULL,\n+ NULL, /* .i2s \u003d */\n+ NULL, /* .s2i \u003d */\n+ NULL, /* .i2v \u003d */\n+ NULL, /* .v2i \u003d */\n+ \u0026i2r_ADMISSION_SYNTAX, /* .i2r \u003d */\n+ NULL, /* .r2i \u003d */\n+ NULL /* extension-specific data */\n+};\n+\n+\n+static int i2r_NAMING_AUTHORITY(const struct v3_ext_method *method, void *in,\n+ BIO *bp, int ind)\n+{\n+ NAMING_AUTHORITY * namingAuthority \u003d (NAMING_AUTHORITY*) in;\n+\n+ if (namingAuthority \u003d\u003d NULL)\n+ return 0;\n+\n+ if (namingAuthority-\u003enamingAuthorityId \u003d\u003d NULL\n+ \u0026\u0026 namingAuthority-\u003enamingAuthorityText \u003d\u003d NULL\n+ \u0026\u0026 namingAuthority-\u003enamingAuthorityUrl \u003d\u003d NULL)\n+ return 0;\n+\n+ if (BIO_printf(bp, \u0022%*snamingAuthority: \u0022, ind, \u0022\u0022) \u003c\u003d 0)\n+ goto err;\n+\n+ if (namingAuthority-\u003enamingAuthorityId !\u003d NULL) {\n+ char objbuf[128];\n+ const char *ln \u003d OBJ_nid2ln(OBJ_obj2nid(namingAuthority-\u003enamingAuthorityId));\n+\n+ if (BIO_printf(bp, \u0022%*s admissionAuthorityId: \u0022, ind, \u0022\u0022) \u003c\u003d 0)\n+ goto err;\n+\n+ OBJ_obj2txt(objbuf, sizeof objbuf, namingAuthority-\u003enamingAuthorityId, 1);\n+\n+ if (BIO_printf(bp, \u0022%s%s%s%s\u005cn\u0022, ln ? ln : \u0022\u0022,\n+ ln ? \u0022 (\u0022 : \u0022\u0022, objbuf, ln ? \u0022)\u0022 : \u0022\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+ if (namingAuthority-\u003enamingAuthorityText !\u003d NULL) {\n+ if (BIO_printf(bp, \u0022%*s namingAuthorityText: \u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || ASN1_STRING_print(bp, namingAuthority-\u003enamingAuthorityText) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022\u005cn\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+ if (namingAuthority-\u003enamingAuthorityUrl !\u003d NULL ) {\n+ if (BIO_printf(bp, \u0022%*s namingAuthorityUrl: \u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || ASN1_STRING_print(bp, namingAuthority-\u003enamingAuthorityUrl) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022\u005cn\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+ return 1;\n+\n+err:\n+ return 0;\n+}\n+\n+static int i2r_ADMISSION_SYNTAX(const struct v3_ext_method *method, void *in,\n+ BIO *bp, int ind)\n+{\n+ ADMISSION_SYNTAX * admission \u003d (ADMISSION_SYNTAX *)in;\n+ int i, j, k;\n+\n+ if (admission-\u003eadmissionAuthority !\u003d NULL) {\n+ if (BIO_printf(bp, \u0022%*sadmissionAuthority:\u005cn\u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022%*s \u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || GENERAL_NAME_print(bp, admission-\u003eadmissionAuthority) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022\u005cn\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+\n+ for (i \u003d 0; i \u003c sk_ADMISSIONS_num(admission-\u003econtentsOfAdmissions); i++) {\n+ ADMISSIONS* entry \u003d sk_ADMISSIONS_value(admission-\u003econtentsOfAdmissions, i);\n+\n+ if (BIO_printf(bp, \u0022%*sEntry %0d:\u005cn\u0022, ind, \u0022\u0022, 1 + i) \u003c\u003d 0) goto err;\n+\n+ if (entry-\u003eadmissionAuthority !\u003d NULL) {\n+ if (BIO_printf(bp, \u0022%*s admissionAuthority:\u005cn\u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022%*s \u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || GENERAL_NAME_print(bp, entry-\u003eadmissionAuthority) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022\u005cn\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+\n+ if (entry-\u003enamingAuthority !\u003d NULL) {\n+ if (i2r_NAMING_AUTHORITY(method, entry-\u003enamingAuthority, bp, ind) \u003c\u003d 0)\n+ goto err;\n+ }\n+\n+ for (j \u003d 0; j \u003c sk_PROFESSION_INFO_num(entry-\u003eprofessionInfos); j++) {\n+ PROFESSION_INFO* pinfo \u003d sk_PROFESSION_INFO_value(entry-\u003eprofessionInfos, j);\n+\n+ if (BIO_printf(bp, \u0022%*s Profession Info Entry %0d:\u005cn\u0022, ind, \u0022\u0022, 1 + j) \u003c\u003d 0)\n+ goto err;\n+\n+ if (pinfo-\u003eregistrationNumber !\u003d NULL) {\n+ if (BIO_printf(bp, \u0022%*s registrationNumber: \u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || ASN1_STRING_print(bp, pinfo-\u003eregistrationNumber) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022\u005cn\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+\n+ if (pinfo-\u003enamingAuthority !\u003d NULL) {\n+ if (i2r_NAMING_AUTHORITY(method, pinfo-\u003enamingAuthority, bp, ind + 2) \u003c\u003d 0)\n+ goto err;\n+ }\n+\n+ if (pinfo-\u003eprofessionItems !\u003d NULL) {\n+\n+ if (BIO_printf(bp, \u0022%*s Info Entries:\u005cn\u0022, ind, \u0022\u0022) \u003c\u003d 0)\n+ goto err;\n+ for (k \u003d 0; k \u003c sk_ASN1_STRING_num(pinfo-\u003eprofessionItems); k++) {\n+ ASN1_STRING* val \u003d sk_ASN1_STRING_value(pinfo-\u003eprofessionItems, k);\n+\n+ if (BIO_printf(bp, \u0022%*s \u0022, ind, \u0022\u0022) \u003c\u003d 0\n+ || ASN1_STRING_print(bp, val) \u003c\u003d 0\n+ || BIO_printf(bp, \u0022\u005cn\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+ }\n+\n+ if (pinfo-\u003eprofessionOIDs !\u003d NULL) {\n+ if (BIO_printf(bp, \u0022%*s Profession OIDs:\u005cn\u0022, ind, \u0022\u0022) \u003c\u003d 0)\n+ goto err;\n+ for (k \u003d 0; k \u003c sk_ASN1_OBJECT_num(pinfo-\u003eprofessionOIDs); k++) {\n+ ASN1_OBJECT* obj \u003d sk_ASN1_OBJECT_value(pinfo-\u003eprofessionOIDs, k);\n+ const char *ln \u003d OBJ_nid2ln(OBJ_obj2nid(obj));\n+ char objbuf[128];\n+\n+ OBJ_obj2txt(objbuf, sizeof(objbuf), obj, 1);\n+ if (BIO_printf(bp, \u0022%*s %s%s%s%s\u005cn\u0022, ind, \u0022\u0022,\n+ ln ? ln : \u0022\u0022, ln ? \u0022 (\u0022 : \u0022\u0022,\n+ objbuf, ln ? \u0022)\u0022 : \u0022\u0022) \u003c\u003d 0)\n+ goto err;\n+ }\n+ }\n+ }\n+ }\n+ return 1;\n+\n+err:\n+ return -1;\n+}\ndiff --git a/crypto/x509v3/v3_admis.h b/crypto/x509v3/v3_admis.h\nnew file mode 100644\nindex 0000000..4f65b6d\n--- /dev/null\n+++ b/crypto/x509v3/v3_admis.h\n@@ -0,0 +1,59 @@\n+/*\n+ * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.\n+ *\n+ * Licensed under the OpenSSL license (the \u0022License\u0022). You may not use\n+ * this file except in compliance with the License. You can obtain a copy\n+ * in the file LICENSE in the source distribution or at\n+ * https://www.openssl.org/source/license.html\n+ */\n+\n+#ifndef HEADER_V3_ADMISSION_H\n+# define HEADER_V3_ADMISSION_H\n+\n+#ifdef __cplusplus\n+extern \u0022C\u0022 {\n+#endif\n+\n+typedef struct NamingAuthority_st {\n+ ASN1_OBJECT* namingAuthorityId;\n+ ASN1_IA5STRING* namingAuthorityUrl;\n+ ASN1_STRING* namingAuthorityText; /* i.e. DIRECTORYSTRING */\n+} NAMING_AUTHORITY;\n+\n+typedef struct ProfessionInfo_st {\n+ NAMING_AUTHORITY* namingAuthority;\n+ STACK_OF(ASN1_STRING)* professionItems; /* i.e. DIRECTORYSTRING */\n+ STACK_OF(ASN1_OBJECT)* professionOIDs;\n+ ASN1_PRINTABLESTRING* registrationNumber;\n+ ASN1_OCTET_STRING* addProfessionInfo;\n+} PROFESSION_INFO;\n+\n+typedef struct Admissions_st {\n+ GENERAL_NAME* admissionAuthority;\n+ NAMING_AUTHORITY* namingAuthority;\n+ STACK_OF(PROFESSION_INFO)* professionInfos;\n+} ADMISSIONS;\n+\n+typedef struct AdmissionSyntax_st {\n+ GENERAL_NAME* admissionAuthority;\n+ STACK_OF(ADMISSIONS)* contentsOfAdmissions;\n+} ADMISSION_SYNTAX;\n+\n+DECLARE_ASN1_ITEM(ADMISSIONS)\n+DECLARE_ASN1_ITEM(NAMING_AUTHORITY)\n+DECLARE_ASN1_ITEM(PROFESSION_INFO)\n+DECLARE_ASN1_ITEM(ADMISSION_SYNTAX)\n+\n+DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY)\n+DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO)\n+DECLARE_ASN1_FUNCTIONS(ADMISSIONS)\n+DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX)\n+\n+DEFINE_STACK_OF(ADMISSIONS)\n+DEFINE_STACK_OF(PROFESSION_INFO)\n+DEFINE_STACK_OF(ASN1_STRING)\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+#endif\ndiff --git a/include/openssl/obj_mac.h b/include/openssl/obj_mac.h\nindex 2cac971..82836d2 100644\n--- a/include/openssl/obj_mac.h\n+++ b/include/openssl/obj_mac.h\n@@ -54,6 +54,11 @@\n #define NID_hmac_sha1 781\n #define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L\n \n+#define SN_x509ExtAdmission \u0022x509ExtAdmission\u0022\n+#define LN_x509ExtAdmission \u0022Professional Information or basis for Admission\u0022\n+#define NID_x509ExtAdmission 1093\n+#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L\n+\n #define SN_certicom_arc \u0022certicom-arc\u0022\n #define NID_certicom_arc 677\n #define OBJ_certicom_arc OBJ_identified_organization,132L\n","s":{"c":1752657799,"u": 39007}} ],"g": 41268,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}