From cba34400fe1ee4ead3f235a8d4de807642fcd450 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Tue, 9 Mar 2021 12:22:43 -0600 Subject: [PATCH] asn1: Fix printing of open type choice names --- lib/asn1/check-gen.c | 184 ++++++++++++++++++++++--------------------- lib/asn1/template.c | 2 +- 2 files changed, 95 insertions(+), 91 deletions(-) diff --git a/lib/asn1/check-gen.c b/lib/asn1/check-gen.c index e28d956a2..57f13525d 100644 --- a/lib/asn1/check-gen.c +++ b/lib/asn1/check-gen.c @@ -2248,97 +2248,101 @@ test_ios(void) "DENTIFIER\",\"oid\":\"2.5.29.35\",\"components\":[2,5,29,35],\"name\":\"id" "-x509-ce-authorityKeyIdentifier\"},\"critical\":false,\"extnValue\":\"" "301680141ADB994AB58BE57A0CC9B900E7851E1A43C08660\",\"_extnValue_ch" - "oice\":\"\",\"_extnValue\":{\"_type\":\"AuthorityKeyIdentifier\",\"keyIden" - "tifier\":\"1ADB994AB58BE57A0CC9B900E7851E1A43C08660\",\"authorityCer" - "tIssuer\":null,\"authorityCertSerialNumber\":null}},{\"_type\":\"Exten" - "sion\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.29.32\",\"c" - "omponents\":[2,5,29,32],\"name\":\"id-x509-ce-certificatePolicies\"}," - "\"critical\":false,\"extnValue\":\"303930370604551D2000302F302D06082B" - "060105050702011621687474703A2F2F7777772E73742E636F6D2F54504D2F72" - "65706F7369746F72792F\",\"_extnValue_choice\":\"\",\"_extnValue\":[{\"_ty" - "pe\":\"PolicyInformation\",\"policyIdentifier\":{\"_type\":\"OBJECT IDEN" - "TIFIER\",\"oid\":\"2.5.29.32.0\",\"components\":[2,5,29,32,0],\"name\":\"i" - "d-x509-ce-certificatePolicies-anyPolicy\"},\"policyQualifiers\":[{\"" - "_type\":\"PolicyQualifierInfo\",\"policyQualifierId\":{\"_type\":\"OBJEC" - "T IDENTIFIER\",\"oid\":\"1.3.6.1.5.5.7.2.1\",\"components\":[1,3,6,1,5," - "5,7,2,1],\"name\":\"id-pkix-qt-cps\"},\"qualifier\":\"1621687474703A2F2" - "F7777772E73742E636F6D2F54504D2F7265706F7369746F72792F\"}]}]},{\"_t" + "oice\":\"ext-AuthorityKeyIdentifier\",\"_extnValue\":{\"_type\":\"Author" + "ityKeyIdentifier\",\"keyIdentifier\":\"1ADB994AB58BE57A0CC9B900E7851" + "E1A43C08660\",\"authorityCertIssuer\":null,\"authorityCertSerialNumb" + "er\":null}},{\"_type\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENTI" + "FIER\",\"oid\":\"2.5.29.32\",\"components\":[2,5,29,32],\"name\":\"id-x509" + "-ce-certificatePolicies\"},\"critical\":false,\"extnValue\":\"30393037" + "0604551D2000302F302D06082B060105050702011621687474703A2F2F777777" + "2E73742E636F6D2F54504D2F7265706F7369746F72792F\",\"_extnValue_choi" + "ce\":\"ext-CertificatePolicies\",\"_extnValue\":[{\"_type\":\"PolicyInfo" + "rmation\",\"policyIdentifier\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"" + "2.5.29.32.0\",\"components\":[2,5,29,32,0],\"name\":\"id-x509-ce-certi" + "ficatePolicies-anyPolicy\"},\"policyQualifiers\":[{\"_type\":\"PolicyQ" + "ualifierInfo\",\"policyQualifierId\":{\"_type\":\"OBJECT IDENTIFIER\",\"" + "oid\":\"1.3.6.1.5.5.7.2.1\",\"components\":[1,3,6,1,5,5,7,2,1],\"name\"" + ":\"id-pkix-qt-cps\"},\"qualifier\":\"1621687474703A2F2F7777772E73742E" + "636F6D2F54504D2F7265706F7369746F72792F\"}]}]},{\"_type\":\"Extension" + "\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.29.17\",\"compo" + "nents\":[2,5,29,17],\"name\":\"id-x509-ce-subjectAltName\"},\"critical" + "\":true,\"extnValue\":\"304DA44B304931163014060567810502010C0B69643A" + "353335343444323031173015060567810502020C0C5354333348545048414843" + "3031163014060567810502030C0B69643A3030343930303038\",\"_extnValue_" + "choice\":\"ext-SubjectAltName\",\"_extnValue\":[{\"_choice\":\"directory" + "Name\",\"value\":{\"_choice\":\"rdnSequence\",\"value\":[[{\"_type\":\"Attri" + "buteTypeAndValue\",\"type\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.2" + "3.133.2.1\",\"components\":[2,23,133,2,1],\"name\":\"tcg-at-tpmManufac" + "turer\"},\"value\":{\"_choice\":\"utf8String\",\"value\":\"id:53544D20\"}}]" + ",[{\"_type\":\"AttributeTypeAndValue\",\"type\":{\"_type\":\"OBJECT IDENT" + "IFIER\",\"oid\":\"2.23.133.2.2\",\"components\":[2,23,133,2,2],\"name\":\"" + "tcg-at-tpmModel\"},\"value\":{\"_choice\":\"utf8String\",\"value\":\"ST33H" + "TPHAHC0\"}}],[{\"_type\":\"AttributeTypeAndValue\",\"type\":{\"_type\":\"O" + "BJECT IDENTIFIER\",\"oid\":\"2.23.133.2.3\",\"components\":[2,23,133,2," + "3],\"name\":\"tcg-at-tpmVersion\"},\"value\":{\"_choice\":\"utf8String\",\"" + "value\":\"id:00490008\"}}]]}}]},{\"_type\":\"Extension\",\"extnID\":{\"_ty" + "pe\":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.29.9\",\"components\":[2,5,29,9]" + ",\"name\":\"id-x509-ce-subjectDirectoryAttributes\"},\"critical\":fals" + "e,\"extnValue\":\"305E301706056781050210310E300C0C03322E30020100020" + "2008A304306056781050212313A30380201000101FFA0030A0101A1030A0100A" + "2030A0100A310300E1603332E310A01040A01020101FFA40F300D16053134302" + "D320A0102010100\",\"_extnValue_choice\":\"ext-SubjectDirectoryAttrib" + "utes\",\"_extnValue\":[{\"_type\":\"AttributeSet\",\"type\":{\"_type\":\"OBJ" + "ECT IDENTIFIER\",\"oid\":\"2.23.133.2.16\",\"components\":[2,23,133,2,1" + "6],\"name\":\"tcg-at-tpmSpecification\"},\"values\":[\"300C0C03322E3002" + "01000202008A\"],\"_values_choice\":\"at-TPMSpecification\",\"_values\":" + "[{\"_type\":\"TPMSpecification\",\"family\":\"2.0\",\"level\":0,\"revision\"" + ":138}]},{\"_type\":\"AttributeSet\",\"type\":{\"_type\":\"OBJECT IDENTIFI" + "ER\",\"oid\":\"2.23.133.2.18\",\"components\":[2,23,133,2,18],\"name\":\"t" + "cg-at-tpmSecurityAssertions\"},\"values\":[\"30380201000101FFA0030A0" + "101A1030A0100A2030A0100A310300E1603332E310A01040A01020101FFA40F3" + "00D16053134302D320A0102010100\"],\"_values_choice\":\"at-TPMSecurity" + "Assertions\",\"_values\":[{\"_type\":\"TPMSecurityAssertions\",\"version" + "\":0,\"fieldUpgradable\":true,\"ekGenerationType\":\"ekgt-injected\",\"e" + "kGenerationLocation\":\"tpmManufacturer\",\"ekCertificateGenerationL" + "ocation\":\"tpmManufacturer\",\"ccInfo\":{\"_type\":\"CommonCriteriaMeas" + "ures\",\"version\":\"3.1\",\"assurancelevel\":\"ealevel4\",\"evaluationSta" + "tus\":\"evaluationCompleted\",\"plus\":true,\"strengthOfFunction\":null" + ",\"profileOid\":null,\"profileUri\":null,\"targetOid\":null,\"targetUri" + "\":null},\"fipsLevel\":{\"_type\":\"FIPSLevel\",\"version\":\"140-2\",\"leve" + "l\":\"sllevel2\",\"plus\":false},\"iso9000Certified\":false,\"iso9000Uri" + "\":null}]}]},{\"_type\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENT" + "IFIER\",\"oid\":\"2.5.29.15\",\"components\":[2,5,29,15],\"name\":\"id-x50" + "9-ce-keyUsage\"},\"critical\":true,\"extnValue\":\"03020520\",\"_extnVal" + "ue_choice\":\"ext-KeyUsage\",\"_extnValue\":[\"keyEncipherment\"]},{\"_t" "ype\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2." - "5.29.17\",\"components\":[2,5,29,17],\"name\":\"id-x509-ce-subjectAltN" - "ame\"},\"critical\":true,\"extnValue\":\"304DA44B304931163014060567810" - "502010C0B69643A353335343444323031173015060567810502020C0C5354333" - "3485450484148433031163014060567810502030C0B69643A303034393030303" - "8\",\"_extnValue_choice\":\"\",\"_extnValue\":[{\"_choice\":\"directoryNam" - "e\",\"value\":{\"_choice\":\"rdnSequence\",\"value\":[[{\"_type\":\"Attribut" - "eTypeAndValue\",\"type\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.23.1" - "33.2.1\",\"components\":[2,23,133,2,1],\"name\":\"tcg-at-tpmManufactur" - "er\"},\"value\":{\"_choice\":\"utf8String\",\"value\":\"id:53544D20\"}}],[{" - "\"_type\":\"AttributeTypeAndValue\",\"type\":{\"_type\":\"OBJECT IDENTIFI" - "ER\",\"oid\":\"2.23.133.2.2\",\"components\":[2,23,133,2,2],\"name\":\"tcg" - "-at-tpmModel\"},\"value\":{\"_choice\":\"utf8String\",\"value\":\"ST33HTPH" - "AHC0\"}}],[{\"_type\":\"AttributeTypeAndValue\",\"type\":{\"_type\":\"OBJE" - "CT IDENTIFIER\",\"oid\":\"2.23.133.2.3\",\"components\":[2,23,133,2,3]," - "\"name\":\"tcg-at-tpmVersion\"},\"value\":{\"_choice\":\"utf8String\",\"val" - "ue\":\"id:00490008\"}}]]}}]},{\"_type\":\"Extension\",\"extnID\":{\"_type\"" - ":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.29.9\",\"components\":[2,5,29,9],\"n" - "ame\":\"id-x509-ce-subjectDirectoryAttributes\"},\"critical\":false,\"" - "extnValue\":\"305E301706056781050210310E300C0C03322E30020100020200" - "8A304306056781050212313A30380201000101FFA0030A0101A1030A0100A203" - "0A0100A310300E1603332E310A01040A01020101FFA40F300D16053134302D32" - "0A0102010100\",\"_extnValue_choice\":\"\",\"_extnValue\":[{\"_type\":\"Att" - "ributeSet\",\"type\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.23.133.2" - ".16\",\"components\":[2,23,133,2,16],\"name\":\"tcg-at-tpmSpecificatio" - "n\"},\"values\":[\"300C0C03322E300201000202008A\"],\"_values_choice\":\"" - "\",\"_values\":[{\"_type\":\"TPMSpecification\",\"family\":\"2.0\",\"level\":" - "0,\"revision\":138}]},{\"_type\":\"AttributeSet\",\"type\":{\"_type\":\"OBJ" - "ECT IDENTIFIER\",\"oid\":\"2.23.133.2.18\",\"components\":[2,23,133,2,1" - "8],\"name\":\"tcg-at-tpmSecurityAssertions\"},\"values\":[\"30380201000" - "101FFA0030A0101A1030A0100A2030A0100A310300E1603332E310A01040A010" - "20101FFA40F300D16053134302D320A0102010100\"],\"_values_choice\":\"\"," - "\"_values\":[{\"_type\":\"TPMSecurityAssertions\",\"version\":0,\"fieldUp" - "gradable\":true,\"ekGenerationType\":\"ekgt-injected\",\"ekGenerationL" - "ocation\":\"tpmManufacturer\",\"ekCertificateGenerationLocation\":\"tp" - "mManufacturer\",\"ccInfo\":{\"_type\":\"CommonCriteriaMeasures\",\"versi" - "on\":\"3.1\",\"assurancelevel\":\"ealevel4\",\"evaluationStatus\":\"evalua" - "tionCompleted\",\"plus\":true,\"strengthOfFunction\":null,\"profileOid" - "\":null,\"profileUri\":null,\"targetOid\":null,\"targetUri\":null},\"fip" - "sLevel\":{\"_type\":\"FIPSLevel\",\"version\":\"140-2\",\"level\":\"sllevel2" - "\",\"plus\":false},\"iso9000Certified\":false,\"iso9000Uri\":null}]}]}," - "{\"_type\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\"" - ":\"2.5.29.15\",\"components\":[2,5,29,15],\"name\":\"id-x509-ce-keyUsag" - "e\"},\"critical\":true,\"extnValue\":\"03020520\",\"_extnValue_choice\":\"" - "\",\"_extnValue\":[\"keyEncipherment\"]},{\"_type\":\"Extension\",\"extnID" - "\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.29.19\",\"components\":[2" - ",5,29,19],\"name\":\"id-x509-ce-basicConstraints\"},\"critical\":true," - "\"extnValue\":\"3000\",\"_extnValue_choice\":\"\",\"_extnValue\":{\"_type\":" - "\"BasicConstraints\",\"cA\":false,\"pathLenConstraint\":null}},{\"_type" - "\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.2" - "9.37\",\"components\":[2,5,29,37],\"name\":\"id-x509-ce-extKeyUsage\"}," - "\"critical\":false,\"extnValue\":\"300706056781050801\",\"_extnValue_ch" - "oice\":\"\",\"_extnValue\":[{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.23." - "133.8.1\",\"components\":[2,23,133,8,1],\"name\":\"tcg-kp-EKCertificat" - "e\"}]},{\"_type\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\"" - ",\"oid\":\"1.3.6.1.5.5.7.1.1\",\"components\":[1,3,6,1,5,5,7,1,1],\"nam" - "e\":\"id-pkix-pe-authorityInfoAccess\"},\"critical\":false,\"extnValue" - "\":\"303C303A06082B06010505073002862E687474703A2F2F7365637572652E6" - "76C6F62616C7369676E2E636F6D2F73746D74706D656B696E7430352E637274\"" - ",\"_extnValue_choice\":\"\",\"_extnValue\":[{\"_type\":\"AccessDescriptio" - "n\",\"accessMethod\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"1.3.6.1.5." - "5.7.48.2\",\"components\":[1,3,6,1,5,5,7,48,2],\"name\":\"id-pkix-ad-c" - "aIssuers\"},\"accessLocation\":{\"_choice\":\"uniformResourceIdentifie" - "r\",\"value\":\"http://secure.globalsign.com/stmtpmekint05.crt\"}}]}]" - "},\"signatureAlgorithm\":{\"_type\":\"AlgorithmIdentifier\",\"algorithm" - "\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"1.2.840.113549.1.1.11\",\"co" - "mponents\":[1,2,840,113549,1,1,11],\"name\":\"id-pkcs1-sha256WithRSA" - "Encryption\"},\"parameters\":\"0500\"},\"signatureValue\":\"2048:3D4C381" - "E5B4F1BCBE09C63D52F1F04570CAEA142FD9CD942043B11F8E3BDCF50007AE16" - "CF8869013041E92CDD3280BA4B51FBBD40582ED750219E261A695095674855AA" - "CEB520ADAFF9E7E908480A39CDCF900462D9171960FFE55D3AC49E8C981341BB" - "D2EFBCC252A4C18A4F3B7C84CCE42CE70A208C84D2630A7ABFBE72D6271E75B9" - "FF1C971D20EB3DBD763F1E04D834EAA692D2E4001BBF4730A3E3FDA9711AE386" - "524D91C63BE0E516D00D5C6141FCCF6C539F3518E180049865BE16B69CAE1F8C" - "B7FDC474B38F7EE56CBE7D8A89D9BA99B65D5265AEF32AA62426B10E6D75BB86" - "77EC44F755BBC2806FD2B4E04BDF5D44259DBEAA42B6F563DF7AA7506\"}" + "5.29.19\",\"components\":[2,5,29,19],\"name\":\"id-x509-ce-basicConstr" + "aints\"},\"critical\":true,\"extnValue\":\"3000\",\"_extnValue_choice\":\"" + "ext-BasicConstraints\",\"_extnValue\":{\"_type\":\"BasicConstraints\",\"" + "cA\":false,\"pathLenConstraint\":null}},{\"_type\":\"Extension\",\"extnI" + "D\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.5.29.37\",\"components\":[" + "2,5,29,37],\"name\":\"id-x509-ce-extKeyUsage\"},\"critical\":false,\"ex" + "tnValue\":\"300706056781050801\",\"_extnValue_choice\":\"ext-ExtKeyUsa" + "ge\",\"_extnValue\":[{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"2.23.133.8" + ".1\",\"components\":[2,23,133,8,1],\"name\":\"tcg-kp-EKCertificate\"}]}" + ",{\"_type\":\"Extension\",\"extnID\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid" + "\":\"1.3.6.1.5.5.7.1.1\",\"components\":[1,3,6,1,5,5,7,1,1],\"name\":\"i" + "d-pkix-pe-authorityInfoAccess\"},\"critical\":false,\"extnValue\":\"30" + "3C303A06082B06010505073002862E687474703A2F2F7365637572652E676C6F" + "62616C7369676E2E636F6D2F73746D74706D656B696E7430352E637274\",\"_ex" + "tnValue_choice\":\"ext-AuthorityInfoAccess\",\"_extnValue\":[{\"_type\"" + ":\"AccessDescription\",\"accessMethod\":{\"_type\":\"OBJECT IDENTIFIER\"" + ",\"oid\":\"1.3.6.1.5.5.7.48.2\",\"components\":[1,3,6,1,5,5,7,48,2],\"n" + "ame\":\"id-pkix-ad-caIssuers\"},\"accessLocation\":{\"_choice\":\"unifor" + "mResourceIdentifier\",\"value\":\"http://secure.globalsign.com/stmtp" + "mekint05.crt\"}}]}]},\"signatureAlgorithm\":{\"_type\":\"AlgorithmIden" + "tifier\",\"algorithm\":{\"_type\":\"OBJECT IDENTIFIER\",\"oid\":\"1.2.840." + "113549.1.1.11\",\"components\":[1,2,840,113549,1,1,11],\"name\":\"id-p" + "kcs1-sha256WithRSAEncryption\"},\"parameters\":\"0500\"},\"signatureVa" + "lue\":\"2048:3D4C381E5B4F1BCBE09C63D52F1F04570CAEA142FD9CD942043B1" + "1F8E3BDCF50007AE16CF8869013041E92CDD3280BA4B51FBBD40582ED750219E" + "261A695095674855AACEB520ADAFF9E7E908480A39CDCF900462D9171960FFE5" + "5D3AC49E8C981341BBD2EFBCC252A4C18A4F3B7C84CCE42CE70A208C84D2630A" + "7ABFBE72D6271E75B9FF1C971D20EB3DBD763F1E04D834EAA692D2E4001BBF47" + "30A3E3FDA9711AE386524D91C63BE0E516D00D5C6141FCCF6C539F3518E18004" + "9865BE16B69CAE1F8CB7FDC474B38F7EE56CBE7D8A89D9BA99B65D5265AEF32A" + "A62426B10E6D75BB8677EC44F755BBC2806FD2B4E04BDF5D44259DBEAA42B6F5" + "63DF7AA7506\"}" }; heim_octet_string os; Certificate c0, c1; diff --git a/lib/asn1/template.c b/lib/asn1/template.c index 437b1b7df..85a370d6b 100644 --- a/lib/asn1/template.c +++ b/lib/asn1/template.c @@ -2399,7 +2399,7 @@ _asn1_print_open_type(const struct asn1_template *t, /* object set template */ r = rk_strpoolprintf(r, ",%s\"_%s_choice\":\"%s\"", indents ? indents : "", opentype_name, - (const char *)tactual_type); + (const char *)tos[3*(*elementp - 1) + 2].ptr); if (!r) { free(indents); return r;