使用 SecAsn1Decode 解析 DER 格式数据
parsing DER format data using SecAsn1Decode
我正在尝试使用 SecAsn1Decode
来解析以下 DER 编码数据。
但是,我未能为该结构定义模板(由 SecAsn1Template
表示)。
也许任何人都可以解释如何为以下 DER 结构创建模板:
这是二进制原始数据(DER 格式)
30 81 8E 31 0B 30 09 06 03 55 04 06 13 02 49 4C
31 0F 30 0D 06 03 55 04 08 0C 06 69 73 72 61 65
6C 31 0C 30 0A 06 03 55 04 07 0C 03 54 4C 56 31
0B 30 09 06 03 55 04 0A 0C 02 54 53 31 1E 30 1C
06 03 55 04 0B 0C 15 43 41 5F 63 65 72 74 69 66
69 63 61 74 65 5F 73 65 72 76 65 72 31 1B 30 19
06 03 55 04 03 0C 12 61 61 61 61 61 61 61 4D 61
63 42 6F 6F 6B 5F 50 72 6F 31 16 30 14 06 09 2A
86 48 86 F7 0D 01 09 01 16 07 7A 40 7A 2E 63 6F
6D
这是使用 asn1 java 解码器对该数据的解释
https://lapo.it/asn1js
EQUENCE (7 elem)
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.6 countryName (X.520 DN component)
PrintableString aa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.8 stateOrProvinceName (X.520 DN component)
UTF8String aaaaaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.7 localityName (X.520 DN component)
UTF8String aaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.10 organizationName (X.520 DN component)
UTF8String TS
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.11 organizationalUnitName (X.520 DN component)
UTF8String CA_certificate_server
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component)
UTF8String aaaaaaaaaaaaaaaaaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 1.2.840.113549.1.9.1 emailAddress (PKCS #9. Deprecated, use an altName extension instead)
IA5String a@a.com
是DER/BER TLV数据。
这里是用https://iso8583.info/lib/ISO/8825/1/BER/TLVs
解析的详细数据
TLVs:#"30818E310B300906035504061302494C310F300D06035504080C06697372..6F6D" # ASN.1, Basic Encoding Rules (BER), Tag + Length + Value (TLV) series
- x30:#"30818E310B300906035504061302494C310F300D06035504080C06697372..6F6D" # SEQUENCE
- tag: "30"
- len: "818E" # // 142
- val:#"310B300906035504061302494C310F300D06035504080C0669737261656C..6F6D"
- x31:#"310B300906035504061302494C" # SET
- tag: "31"
- len: "0B" # // 11
- val:#"300906035504061302494C"
- x30:#"300906035504061302494C" # SEQUENCE
- tag: "30"
- len: "09" # // 9
- val:#"06035504061302494C"
- x06:#"0603550406" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550406" # // 2 5 4 6 - joint-iso-itu-t.ds.attributeType.countryName
- x13:#"1302494C" # PrintableString
- tag: "13"
- len: "02" # // 2
- val: "494C" # // IL
- x31:#"310F300D06035504080C0669737261656C" # SET
- tag: "31"
- len: "0F" # // 15
- val:#"300D06035504080C0669737261656C"
- x30:#"300D06035504080C0669737261656C" # SEQUENCE
- tag: "30"
- len: "0D" # // 13
- val:#"06035504080C0669737261656C"
- x06:#"0603550408" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550408" # // 2 5 4 8
- x0C:#"0C0669737261656C" # UTF8String
- tag: "0C"
- len: "06" # // 6
- val: "69737261656C" # // israel
- x31:#"310C300A06035504070C03544C56" # SET
- tag: "31"
- len: "0C" # // 12
- val:#"300A06035504070C03544C56"
- x30:#"300A06035504070C03544C56" # SEQUENCE
- tag: "30"
- len: "0A" # // 10
- val:#"06035504070C03544C56"
- x06:#"0603550407" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550407" # // 2 5 4 7 - joint-iso-itu-t.ds.attributeType.localityName
- x0C:#"0C03544C56" # UTF8String
- tag: "0C"
- len: "03" # // 3
- val: "544C56" # // TLV
- x31:#"310B3009060355040A0C025453" # SET
- tag: "31"
- len: "0B" # // 11
- val:#"3009060355040A0C025453"
- x30:#"3009060355040A0C025453" # SEQUENCE
- tag: "30"
- len: "09" # // 9
- val:#"060355040A0C025453"
- x06:#"060355040A" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "55040A" # // 2 5 4 10 - joint-iso-itu-t.ds.attributeType.organizationName
- x0C:#"0C025453" # UTF8String
- tag: "0C"
- len: "02" # // 2
- val: "5453" # // TS
- x31:#"311E301C060355040B0C1543415F63657274696669636174655F736572766572" # SET
- tag: "31"
- len: "1E" # // 30
- val:#"301C060355040B0C1543415F63657274696669636174655F736572766572"
- x30:#"301C060355040B0C1543415F63657274696669636174655F736572766572" # SEQUENCE
- tag: "30"
- len: "1C" # // 28
- val:#"060355040B0C1543415F63657274696669636174655F736572766572"
- x06:#"060355040B" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "55040B" # // 2 5 4 11 - joint-iso-itu-t.ds.attributeType.organizationUnitName
- x0C:#"0C1543415F63657274696669636174655F736572766572" # UTF8String
- tag: "0C"
- len: "15" # // 21
- val: "43415F63657274696669636174655F736572766572" # // CA_certificate_server
- x31:#"311B301906035504030C12616161616161614D6163426F6F6B5F50726F" # SET
- tag: "31"
- len: "1B" # // 27
- val:#"301906035504030C12616161616161614D6163426F6F6B5F50726F"
- x30:#"301906035504030C12616161616161614D6163426F6F6B5F50726F" # SEQUENCE
- tag: "30"
- len: "19" # // 25
- val:#"06035504030C12616161616161614D6163426F6F6B5F50726F"
- x06:#"0603550403" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550403" # // 2 5 4 3 - joint-iso-itu-t.ds.attributeType.commonName
- x0C:#"0C12616161616161614D6163426F6F6B5F50726F" # UTF8String
- tag: "0C"
- len: "12" # // 18
- val: "616161616161614D6163426F6F6B5F50726F" # // aaaaaaaMacBook_Pro
- x31:#"3116301406092A864886F70D01090116077A407A2E636F6D" # SET
- tag: "31"
- len: "16" # // 22
- val:#"301406092A864886F70D01090116077A407A2E636F6D"
- x30:#"301406092A864886F70D01090116077A407A2E636F6D" # SEQUENCE
- tag: "30"
- len: "14" # // 20
- val:#"06092A864886F70D01090116077A407A2E636F6D"
- x06:#"06092A864886F70D010901" # Object Identifier (OID)
- tag: "06"
- len: "09" # // 9
- val: "2A864886F70D010901" # // 1 2 840 113549 1 9 1 - iso.member-body.us.rsadsi.pkcs.pkcs-9.emailAddress
- x16:#"16077A407A2E636F6D" # IA5String
- tag: "16"
- len: "07" # // 7
- val: "7A407A2E636F6D" # // z@z.com
我正在尝试使用 SecAsn1Decode
来解析以下 DER 编码数据。
但是,我未能为该结构定义模板(由 SecAsn1Template
表示)。
也许任何人都可以解释如何为以下 DER 结构创建模板:
这是二进制原始数据(DER 格式)
30 81 8E 31 0B 30 09 06 03 55 04 06 13 02 49 4C
31 0F 30 0D 06 03 55 04 08 0C 06 69 73 72 61 65
6C 31 0C 30 0A 06 03 55 04 07 0C 03 54 4C 56 31
0B 30 09 06 03 55 04 0A 0C 02 54 53 31 1E 30 1C
06 03 55 04 0B 0C 15 43 41 5F 63 65 72 74 69 66
69 63 61 74 65 5F 73 65 72 76 65 72 31 1B 30 19
06 03 55 04 03 0C 12 61 61 61 61 61 61 61 4D 61
63 42 6F 6F 6B 5F 50 72 6F 31 16 30 14 06 09 2A
86 48 86 F7 0D 01 09 01 16 07 7A 40 7A 2E 63 6F
6D
这是使用 asn1 java 解码器对该数据的解释 https://lapo.it/asn1js
EQUENCE (7 elem)
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.6 countryName (X.520 DN component)
PrintableString aa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.8 stateOrProvinceName (X.520 DN component)
UTF8String aaaaaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.7 localityName (X.520 DN component)
UTF8String aaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.10 organizationName (X.520 DN component)
UTF8String TS
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.11 organizationalUnitName (X.520 DN component)
UTF8String CA_certificate_server
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component)
UTF8String aaaaaaaaaaaaaaaaaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 1.2.840.113549.1.9.1 emailAddress (PKCS #9. Deprecated, use an altName extension instead)
IA5String a@a.com
是DER/BER TLV数据。
这里是用https://iso8583.info/lib/ISO/8825/1/BER/TLVs
解析的详细数据TLVs:#"30818E310B300906035504061302494C310F300D06035504080C06697372..6F6D" # ASN.1, Basic Encoding Rules (BER), Tag + Length + Value (TLV) series
- x30:#"30818E310B300906035504061302494C310F300D06035504080C06697372..6F6D" # SEQUENCE
- tag: "30"
- len: "818E" # // 142
- val:#"310B300906035504061302494C310F300D06035504080C0669737261656C..6F6D"
- x31:#"310B300906035504061302494C" # SET
- tag: "31"
- len: "0B" # // 11
- val:#"300906035504061302494C"
- x30:#"300906035504061302494C" # SEQUENCE
- tag: "30"
- len: "09" # // 9
- val:#"06035504061302494C"
- x06:#"0603550406" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550406" # // 2 5 4 6 - joint-iso-itu-t.ds.attributeType.countryName
- x13:#"1302494C" # PrintableString
- tag: "13"
- len: "02" # // 2
- val: "494C" # // IL
- x31:#"310F300D06035504080C0669737261656C" # SET
- tag: "31"
- len: "0F" # // 15
- val:#"300D06035504080C0669737261656C"
- x30:#"300D06035504080C0669737261656C" # SEQUENCE
- tag: "30"
- len: "0D" # // 13
- val:#"06035504080C0669737261656C"
- x06:#"0603550408" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550408" # // 2 5 4 8
- x0C:#"0C0669737261656C" # UTF8String
- tag: "0C"
- len: "06" # // 6
- val: "69737261656C" # // israel
- x31:#"310C300A06035504070C03544C56" # SET
- tag: "31"
- len: "0C" # // 12
- val:#"300A06035504070C03544C56"
- x30:#"300A06035504070C03544C56" # SEQUENCE
- tag: "30"
- len: "0A" # // 10
- val:#"06035504070C03544C56"
- x06:#"0603550407" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550407" # // 2 5 4 7 - joint-iso-itu-t.ds.attributeType.localityName
- x0C:#"0C03544C56" # UTF8String
- tag: "0C"
- len: "03" # // 3
- val: "544C56" # // TLV
- x31:#"310B3009060355040A0C025453" # SET
- tag: "31"
- len: "0B" # // 11
- val:#"3009060355040A0C025453"
- x30:#"3009060355040A0C025453" # SEQUENCE
- tag: "30"
- len: "09" # // 9
- val:#"060355040A0C025453"
- x06:#"060355040A" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "55040A" # // 2 5 4 10 - joint-iso-itu-t.ds.attributeType.organizationName
- x0C:#"0C025453" # UTF8String
- tag: "0C"
- len: "02" # // 2
- val: "5453" # // TS
- x31:#"311E301C060355040B0C1543415F63657274696669636174655F736572766572" # SET
- tag: "31"
- len: "1E" # // 30
- val:#"301C060355040B0C1543415F63657274696669636174655F736572766572"
- x30:#"301C060355040B0C1543415F63657274696669636174655F736572766572" # SEQUENCE
- tag: "30"
- len: "1C" # // 28
- val:#"060355040B0C1543415F63657274696669636174655F736572766572"
- x06:#"060355040B" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "55040B" # // 2 5 4 11 - joint-iso-itu-t.ds.attributeType.organizationUnitName
- x0C:#"0C1543415F63657274696669636174655F736572766572" # UTF8String
- tag: "0C"
- len: "15" # // 21
- val: "43415F63657274696669636174655F736572766572" # // CA_certificate_server
- x31:#"311B301906035504030C12616161616161614D6163426F6F6B5F50726F" # SET
- tag: "31"
- len: "1B" # // 27
- val:#"301906035504030C12616161616161614D6163426F6F6B5F50726F"
- x30:#"301906035504030C12616161616161614D6163426F6F6B5F50726F" # SEQUENCE
- tag: "30"
- len: "19" # // 25
- val:#"06035504030C12616161616161614D6163426F6F6B5F50726F"
- x06:#"0603550403" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550403" # // 2 5 4 3 - joint-iso-itu-t.ds.attributeType.commonName
- x0C:#"0C12616161616161614D6163426F6F6B5F50726F" # UTF8String
- tag: "0C"
- len: "12" # // 18
- val: "616161616161614D6163426F6F6B5F50726F" # // aaaaaaaMacBook_Pro
- x31:#"3116301406092A864886F70D01090116077A407A2E636F6D" # SET
- tag: "31"
- len: "16" # // 22
- val:#"301406092A864886F70D01090116077A407A2E636F6D"
- x30:#"301406092A864886F70D01090116077A407A2E636F6D" # SEQUENCE
- tag: "30"
- len: "14" # // 20
- val:#"06092A864886F70D01090116077A407A2E636F6D"
- x06:#"06092A864886F70D010901" # Object Identifier (OID)
- tag: "06"
- len: "09" # // 9
- val: "2A864886F70D010901" # // 1 2 840 113549 1 9 1 - iso.member-body.us.rsadsi.pkcs.pkcs-9.emailAddress
- x16:#"16077A407A2E636F6D" # IA5String
- tag: "16"
- len: "07" # // 7
- val: "7A407A2E636F6D" # // z@z.com