On Tue, 29 Sep 2020 17:52:11 GMT, Roger Riggs <rri...@openjdk.org> wrote:
>> # JDK-8252523: Add ASN.1 Formatter to work with test utility HexPrinter >> >> Debugging functions that utilize ASN.1, DER, and BER encoded streams is >> difficult without test utilities to show the contents. >> The ASN.1 formatter reads a stream and produces annotated output of the >> tags, values, and structures. >> When used with the test library jdk.test.lib.hexdump.HexPrinter the >> annotations are synchronized >> with the hex formatted output. >> >> Small changes to HexPrinter are included to improve the output readability. >> >> >> Example decoding of a .pem certificate: >> SEQUENCE [910] >> SEQUENCE [630] >> CONTEXT cons 0 [3] >> BYTE 2, >> BYTE 3, >> SEQUENCE [13] >> OBJECT ID [9] 1.2.840.113549.1.1.11 (SHA256withRSA) >> NULL >> SEQUENCE [76] >> SET [11] >> SEQUENCE [9] >> OBJECT ID [3] 2.5.4.6 (CountryName) >> 'IN' >> ... >> SET [16] >> SEQUENCE [14] >> OBJECT ID [3] 2.5.4.3 (CommonName) >> Client1 >> SEQUENCE [30] >> UTCTIME [13] '150526221718Z' >> UTCTIME [13] '250523221718Z' >> ... >> SEQUENCE [290] >> SEQUENCE [13] >> OBJECT ID [9] 1.2.840.113549.1.1.1 (RSA) >> NULL >> BIT STRING [271] >> CONTEXT cons 3 [123] >> SEQUENCE [121] >> SEQUENCE [9] >> OBJECT ID [3] 2.5.29.19 (BasicConstraints) >> OCTET STRING [2] <Unprintable> >> SEQUENCE [44] >> OBJECT ID [9] 2.16.840.1.113730.1.13 >> OCTET STRING [31] '..OpenSSL Generated Certificate' >> SEQUENCE [29] >> OBJECT ID [3] 2.5.29.14 (SubjectKeyID) >> OCTET STRING [22] <Unprintable> >> SEQUENCE [31] >> OBJECT ID [3] 2.5.29.35 (AuthorityKeyID) >> OCTET STRING [24] <Unprintable> >> SEQUENCE [13] >> OBJECT ID [9] 1.2.840.113549.1.1.11 (SHA256withRSA) >> NULL >> BIT STRING [257] >> When used with the HexPrinter test utility, the formatting of the >> hexadecimal values is selected with the parameters to HexPrinter. >> >> 0000: 30 82 03 8e ; SEQUENCE [910] >> 0004: 30 82 02 76 ; SEQUENCE [630] >> 0008: a0 03 ; CONTEXT cons >> 0 [3] >> 000a: 02 01 02 ; BYTE 2, >> 000d: 02 01 03 ; BYTE 3, >> 0010: 30 0d ; SEQUENCE [13] >> 0012: 06 09 2a 86 48 86 f7 0d 01 01 0b ; OBJECT ID >> [9] 1.2.840.113549.1.1.11 (SHA256withRSA) >> 001d: 05 00 ; NULL >> 001f: 30 ; SEQUENCE [76] >> 0020: 4c ; >> 0021: 31 0b ; SET [11] >> 0023: 30 09 ; SEQUENCE >> [9] >> 0025: 06 03 55 04 06 ; OBJECT >> ID [3] 2.5.4.6 (CountryName) >> 002a: 13 02 49 4e ; 'IN' >> >> ... ... >> >> 005b: 31 10 ; SET [16] >> 005d: 30 0e ; SEQUENCE >> [14] >> 005f: 06 ; OBJECT >> ID [3] 2.5.4.3 (CommonName) >> 0060: 03 55 04 03 ; >> 0064: 0c 07 43 6c 69 65 6e 74 31 ; Client1 >> 006d: 30 1e ; SEQUENCE [30] >> 006f: 17 ; UTCTIME >> [13] '150526221718Z' >> 0070: 0d 31 35 30 35 32 36 32 32 31 37 31 38 5a ; >> 007e: 17 0d ; UTCTIME >> [13] '250523221718Z' >> 0080: 32 35 30 35 32 33 32 32 31 37 31 38 5a ; >> >> ... ... >> >> 00db: 30 82 01 22 ; SEQUENCE >> [290] >> 00df: 30 ; SEQUENCE >> [13] >> 00e0: 0d ; >> 00e1: 06 09 2a 86 48 86 f7 0d 01 01 01 ; OBJECT >> ID [9] 1.2.840.113549.1.1.1 (RSA) >> 00ec: 05 00 ; NULL >> 00ee: 03 82 ; BIT STRING >> [271] >> 00f0: 01 0f 00 30 82 01 0a 02 82 01 01 00 d8 70 03 54 ; >> >> ... >> >> 01f0: 0a 2d f5 de 59 3e d9 5e 74 93 d2 45 02 03 01 00 ; >> 0200: 01 ; >> 0201: a3 7b ; CONTEXT >> cons 3 [123] >> 0203: 30 79 ; SEQUENCE >> [121] >> 0205: 30 09 ; >> SEQUENCE [9] >> 0207: 06 03 55 1d 13 ; >> OBJECT ID [3] 2.5.29.19 (BasicConstraints) >> 020c: 04 02 30 00 ; >> OCTET STRING [2] <Unprintable> >> 0210: 30 2c ; >> SEQUENCE [44] >> 0212: 06 09 60 86 48 01 86 f8 42 01 0d ; >> OBJECT ID [9] 2.16.840.1.113730.1.13 >> 021d: 04 1f 16 ; >> OCTET STRING [31] '..OpenSSL Generated >> Certificate' 0220: 1d 4f 70 65 6e 53 53 4c 20 47 65 6e 65 72 61 74 ; >> 0230: 65 64 20 43 65 72 74 69 66 69 63 61 74 65 ; >> 023e: 30 1d ; >> SEQUENCE [29] >> 0240: 06 03 55 1d 0e ; >> OBJECT ID [3] 2.5.29.14 (SubjectKeyID) >> 0245: 04 16 04 14 87 13 66 bc 7a 4d 8e ; >> OCTET STRING [22] <Unprintable> >> 0250: 98 e7 97 fb cc 56 41 27 c8 5e 4c b2 4d ; >> 025d: 30 1f ; >> SEQUENCE [31] >> 025f: 06 ; >> OBJECT ID [3] 2.5.29.35 (AuthorityKeyID) >> 0260: 03 55 1d 23 ; >> 0264: 04 18 30 16 80 14 1f 21 4f db 10 31 ; >> OCTET STRING [24] <Unprintable> >> 0270: d0 67 83 09 03 d3 cd fc 46 ec cf 1d 8b b4 ; >> 027e: 30 0d ; SEQUENCE >> [13] >> 0280: 06 09 2a 86 48 86 f7 0d 01 01 0b ; OBJECT >> ID [9] 1.2.840.113549.1.1.11 (SHA256withRSA) >> 028b: 05 00 ; NULL >> 028d: 03 82 01 ; BIT STRING >> [257] >> 0290: 01 00 3e 2b 5f 32 aa f0 f7 52 2b ba f3 bb 07 ee ; >> >> ... >> >> 0390: 6d 94 ; > > Roger Riggs has updated the pull request incrementally with one additional > commit since the last revision: > > Corrected reading of extended length bytes, depth of indefinite length > tag-values, added test for indefinite length LGTM. ------------- Marked as reviewed by weijun (Reviewer). PR: https://git.openjdk.java.net/jdk/pull/268