From 1589a81945d37cff628010cf78db7365a17edd2a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 28 Dec 2022 21:59:38 -0800 Subject: [PATCH] fix issue with text serial numbers in certificates --- docs/parsers/x509_cert.md | 9 +++++-- jc/parsers/x509_cert.py | 23 +++++++++++++++--- man/jc.1 | 2 +- tests/fixtures/generic/x509-ca-cert.json | 2 +- tests/fixtures/generic/x509-cert-and-key.json | 2 +- tests/fixtures/generic/x509-letsencrypt.json | 2 +- tests/fixtures/generic/x509-multi-cert.json | 2 +- .../generic/x509-string-serialnumber.der | Bin 0 -> 524 bytes .../generic/x509-string-serialnumber.json | 1 + tests/test_x509_cert.py | 14 ++++++++++- 10 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 tests/fixtures/generic/x509-string-serialnumber.der create mode 100644 tests/fixtures/generic/x509-string-serialnumber.json diff --git a/docs/parsers/x509_cert.md b/docs/parsers/x509_cert.md index e5208d85..960da82b 100644 --- a/docs/parsers/x509_cert.md +++ b/docs/parsers/x509_cert.md @@ -32,6 +32,7 @@ Schema: "tbs_certificate": { "version": string, "serial_number": string, # [0] + "serial_number_str": string, "signature": { "algorithm": string, "parameters": string/null, @@ -43,7 +44,9 @@ Schema: "organization_name": array/string, "organizational_unit_name": array/string, "common_name": string, - "email_address": string + "email_address": string, + "serial_number": string, # [0] + "serial_number_str": string }, "validity": { "not_before": integer, # [1] @@ -58,7 +61,9 @@ Schema: "organization_name": array/string, "organizational_unit_name": array/string, "common_name": string, - "email_address": string + "email_address": string, + "serial_number": string, # [0] + "serial_number_str": string }, "subject_public_key_info": { "algorithm": { diff --git a/jc/parsers/x509_cert.py b/jc/parsers/x509_cert.py index 040e3751..0ef3ea05 100644 --- a/jc/parsers/x509_cert.py +++ b/jc/parsers/x509_cert.py @@ -27,6 +27,7 @@ Schema: "tbs_certificate": { "version": string, "serial_number": string, # [0] + "serial_number_str": string, "signature": { "algorithm": string, "parameters": string/null, @@ -38,7 +39,9 @@ Schema: "organization_name": array/string, "organizational_unit_name": array/string, "common_name": string, - "email_address": string + "email_address": string, + "serial_number": string, # [0] + "serial_number_str": string }, "validity": { "not_before": integer, # [1] @@ -53,7 +56,9 @@ Schema: "organization_name": array/string, "organizational_unit_name": array/string, "common_name": string, - "email_address": string + "email_address": string, + "serial_number": string, # [0] + "serial_number_str": string }, "subject_public_key_info": { "algorithm": { @@ -466,7 +471,19 @@ def _fix_objects(obj): if isinstance(obj, dict): for k, v in obj.copy().items(): if k == 'serial_number': - obj.update({k: _b2a(_i2b(v))}) + # according to the spec this field can be string or integer + if isinstance(v, int): + v_str = str(v) + v_hex = _b2a(_i2b(v)) + else: + v_str = str(v) + v_hex = _b2a(v_str.encode()) + obj.update( + { + k: v_hex, + f'{k}_str': v_str + } + ) continue if k == 'modulus': diff --git a/man/jc.1 b/man/jc.1 index 1ac0bd49..cea63963 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-12-27 1.22.4 "JSON Convert" +.TH jc 1 2022-12-28 1.22.4 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS diff --git a/tests/fixtures/generic/x509-ca-cert.json b/tests/fixtures/generic/x509-ca-cert.json index 44bc52c8..80e07910 100644 --- a/tests/fixtures/generic/x509-ca-cert.json +++ b/tests/fixtures/generic/x509-ca-cert.json @@ -1 +1 @@ -[{"tbs_certificate":{"version":"v3","serial_number":"60:01:97:b7:46:a7:ea:b4:b4:9a:d6:4b:2f:f7:90:fb","signature":{"algorithm":"sha256_rsa","parameters":null},"issuer":{"country_name":"US","organization_name":"thawte, Inc.","organizational_unit_name":["Certification Services Division","(c) 2008 thawte, Inc. - For authorized use only"],"common_name":"thawte Primary Root CA - G3"},"validity":{"not_before":1207094400,"not_after":2143324799,"not_before_iso":"2008-04-02T00:00:00+00:00","not_after_iso":"2037-12-01T23:59:59+00:00"},"subject":{"country_name":"US","organization_name":"thawte, Inc.","organizational_unit_name":["Certification Services Division","(c) 2008 thawte, Inc. - For authorized use only"],"common_name":"thawte Primary Root CA - G3"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"b2:bf:27:2c:fb:db:d8:5b:dd:78:7b:1b:9e:77:66:81:cb:3e:bc:7c:ae:f3:a6:27:9a:34:a3:68:31:71:38:33:62:e4:f3:71:66:79:b1:a9:65:a3:a5:8b:d5:8f:60:2d:3f:42:cc:aa:6b:32:c0:23:cb:2c:41:dd:e4:df:fc:61:9c:e2:73:b2:22:95:11:43:18:5f:c4:b6:1f:57:6c:0a:05:58:22:c8:36:4c:3a:7c:a5:d1:cf:86:af:88:a7:44:02:13:74:71:73:0a:42:59:02:f8:1b:14:6b:42:df:6f:5f:ba:6b:82:a2:9d:5b:e7:4a:bd:1e:01:72:db:4b:74:e8:3b:7f:7f:7d:1f:04:b4:26:9b:e0:b4:5a:ac:47:3d:55:b8:d7:b0:26:52:28:01:31:40:66:d8:d9:24:bd:f6:2a:d8:ec:21:49:5c:9b:f6:7a:e9:7f:55:35:7e:96:6b:8d:93:93:27:cb:92:bb:ea:ac:40:c0:9f:c2:f8:80:cf:5d:f4:5a:dc:ce:74:86:a6:3e:6c:0b:53:ca:bd:92:ce:19:06:72:e6:0c:5c:38:69:c7:04:d6:bc:6c:ce:5b:f6:f7:68:9c:dc:25:15:48:88:a1:e9:a9:f8:98:9c:e0:f3:d5:31:28:61:11:6c:67:96:8d:39:99:cb:c2:45:24:39","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":true,"extn_value":{"ca":true,"path_len_constraint":null}},{"extn_id":"key_usage","critical":true,"extn_value":["crl_sign","key_cert_sign"]},{"extn_id":"key_identifier","critical":false,"extn_value":"ad:6c:aa:94:60:9c:ed:e4:ff:fa:3e:0a:74:2b:63:03:f7:b6:59:bf"}]},"signature_algorithm":{"algorithm":"sha256_rsa","parameters":null},"signature_value":"1a:40:d8:95:65:ac:09:92:89:c6:39:f4:10:e5:a9:0e:66:53:5d:78:de:fa:24:91:bb:e7:44:51:df:c6:16:34:0a:ef:6a:44:51:ea:2b:07:8a:03:7a:c3:eb:3f:0a:2c:52:16:a0:2b:43:b9:25:90:3f:70:a9:33:25:6d:45:1a:28:3b:27:cf:aa:c3:29:42:1b:df:3b:4c:c0:33:34:5b:41:88:bf:6b:2b:65:af:28:ef:b2:f5:c3:aa:66:ce:7b:56:ee:b7:c8:cb:67:c1:c9:9c:1a:18:b8:c4:c3:49:03:f1:60:0e:50:cd:46:c5:f3:77:79:f7:b6:15:e0:38:db:c7:2f:28:a0:0c:3f:77:26:74:d9:25:12:da:31:da:1a:1e:dc:29:41:91:22:3c:69:a7:bb:02:f2:b6:5c:27:03:89:f4:06:ea:9b:e4:72:82:e3:a1:09:c1:e9:00:19:d3:3e:d4:70:6b:ba:71:a6:aa:58:ae:f4:bb:e9:6c:b6:ef:87:cc:9b:bb:ff:39:e6:56:61:d3:0a:a7:c4:5c:4c:60:7b:05:77:26:7a:bf:d8:07:52:2c:62:f7:70:63:d9:39:bc:6f:1c:c2:79:dc:76:29:af:ce:c5:2c:64:04:5e:88:36:6e:31:d4:40:1a:62:34:36:3f:35:01:ae:ac:63:a0"}] +[{"tbs_certificate":{"version":"v3","serial_number":"60:01:97:b7:46:a7:ea:b4:b4:9a:d6:4b:2f:f7:90:fb","signature":{"algorithm":"sha256_rsa","parameters":null},"issuer":{"country_name":"US","organization_name":"thawte, Inc.","organizational_unit_name":["Certification Services Division","(c) 2008 thawte, Inc. - For authorized use only"],"common_name":"thawte Primary Root CA - G3"},"validity":{"not_before":1207094400,"not_after":2143324799,"not_before_iso":"2008-04-02T00:00:00+00:00","not_after_iso":"2037-12-01T23:59:59+00:00"},"subject":{"country_name":"US","organization_name":"thawte, Inc.","organizational_unit_name":["Certification Services Division","(c) 2008 thawte, Inc. - For authorized use only"],"common_name":"thawte Primary Root CA - G3"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"b2:bf:27:2c:fb:db:d8:5b:dd:78:7b:1b:9e:77:66:81:cb:3e:bc:7c:ae:f3:a6:27:9a:34:a3:68:31:71:38:33:62:e4:f3:71:66:79:b1:a9:65:a3:a5:8b:d5:8f:60:2d:3f:42:cc:aa:6b:32:c0:23:cb:2c:41:dd:e4:df:fc:61:9c:e2:73:b2:22:95:11:43:18:5f:c4:b6:1f:57:6c:0a:05:58:22:c8:36:4c:3a:7c:a5:d1:cf:86:af:88:a7:44:02:13:74:71:73:0a:42:59:02:f8:1b:14:6b:42:df:6f:5f:ba:6b:82:a2:9d:5b:e7:4a:bd:1e:01:72:db:4b:74:e8:3b:7f:7f:7d:1f:04:b4:26:9b:e0:b4:5a:ac:47:3d:55:b8:d7:b0:26:52:28:01:31:40:66:d8:d9:24:bd:f6:2a:d8:ec:21:49:5c:9b:f6:7a:e9:7f:55:35:7e:96:6b:8d:93:93:27:cb:92:bb:ea:ac:40:c0:9f:c2:f8:80:cf:5d:f4:5a:dc:ce:74:86:a6:3e:6c:0b:53:ca:bd:92:ce:19:06:72:e6:0c:5c:38:69:c7:04:d6:bc:6c:ce:5b:f6:f7:68:9c:dc:25:15:48:88:a1:e9:a9:f8:98:9c:e0:f3:d5:31:28:61:11:6c:67:96:8d:39:99:cb:c2:45:24:39","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":true,"extn_value":{"ca":true,"path_len_constraint":null}},{"extn_id":"key_usage","critical":true,"extn_value":["crl_sign","key_cert_sign"]},{"extn_id":"key_identifier","critical":false,"extn_value":"ad:6c:aa:94:60:9c:ed:e4:ff:fa:3e:0a:74:2b:63:03:f7:b6:59:bf"}],"serial_number_str":"127614157056681299805556476275995414779"},"signature_algorithm":{"algorithm":"sha256_rsa","parameters":null},"signature_value":"1a:40:d8:95:65:ac:09:92:89:c6:39:f4:10:e5:a9:0e:66:53:5d:78:de:fa:24:91:bb:e7:44:51:df:c6:16:34:0a:ef:6a:44:51:ea:2b:07:8a:03:7a:c3:eb:3f:0a:2c:52:16:a0:2b:43:b9:25:90:3f:70:a9:33:25:6d:45:1a:28:3b:27:cf:aa:c3:29:42:1b:df:3b:4c:c0:33:34:5b:41:88:bf:6b:2b:65:af:28:ef:b2:f5:c3:aa:66:ce:7b:56:ee:b7:c8:cb:67:c1:c9:9c:1a:18:b8:c4:c3:49:03:f1:60:0e:50:cd:46:c5:f3:77:79:f7:b6:15:e0:38:db:c7:2f:28:a0:0c:3f:77:26:74:d9:25:12:da:31:da:1a:1e:dc:29:41:91:22:3c:69:a7:bb:02:f2:b6:5c:27:03:89:f4:06:ea:9b:e4:72:82:e3:a1:09:c1:e9:00:19:d3:3e:d4:70:6b:ba:71:a6:aa:58:ae:f4:bb:e9:6c:b6:ef:87:cc:9b:bb:ff:39:e6:56:61:d3:0a:a7:c4:5c:4c:60:7b:05:77:26:7a:bf:d8:07:52:2c:62:f7:70:63:d9:39:bc:6f:1c:c2:79:dc:76:29:af:ce:c5:2c:64:04:5e:88:36:6e:31:d4:40:1a:62:34:36:3f:35:01:ae:ac:63:a0"}] diff --git a/tests/fixtures/generic/x509-cert-and-key.json b/tests/fixtures/generic/x509-cert-and-key.json index 5adcba84..5a18ec6c 100644 --- a/tests/fixtures/generic/x509-cert-and-key.json +++ b/tests/fixtures/generic/x509-cert-and-key.json @@ -1 +1 @@ -[{"tbs_certificate":{"version":"v3","serial_number":"f7:f9:4e:5f:30:7d:ba:c6","signature":{"algorithm":"sha256_rsa","parameters":null},"issuer":{"country_name":"US","state_or_province_name":"California","locality_name":"San Francisco","organization_name":"BadSSL","common_name":"BadSSL Client Root Certificate Authority"},"validity":{"not_before":1652822124,"not_after":1715894124,"not_before_iso":"2022-05-17T21:15:24+00:00","not_after_iso":"2024-05-16T21:15:24+00:00"},"subject":{"country_name":"US","state_or_province_name":"California","locality_name":"San Francisco","organization_name":"BadSSL","common_name":"BadSSL Client Certificate"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"c7:37:5f:11:eb:1e:4e:cf:eb:ba:48:e5:cb:a3:12:2c:73:3e:46:1d:1e:9c:0d:c0:8b:83:23:da:c7:65:df:5c:77:49:b3:e8:7a:7d:3c:ba:d5:61:8c:f9:a5:c4:85:1d:92:23:06:e3:e7:df:7b:b3:7e:26:d0:cb:1b:be:42:6b:16:69:f4:2c:72:b5:7e:e4:cb:0a:28:44:12:6c:46:74:21:99:03:dc:6b:c3:11:58:02:41:23:3f:b0:fc:bf:b7:00:59:13:22:a5:81:7f:24:fe:d5:53:bc:4d:52:8f:90:4a:46:74:b0:e8:bd:93:a6:cd:90:00:4a:2f:7f:b2:3f:a3:ea:03:3b:01:a0:a2:0d:e6:53:7f:61:12:eb:a6:9b:03:9a:4e:a7:ad:10:e8:e1:1d:c2:0f:ef:09:42:5f:6a:b8:4a:0e:98:bd:b6:3d:cf:ea:a4:e8:cb:d6:38:0e:20:54:84:e7:2d:e0:c1:bc:c3:95:f0:98:a0:02:f9:57:e6:f2:d6:fb:b4:c8:94:a1:4d:32:bc:a2:8e:70:be:98:5c:15:f1:07:69:0f:70:e6:31:60:da:1b:5d:ab:df:54:11:1d:c1:2a:e3:43:b8:bf:b3:7a:3a:86:41:90:96:6f:45:ec:93:c4:b9:58:1b:97:f2:5d:c1:ae:b8:39:82:2a:8d","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"netscape_certificate_type","critical":false,"extn_value":["ssl_client"]},{"extn_id":"key_usage","critical":false,"extn_value":["digital_signature","key_encipherment","non_repudiation"]}]},"signature_algorithm":{"algorithm":"sha256_rsa","parameters":null},"signature_value":"52:34:ca:43:bc:95:21:c5:fa:1d:bd:0c:3b:94:3f:d6:c0:96:ae:3e:7b:61:86:a6:da:94:80:cd:4a:13:2c:e7:11:7d:13:af:0b:c6:63:a9:54:b8:4d:f9:c9:3f:1e:0d:74:ee:db:c9:bf:04:7b:48:6e:18:93:cf:2c:3c:e9:bf:35:48:e0:03:34:1e:11:6c:30:f2:5a:4a:49:f5:d5:54:2d:69:79:c9:a3:bc:a5:73:ea:43:0a:ac:bc:79:09:12:14:40:43:16:95:c5:65:f1:67:f0:6c:b1:33:60:f5:a1:23:68:e6:47:94:52:ef:44:85:85:92:9b:54:ba:61:aa:45:c1:0f:0d:38:6a:4a:f0:47:9d:cf:b3:7e:1c:e1:45:7e:b3:53:54:78:ed:96:7d:89:66:86:49:f6:cd:de:3a:df:69:88:a3:41:1f:7d:60:63:c1:6c:b3:f8:a0:f0:1b:5f:94:d9:a2:19:ee:15:68:06:4f:50:1c:f4:83:f1:9f:13:64:db:47:a0:cc:5b:19:f6:8b:f6:b2:bf:b9:39:16:d9:e6:19:0f:ce:c2:10:15:ea:58:06:58:0c:04:7a:5a:2b:ae:a1:f3:3f:6e:2f:9c:56:0c:7c:85:c2:7f:d0:17:fb:ab:c4:1d:42:fb:fc:4b:96:ff:3c:30:d2:d6:9d:ae:09:25:2c:b6:cc:43:51:df:4b:3e:78:f2:d8:bc:34:b9:81:6d:f2:3a:38:12:4d:64:25:32:e8:a8:8b:e5:5b:24:3a:9e:a5:67:29:3c:34:57:34:c0:b2:b2:6e:80:b5:96:0e:69:7f:fb:e0:f0:36:98:2d:93:fd:1c:2f:28:30:c9:31:9b:3a:3f:48:bb:fd:e8:83:40:59:05:64:74:35:d7:5e:17:b1:6f:5a:ab:63:24:8f:d0:51:58:c8:2c:ab:a8:84:aa:44:b2:13:09:51:26:3b:6e:35:7d:85:41:45:24:54:a9:92:7f:8f:d6:e9:20:03:06:45:64:d6:58:f3:d1:7e:01:7e:16:0b:45:e1:b9:a1:e3:2c:43:ff:1c:9a:aa:e4:c7:82:cb:80:86:d7:3f:17:2c:96:31:93:1b:d4:41:64:24:c0:36:6e:14:b9:ed:eb:da:6d:48:52:1f:31:c1:11:c0:69:71:e0:04:97:11:4f:a4:c6:fc:3a:69:93:b9:02:0a:e0:d2:6b:9e:88:0e:69:1a:e0:fd:17:37:80:01:f4:d0:27:c3:01:f4:64:c5:fc:44:ca:d7:e9:75:55:be:61:fd:5d:7c:ee:47:1d:5b:f6:15:d8:5e:00:dd:23:b3:fa:95:f4:61:79:04:6a:b6:82:97:6c:ab:be:78:c1:8d"}] +[{"tbs_certificate":{"version":"v3","serial_number":"f7:f9:4e:5f:30:7d:ba:c6","signature":{"algorithm":"sha256_rsa","parameters":null},"issuer":{"country_name":"US","state_or_province_name":"California","locality_name":"San Francisco","organization_name":"BadSSL","common_name":"BadSSL Client Root Certificate Authority"},"validity":{"not_before":1652822124,"not_after":1715894124,"not_before_iso":"2022-05-17T21:15:24+00:00","not_after_iso":"2024-05-16T21:15:24+00:00"},"subject":{"country_name":"US","state_or_province_name":"California","locality_name":"San Francisco","organization_name":"BadSSL","common_name":"BadSSL Client Certificate"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"c7:37:5f:11:eb:1e:4e:cf:eb:ba:48:e5:cb:a3:12:2c:73:3e:46:1d:1e:9c:0d:c0:8b:83:23:da:c7:65:df:5c:77:49:b3:e8:7a:7d:3c:ba:d5:61:8c:f9:a5:c4:85:1d:92:23:06:e3:e7:df:7b:b3:7e:26:d0:cb:1b:be:42:6b:16:69:f4:2c:72:b5:7e:e4:cb:0a:28:44:12:6c:46:74:21:99:03:dc:6b:c3:11:58:02:41:23:3f:b0:fc:bf:b7:00:59:13:22:a5:81:7f:24:fe:d5:53:bc:4d:52:8f:90:4a:46:74:b0:e8:bd:93:a6:cd:90:00:4a:2f:7f:b2:3f:a3:ea:03:3b:01:a0:a2:0d:e6:53:7f:61:12:eb:a6:9b:03:9a:4e:a7:ad:10:e8:e1:1d:c2:0f:ef:09:42:5f:6a:b8:4a:0e:98:bd:b6:3d:cf:ea:a4:e8:cb:d6:38:0e:20:54:84:e7:2d:e0:c1:bc:c3:95:f0:98:a0:02:f9:57:e6:f2:d6:fb:b4:c8:94:a1:4d:32:bc:a2:8e:70:be:98:5c:15:f1:07:69:0f:70:e6:31:60:da:1b:5d:ab:df:54:11:1d:c1:2a:e3:43:b8:bf:b3:7a:3a:86:41:90:96:6f:45:ec:93:c4:b9:58:1b:97:f2:5d:c1:ae:b8:39:82:2a:8d","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"netscape_certificate_type","critical":false,"extn_value":["ssl_client"]},{"extn_id":"key_usage","critical":false,"extn_value":["digital_signature","key_encipherment","non_repudiation"]}],"serial_number_str":"17868399167311559366"},"signature_algorithm":{"algorithm":"sha256_rsa","parameters":null},"signature_value":"52:34:ca:43:bc:95:21:c5:fa:1d:bd:0c:3b:94:3f:d6:c0:96:ae:3e:7b:61:86:a6:da:94:80:cd:4a:13:2c:e7:11:7d:13:af:0b:c6:63:a9:54:b8:4d:f9:c9:3f:1e:0d:74:ee:db:c9:bf:04:7b:48:6e:18:93:cf:2c:3c:e9:bf:35:48:e0:03:34:1e:11:6c:30:f2:5a:4a:49:f5:d5:54:2d:69:79:c9:a3:bc:a5:73:ea:43:0a:ac:bc:79:09:12:14:40:43:16:95:c5:65:f1:67:f0:6c:b1:33:60:f5:a1:23:68:e6:47:94:52:ef:44:85:85:92:9b:54:ba:61:aa:45:c1:0f:0d:38:6a:4a:f0:47:9d:cf:b3:7e:1c:e1:45:7e:b3:53:54:78:ed:96:7d:89:66:86:49:f6:cd:de:3a:df:69:88:a3:41:1f:7d:60:63:c1:6c:b3:f8:a0:f0:1b:5f:94:d9:a2:19:ee:15:68:06:4f:50:1c:f4:83:f1:9f:13:64:db:47:a0:cc:5b:19:f6:8b:f6:b2:bf:b9:39:16:d9:e6:19:0f:ce:c2:10:15:ea:58:06:58:0c:04:7a:5a:2b:ae:a1:f3:3f:6e:2f:9c:56:0c:7c:85:c2:7f:d0:17:fb:ab:c4:1d:42:fb:fc:4b:96:ff:3c:30:d2:d6:9d:ae:09:25:2c:b6:cc:43:51:df:4b:3e:78:f2:d8:bc:34:b9:81:6d:f2:3a:38:12:4d:64:25:32:e8:a8:8b:e5:5b:24:3a:9e:a5:67:29:3c:34:57:34:c0:b2:b2:6e:80:b5:96:0e:69:7f:fb:e0:f0:36:98:2d:93:fd:1c:2f:28:30:c9:31:9b:3a:3f:48:bb:fd:e8:83:40:59:05:64:74:35:d7:5e:17:b1:6f:5a:ab:63:24:8f:d0:51:58:c8:2c:ab:a8:84:aa:44:b2:13:09:51:26:3b:6e:35:7d:85:41:45:24:54:a9:92:7f:8f:d6:e9:20:03:06:45:64:d6:58:f3:d1:7e:01:7e:16:0b:45:e1:b9:a1:e3:2c:43:ff:1c:9a:aa:e4:c7:82:cb:80:86:d7:3f:17:2c:96:31:93:1b:d4:41:64:24:c0:36:6e:14:b9:ed:eb:da:6d:48:52:1f:31:c1:11:c0:69:71:e0:04:97:11:4f:a4:c6:fc:3a:69:93:b9:02:0a:e0:d2:6b:9e:88:0e:69:1a:e0:fd:17:37:80:01:f4:d0:27:c3:01:f4:64:c5:fc:44:ca:d7:e9:75:55:be:61:fd:5d:7c:ee:47:1d:5b:f6:15:d8:5e:00:dd:23:b3:fa:95:f4:61:79:04:6a:b6:82:97:6c:ab:be:78:c1:8d"}] diff --git a/tests/fixtures/generic/x509-letsencrypt.json b/tests/fixtures/generic/x509-letsencrypt.json index b2d3265b..92dd9456 100644 --- a/tests/fixtures/generic/x509-letsencrypt.json +++ b/tests/fixtures/generic/x509-letsencrypt.json @@ -1 +1 @@ -[{"tbs_certificate":{"version":"v3","serial_number":"04:c1:47:a5:16:71:a8:ad:84:6f:e5:cf:ec:ca:42:cc:c2:ad","signature":{"algorithm":"sha256_rsa","parameters":null},"issuer":{"country_name":"US","organization_name":"Let's Encrypt","common_name":"R3"},"validity":{"not_before":1655260836,"not_after":1663036835,"not_before_iso":"2022-06-15T02:40:36+00:00","not_after_iso":"2022-09-13T02:40:35+00:00"},"subject":{"common_name":"tls.automattic.com"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"c2:4b:45:fe:e7:f1:ec:68:7c:dd:e5:9b:b6:2d:2b:31:dd:5c:9f:d4:4f:07:19:d7:d6:c5:6a:6b:44:38:ec:e7:c5:88:ff:88:f2:75:46:ef:10:e5:28:9d:2d:cf:3f:60:d1:65:b9:69:44:9b:59:99:fb:8b:00:cd:71:88:87:0a:30:2a:17:bf:5d:97:e1:c0:56:98:ad:87:c5:00:9e:c6:bd:25:78:de:9e:d7:ee:53:5a:9f:16:23:51:5e:f3:a8:09:42:70:d1:2d:6f:11:6e:94:7e:db:1d:45:fc:0a:0d:f9:e5:a2:87:33:f4:71:d2:39:e5:22:22:9b:86:31:97:b5:3d:d1:35:68:a2:8d:75:2e:4c:ae:14:2b:51:cd:90:cf:d6:43:d4:49:80:3f:42:ab:1f:21:37:05:1e:ea:08:0d:e0:4d:e0:b6:cc:48:bb:f4:7e:8e:e9:0d:3a:02:85:89:ae:d0:f4:9a:f7:85:6b:0d:58:c9:1f:a6:db:ac:0c:d5:3d:62:b8:45:a8:77:31:3f:51:c6:84:dc:fe:1c:d8:b5:a3:93:2e:78:9d:e4:fe:72:7a:81:e9:6f:26:fe:4c:61:3a:55:6d:bd:f8:4a:38:68:5e:97:e3:36:c3:d6:bc:31:2b:c7:c8:ad:ee:64:56:3f:0f:ea:4b:f9:a5:b1:6b","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"key_usage","critical":true,"extn_value":["digital_signature","key_encipherment"]},{"extn_id":"extended_key_usage","critical":false,"extn_value":["server_auth","client_auth"]},{"extn_id":"basic_constraints","critical":true,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"key_identifier","critical":false,"extn_value":"63:cf:50:5f:d2:3e:a0:75:61:86:d9:60:1b:ec:d9:d8:dd:c7:30:5a"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"14:2e:b3:17:b7:58:56:cb:ae:50:09:40:e6:1f:af:9d:8b:14:c2:c6","authority_cert_issuer":null,"authority_cert_serial_number":null}},{"extn_id":"authority_information_access","critical":false,"extn_value":[{"access_method":"ocsp","access_location":"http://r3.o.lencr.org"},{"access_method":"ca_issuers","access_location":"http://r3.i.lencr.org/"}]},{"extn_id":"subject_alt_name","critical":false,"extn_value":["baffl.ca","blog.kellybrazil.com","bro-pa.org","competence.game.blog","dirtyroulette366.game.blog","giftsbypearl.com","giuman.me","globaltransactorsltd.com","grilltimerestaurants.com","gureametsetakolorategia.com","happyluckyenjoy.blog","healthbasedbeauty.fitness.blog","healthisknowledge.com","imake3ddesigns.com","javascript.game.blog","journeyingbacktowellness.health.blog","jquery.game.blog","kahlertregionalcancer.org","karmadesignstudios.graphics","noticia.science.blog","reyvingamer.game.blog","sailingresferber.co.uk","stardust.game.blog","sweetlove.fashion.blog","tls.automattic.com","wanderlustwatts.com","www.angelguardians.legal","www.baffl.ca","www.blog.kellybrazil.com","www.bro-pa.org","www.competence.game.blog","www.dirtyroulette366.game.blog","www.giftsbypearl.com","www.giuman.me","www.globaltransactorsltd.com","www.grilltimerestaurants.com","www.gureametsetakolorategia.com","www.happyluckyenjoy.blog","www.healthbasedbeauty.fitness.blog","www.healthisknowledge.com","www.imake3ddesigns.com","www.javascript.game.blog","www.journeyingbacktowellness.health.blog","www.jquery.game.blog","www.kahlertregionalcancer.org","www.karmadesignstudios.graphics","www.reyvingamer.game.blog","www.ruplayingboard.game.blog","www.stardust.game.blog","www.sweetlove.fashion.blog"]},{"extn_id":"certificate_policies","critical":false,"extn_value":[{"policy_identifier":"2.23.140.1.2.1","policy_qualifiers":null},{"policy_identifier":"1.3.6.1.4.1.44947.1.1.1","policy_qualifiers":[{"policy_qualifier_id":"certification_practice_statement","qualifier":"http://cps.letsencrypt.org"}]}]},{"extn_id":"signed_certificate_timestamp_list","critical":false,"extn_value":"00:f0:00:76:00:46:a5:55:eb:75:fa:91:20:30:b5:a2:89:69:f4:f3:7d:11:2c:41:74:be:fd:49:b8:85:ab:f2:fc:70:fe:6d:47:00:00:01:81:65:72:e3:44:00:00:04:03:00:47:30:45:02:21:00:de:61:59:6e:de:1c:75:7c:28:d7:3e:78:80:d3:85:5f:8a:ff:93:85:8d:e3:4a:e4:f7:2f:99:1d:36:b4:c4:62:02:20:6a:cd:23:6b:f4:27:41:a4:1d:9c:95:cd:36:be:2d:24:9b:87:aa:3c:14:15:70:5f:f5:e9:fa:d1:14:dc:df:da:00:76:00:6f:53:76:ac:31:f0:31:19:d8:99:00:a4:51:15:ff:77:15:1c:11:d9:02:c1:00:29:06:8d:b2:08:9a:37:d9:13:00:00:01:81:65:72:e4:18:00:00:04:03:00:47:30:45:02:21:00:f5:40:50:bc:99:c2:e9:a2:74:7a:83:f9:ec:6b:e5:c5:89:62:5a:37:b0:0c:51:e4:1c:11:f7:8b:bb:a4:97:d9:02:20:07:35:4e:5d:41:3b:ef:83:9f:18:e0:58:60:06:63:51:22:2d:8c:82:ae:b2:5e:a7:c2:5c:f8:2d:4b:50:14:86"}]},"signature_algorithm":{"algorithm":"sha256_rsa","parameters":null},"signature_value":"a8:ad:cb:4f:b7:ec:b9:d1:c0:50:8e:dd:e1:14:93:cb:be:e5:6e:45:07:2a:eb:92:f0:be:3d:bd:0e:e6:45:c7:8d:79:3e:09:d7:40:48:d6:8a:22:43:10:39:14:11:e8:f9:b8:a5:52:32:90:0c:92:94:74:57:bf:6e:3d:b0:3f:ce:a1:06:5f:9b:e2:0a:da:5a:ff:83:4f:28:2b:ac:cb:67:03:0b:7b:86:aa:d7:60:c2:4b:6f:fd:66:bd:8d:61:d1:48:24:29:5c:43:49:4e:79:2a:8e:3a:46:3b:ce:9b:f6:e5:9f:dc:ed:c8:ad:d4:a6:ee:e3:33:af:4c:34:41:27:de:b8:d5:63:df:45:8f:a7:11:78:71:28:a7:d8:29:5f:0b:8b:e2:07:44:c9:54:be:e0:a3:77:82:2d:07:5c:f0:4e:0a:11:06:6b:dc:90:f7:df:fb:60:28:96:f0:81:dc:4d:24:a8:53:0f:e3:d0:f0:22:fa:5e:a7:eb:a9:e4:5f:d4:cc:70:b7:c5:b9:7c:4b:e9:3a:aa:1b:a8:c8:2a:b2:87:79:d5:6d:63:b4:2e:7e:d7:24:9a:fc:0d:8f:ac:04:bb:98:ce:05:ae:6f:07:0b:49:cd:d6:ad:f9:37:7d:ff:1b:fc:e6:3a:25:9b:ea:d3:b8:bb:a7:83:44:84:6d"}] +[{"tbs_certificate":{"version":"v3","serial_number":"04:c1:47:a5:16:71:a8:ad:84:6f:e5:cf:ec:ca:42:cc:c2:ad","signature":{"algorithm":"sha256_rsa","parameters":null},"issuer":{"country_name":"US","organization_name":"Let's Encrypt","common_name":"R3"},"validity":{"not_before":1655260836,"not_after":1663036835,"not_before_iso":"2022-06-15T02:40:36+00:00","not_after_iso":"2022-09-13T02:40:35+00:00"},"subject":{"common_name":"tls.automattic.com"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"c2:4b:45:fe:e7:f1:ec:68:7c:dd:e5:9b:b6:2d:2b:31:dd:5c:9f:d4:4f:07:19:d7:d6:c5:6a:6b:44:38:ec:e7:c5:88:ff:88:f2:75:46:ef:10:e5:28:9d:2d:cf:3f:60:d1:65:b9:69:44:9b:59:99:fb:8b:00:cd:71:88:87:0a:30:2a:17:bf:5d:97:e1:c0:56:98:ad:87:c5:00:9e:c6:bd:25:78:de:9e:d7:ee:53:5a:9f:16:23:51:5e:f3:a8:09:42:70:d1:2d:6f:11:6e:94:7e:db:1d:45:fc:0a:0d:f9:e5:a2:87:33:f4:71:d2:39:e5:22:22:9b:86:31:97:b5:3d:d1:35:68:a2:8d:75:2e:4c:ae:14:2b:51:cd:90:cf:d6:43:d4:49:80:3f:42:ab:1f:21:37:05:1e:ea:08:0d:e0:4d:e0:b6:cc:48:bb:f4:7e:8e:e9:0d:3a:02:85:89:ae:d0:f4:9a:f7:85:6b:0d:58:c9:1f:a6:db:ac:0c:d5:3d:62:b8:45:a8:77:31:3f:51:c6:84:dc:fe:1c:d8:b5:a3:93:2e:78:9d:e4:fe:72:7a:81:e9:6f:26:fe:4c:61:3a:55:6d:bd:f8:4a:38:68:5e:97:e3:36:c3:d6:bc:31:2b:c7:c8:ad:ee:64:56:3f:0f:ea:4b:f9:a5:b1:6b","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"key_usage","critical":true,"extn_value":["digital_signature","key_encipherment"]},{"extn_id":"extended_key_usage","critical":false,"extn_value":["server_auth","client_auth"]},{"extn_id":"basic_constraints","critical":true,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"key_identifier","critical":false,"extn_value":"63:cf:50:5f:d2:3e:a0:75:61:86:d9:60:1b:ec:d9:d8:dd:c7:30:5a"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"14:2e:b3:17:b7:58:56:cb:ae:50:09:40:e6:1f:af:9d:8b:14:c2:c6","authority_cert_issuer":null,"authority_cert_serial_number":null}},{"extn_id":"authority_information_access","critical":false,"extn_value":[{"access_method":"ocsp","access_location":"http://r3.o.lencr.org"},{"access_method":"ca_issuers","access_location":"http://r3.i.lencr.org/"}]},{"extn_id":"subject_alt_name","critical":false,"extn_value":["baffl.ca","blog.kellybrazil.com","bro-pa.org","competence.game.blog","dirtyroulette366.game.blog","giftsbypearl.com","giuman.me","globaltransactorsltd.com","grilltimerestaurants.com","gureametsetakolorategia.com","happyluckyenjoy.blog","healthbasedbeauty.fitness.blog","healthisknowledge.com","imake3ddesigns.com","javascript.game.blog","journeyingbacktowellness.health.blog","jquery.game.blog","kahlertregionalcancer.org","karmadesignstudios.graphics","noticia.science.blog","reyvingamer.game.blog","sailingresferber.co.uk","stardust.game.blog","sweetlove.fashion.blog","tls.automattic.com","wanderlustwatts.com","www.angelguardians.legal","www.baffl.ca","www.blog.kellybrazil.com","www.bro-pa.org","www.competence.game.blog","www.dirtyroulette366.game.blog","www.giftsbypearl.com","www.giuman.me","www.globaltransactorsltd.com","www.grilltimerestaurants.com","www.gureametsetakolorategia.com","www.happyluckyenjoy.blog","www.healthbasedbeauty.fitness.blog","www.healthisknowledge.com","www.imake3ddesigns.com","www.javascript.game.blog","www.journeyingbacktowellness.health.blog","www.jquery.game.blog","www.kahlertregionalcancer.org","www.karmadesignstudios.graphics","www.reyvingamer.game.blog","www.ruplayingboard.game.blog","www.stardust.game.blog","www.sweetlove.fashion.blog"]},{"extn_id":"certificate_policies","critical":false,"extn_value":[{"policy_identifier":"2.23.140.1.2.1","policy_qualifiers":null},{"policy_identifier":"1.3.6.1.4.1.44947.1.1.1","policy_qualifiers":[{"policy_qualifier_id":"certification_practice_statement","qualifier":"http://cps.letsencrypt.org"}]}]},{"extn_id":"signed_certificate_timestamp_list","critical":false,"extn_value":"00:f0:00:76:00:46:a5:55:eb:75:fa:91:20:30:b5:a2:89:69:f4:f3:7d:11:2c:41:74:be:fd:49:b8:85:ab:f2:fc:70:fe:6d:47:00:00:01:81:65:72:e3:44:00:00:04:03:00:47:30:45:02:21:00:de:61:59:6e:de:1c:75:7c:28:d7:3e:78:80:d3:85:5f:8a:ff:93:85:8d:e3:4a:e4:f7:2f:99:1d:36:b4:c4:62:02:20:6a:cd:23:6b:f4:27:41:a4:1d:9c:95:cd:36:be:2d:24:9b:87:aa:3c:14:15:70:5f:f5:e9:fa:d1:14:dc:df:da:00:76:00:6f:53:76:ac:31:f0:31:19:d8:99:00:a4:51:15:ff:77:15:1c:11:d9:02:c1:00:29:06:8d:b2:08:9a:37:d9:13:00:00:01:81:65:72:e4:18:00:00:04:03:00:47:30:45:02:21:00:f5:40:50:bc:99:c2:e9:a2:74:7a:83:f9:ec:6b:e5:c5:89:62:5a:37:b0:0c:51:e4:1c:11:f7:8b:bb:a4:97:d9:02:20:07:35:4e:5d:41:3b:ef:83:9f:18:e0:58:60:06:63:51:22:2d:8c:82:ae:b2:5e:a7:c2:5c:f8:2d:4b:50:14:86"}],"serial_number_str":"414218872914682494204143697900622362493613"},"signature_algorithm":{"algorithm":"sha256_rsa","parameters":null},"signature_value":"a8:ad:cb:4f:b7:ec:b9:d1:c0:50:8e:dd:e1:14:93:cb:be:e5:6e:45:07:2a:eb:92:f0:be:3d:bd:0e:e6:45:c7:8d:79:3e:09:d7:40:48:d6:8a:22:43:10:39:14:11:e8:f9:b8:a5:52:32:90:0c:92:94:74:57:bf:6e:3d:b0:3f:ce:a1:06:5f:9b:e2:0a:da:5a:ff:83:4f:28:2b:ac:cb:67:03:0b:7b:86:aa:d7:60:c2:4b:6f:fd:66:bd:8d:61:d1:48:24:29:5c:43:49:4e:79:2a:8e:3a:46:3b:ce:9b:f6:e5:9f:dc:ed:c8:ad:d4:a6:ee:e3:33:af:4c:34:41:27:de:b8:d5:63:df:45:8f:a7:11:78:71:28:a7:d8:29:5f:0b:8b:e2:07:44:c9:54:be:e0:a3:77:82:2d:07:5c:f0:4e:0a:11:06:6b:dc:90:f7:df:fb:60:28:96:f0:81:dc:4d:24:a8:53:0f:e3:d0:f0:22:fa:5e:a7:eb:a9:e4:5f:d4:cc:70:b7:c5:b9:7c:4b:e9:3a:aa:1b:a8:c8:2a:b2:87:79:d5:6d:63:b4:2e:7e:d7:24:9a:fc:0d:8f:ac:04:bb:98:ce:05:ae:6f:07:0b:49:cd:d6:ad:f9:37:7d:ff:1b:fc:e6:3a:25:9b:ea:d3:b8:bb:a7:83:44:84:6d"}] diff --git a/tests/fixtures/generic/x509-multi-cert.json b/tests/fixtures/generic/x509-multi-cert.json index c78efc70..9eac0a10 100644 --- a/tests/fixtures/generic/x509-multi-cert.json +++ b/tests/fixtures/generic/x509-multi-cert.json @@ -1 +1 @@ -[{"tbs_certificate":{"version":"v3","serial_number":"01","signature":{"algorithm":"sha1_rsa","parameters":null},"issuer":{"country_name":"FR","state_or_province_name":"Alsace","locality_name":"Strasbourg","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"Freelan Sample Certificate Authority","email_address":"contact@freelan.org"},"validity":{"not_before":1335522678,"not_after":1650882678,"not_before_iso":"2012-04-27T10:31:18+00:00","not_after_iso":"2022-04-25T10:31:18+00:00"},"subject":{"country_name":"FR","state_or_province_name":"Alsace","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"alice","email_address":"contact@freelan.org"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"dd:6d:bd:f8:80:fa:d7:de:1b:1f:a7:a3:2e:b2:02:e2:16:f6:52:0a:3c:bf:a6:42:f8:ca:dc:93:67:4d:60:c3:4f:8d:c3:8a:00:1b:f1:c4:4b:41:6a:69:d2:69:e5:3f:21:8e:c5:0b:f8:22:37:ad:b6:2c:4b:55:ff:7a:03:72:bb:9a:d3:ec:96:b9:56:9f:cb:19:99:c9:32:94:6f:8f:c6:52:06:9f:45:03:df:fd:e8:97:f6:ea:d6:ba:bb:48:2b:b5:e0:34:61:4d:52:36:0f:ab:87:52:25:03:cf:87:00:87:13:f2:ca:03:29:16:9d:90:57:46:b5:f4:0e:ae:17:c8:0a:4d:92:ed:08:a6:32:23:11:71:fe:f2:2c:44:d7:6c:07:f3:0b:7b:0c:4b:dd:3b:b4:f7:37:70:9f:51:b6:88:4e:5d:6a:05:7f:8d:9b:66:7a:ab:80:20:fe:ee:6b:97:c3:49:7d:78:3b:d5:99:97:03:75:ce:8f:bc:c5:be:9c:9a:a5:12:19:70:f9:a4:bd:96:27:ed:23:02:a7:c7:57:c9:71:cf:76:94:a2:21:62:f6:b8:1d:ca:88:ee:09:ad:46:2f:b7:61:b3:2c:15:13:86:9f:a5:35:26:5a:67:f4:37:c8:e6:80:01:49:0e:c7:ed:61:d3:cd:bc:e4:f8:be:3f:c9:4e:f8:7d:97:89:ce:12:bc:ca:b5:c6:d2:e0:d9:b3:68:3c:2e:4a:9d:b4:5f:b8:53:ee:50:3d:bf:dd:d4:a2:8a:b6:a0:27:ab:98:0c:b3:b2:58:90:e2:bc:a1:ad:ff:bd:8e:55:31:0f:00:bf:68:e9:3d:a9:19:9a:f0:6d:0b:a2:14:6a:c6:4c:c6:4e:bd:63:12:a5:0b:4d:97:eb:42:09:79:53:e2:65:aa:24:34:70:b8:c1:ab:23:80:e7:9c:6c:ed:dc:82:aa:37:04:b8:43:2a:3d:2a:a8:cc:20:fc:27:5d:90:26:58:f9:b7:14:e2:9e:e2:c1:70:73:97:e9:6b:02:8e:d3:52:59:7b:00:ec:61:30:f1:56:3f:9c:c1:7c:05:c5:b1:36:c8:18:85:cf:61:40:1f:07:e8:a7:06:87:df:9a:77:0b:a9:64:72:03:f6:93:fc:e0:02:59:c1:96:ec:c0:09:42:3e:30:a2:7f:1b:48:2f:fe:e0:21:8f:53:87:25:0d:cb:ea:49:f5:4a:9b:d0:e3:5f:ee:78:18:e5:ba:71:31:a9:04:98:0f:b1:ad:67:52:a0:f2:e3:9c:ab:6a:fe:58:84:84:dd:07:3d:32:94:05:16:45:15:96:59:a0:58:6c:18:0e:e3:77:66:c7:b3:f7:99","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"2.16.840.1.113730.1.13","critical":false,"extn_value":"16:1d:4f:70:65:6e:53:53:4c:20:47:65:6e:65:72:61:74:65:64:20:43:65:72:74:69:66:69:63:61:74:65"},{"extn_id":"key_identifier","critical":false,"extn_value":"59:5f:c9:13:ba:1b:cc:b9:a8:41:4a:8a:49:79:6a:36:f6:7d:3e:d7"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"23:6c:2d:3d:3e:29:5d:78:b8:6c:3e:aa:e2:bb:2e:1e:6c:87:f2:53","authority_cert_issuer":null,"authority_cert_serial_number":null}}]},"signature_algorithm":{"algorithm":"sha1_rsa","parameters":null},"signature_value":"13:e7:02:45:3e:a7:ab:bd:b8:da:e7:ef:74:88:ac:62:d5:dd:10:56:d5:46:07:ec:fa:6a:80:0c:b9:62:be:aa:08:b4:be:0b:eb:9a:ef:68:b7:69:6f:4d:20:92:9d:18:63:7a:23:f4:48:87:6a:14:c3:91:98:1b:4e:08:59:3f:91:80:e9:f4:cf:fd:d5:bf:af:4b:e4:bd:78:09:71:ac:d0:81:e5:53:9f:3e:ac:44:3e:9f:f0:bf:5a:c1:70:4e:06:04:ef:dc:e8:77:05:a2:7d:c5:fa:80:58:0a:c5:10:6d:90:ca:49:26:71:84:39:b7:9a:3e:e9:6f:ae:c5:35:b6:5b:24:8c:c9:ef:41:c3:b1:17:b6:3b:4e:28:89:3c:7e:87:a8:3a:a5:6d:dc:39:03:20:20:0b:c5:80:a3:79:13:1e:f6:ec:ae:36:df:40:74:34:87:46:93:3b:a3:e0:a4:8c:2f:43:4c:b2:54:80:71:76:78:d4:ea:12:28:d8:f2:e3:80:55:11:9b:f4:65:dc:53:0e:b4:4c:e0:4c:09:b4:dc:a0:80:5c:e6:b5:3b:95:d3:69:e4:52:3d:5b:61:86:02:e5:fd:0b:00:3a:fa:b3:45:cc:c9:a3:64:f2:dc:25:59:89:58:0d:9e:6e:28:3a:55:45:50:5f:88:67:2a:d2:e2:48:cc:8b:de:9a:1b:93:ae:87:e1:f2:90:50:40:d9:0f:44:31:53:46:ad:62:4e:8d:48:86:19:77:fc:59:75:91:79:35:59:1d:e3:4e:33:5b:e2:31:d7:ee:52:28:5f:0a:70:a7:be:bb:1c:03:ca:1a:18:d0:f5:c1:5b:9c:73:04:b6:4a:e8:46:52:58:76:d4:6a:e6:67:1c:0e:dc:13:d0:61:72:a0:92:cb:05:97:47:1c:c1:c9:cf:41:7d:1f:b1:4d:93:6b:53:41:03:21:2b:93:15:63:08:3e:2c:86:9e:7b:9f:3a:09:05:6a:7d:bb:1c:a7:b7:af:96:08:cb:5b:df:07:fb:9c:f2:95:11:c0:82:81:f6:1b:bf:5a:1e:58:cd:28:ca:7d:04:eb:aa:e9:29:c4:82:51:2c:89:61:95:b6:ed:a5:86:7c:7c:48:1d:ec:54:96:47:79:ea:fc:7f:f5:10:43:0a:9b:00:ef:8a:77:2e:f4:36:66:d2:6a:a6:95:b6:9f:23:3b:12:e2:89:d5:a4:c1:2c:91:4e:cb:94:e8:3f:22:0e:21:f9:b8:4a:81:5c:4c:63:ae:3d:05:b2:5c:5c:54:a7:55:8f:98:25:55:c4:a6:90:bc:19:29:b1:14:d4:e2:b0:95:e4:ff:89:71:61:be:8a:16:85"},{"tbs_certificate":{"version":"v3","serial_number":"02","signature":{"algorithm":"sha1_rsa","parameters":null},"issuer":{"country_name":"FR","state_or_province_name":"Alsace","locality_name":"Strasbourg","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"Freelan Sample Certificate Authority","email_address":"contact@freelan.org"},"validity":{"not_before":1335524080,"not_after":1650884080,"not_before_iso":"2012-04-27T10:54:40+00:00","not_after_iso":"2022-04-25T10:54:40+00:00"},"subject":{"country_name":"FR","state_or_province_name":"Alsace","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"bob","email_address":"contact@freelan.org"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"c2:3f:43:14:4a:d4:dd:43:5a:b9:43:5e:2d:bb:89:a1:17:18:f7:ae:47:4b:7a:f4:d4:dc:a3:e1:b7:85:3a:10:20:eb:bc:51:18:d8:8b:25:c6:04:95:4f:80:e9:05:5c:00:f4:7c:23:7b:d1:ad:81:58:f1:9d:43:c3:37:ee:7f:61:03:b5:ff:29:bb:10:1a:fb:a8:77:97:9b:de:4c:7d:3f:ca:ff:53:8c:37:30:b6:88:f2:0e:be:7c:dc:92:76:c9:5f:22:96:19:0b:91:ea:9c:18:96:9f:43:d1:9d:22:9e:d9:c3:12:9f:80:05:85:1f:70:bb:87:5d:63:c1:5a:51:3d:7e:69:3d:76:6d:b0:56:ea:db:3f:ae:f0:cd:0c:19:48:b1:f2:d5:2e:e7:fa:12:dd:15:bc:8c:dc:09:c2:26:9c:dc:22:52:8e:c8:1c:c1:cd:01:bd:1a:24:c5:be:4f:18:08:f3:de:59:1c:8f:63:a6:63:1d:4f:5a:92:68:7a:49:94:26:54:d1:83:be:16:e4:5e:8f:73:2f:81:3a:3a:30:80:fd:57:a9:7f:1b:7b:e5:0f:6c:01:68:f7:1f:45:49:fe:06:3c:08:57:64:27:a5:0b:55:18:b7:30:be:08:45:70:8b:cd:43:ea:fc:80:1e:03:5c:c3:52:8d:a9:55:53:55:f4:61:2e:8b:50:64:6a:30:a7:6f:bd:b8:80:12:ee:66:98:d8:78:5f:a0:f5:65:6a:6d:f5:09:cc:62:4d:55:56:80:21:75:48:73:4d:b9:e3:f9:1d:96:c9:2c:5d:79:4d:3c:c5:7a:9e:84:ff:9d:c7:94:87:0a:3e:69:81:d2:7f:c0:5f:67:9c:06:8c:33:5c:a3:9f:52:e7:04:c7:d3:81:ef:b2:77:1e:d0:57:1f:1f:90:a5:69:c0:0d:43:c5:f6:a6:7e:f7:ea:45:7c:60:b6:68:1f:64:59:dc:60:33:c2:13:8c:b7:06:c2:2a:cd:cc:2b:02:de:a2:e9:70:0c:db:79:fe:ce:eb:5e:c0:06:eb:76:43:09:e0:2a:c7:ee:1e:6a:af:60:49:73:3c:a8:53:8c:e1:39:2c:e7:9e:fe:fd:44:20:f0:85:9a:1f:eb:c7:40:c8:5b:90:43:e6:a1:6a:00:50:4b:73:73:72:c5:39:77:13:1e:3c:95:be:a9:37:6a:d1:4e:34:3d:34:ec:87:f8:1e:6c:e7:dc:8b:7f:8e:d1:3c:78:c2:e2:09:93:d7:c0:68:ae:70:81:b9:f0:d0:f7:26:a4:e2:c0:12:1d:2f:01:63:eb:53:05:cb:aa:db:66:b0:fb:16:9b:e7:e7:be:c3:66:da:5c:c9","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"2.16.840.1.113730.1.13","critical":false,"extn_value":"16:1d:4f:70:65:6e:53:53:4c:20:47:65:6e:65:72:61:74:65:64:20:43:65:72:74:69:66:69:63:61:74:65"},{"extn_id":"key_identifier","critical":false,"extn_value":"9c:d2:71:50:35:f7:10:43:dd:e8:ce:75:29:a3:53:5d:11:a7:a8:3b"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"23:6c:2d:3d:3e:29:5d:78:b8:6c:3e:aa:e2:bb:2e:1e:6c:87:f2:53","authority_cert_issuer":null,"authority_cert_serial_number":null}}]},"signature_algorithm":{"algorithm":"sha1_rsa","parameters":null},"signature_value":"c3:b0:a4:82:f5:64:e5:4e:a0:e5:74:5e:c4:3d:d0:9c:f7:4e:f7:8d:af:8b:2e:80:59:63:b5:6e:2f:10:5b:66:d6:29:2a:ca:e2:01:20:68:e1:2b:ff:d6:e1:e1:f2:a6:e0:cc:f5:8f:9f:5c:72:b8:fa:81:76:7d:5c:ee:60:29:e5:d7:de:8f:4a:9c:55:3e:e5:27:1c:76:bc:35:e7:16:80:6f:32:77:fd:57:ae:51:87:fb:be:c2:a1:cc:76:9a:61:01:c9:ff:86:00:ff:d1:96:cd:ff:2c:0f:48:9e:ae:83:d8:df:d4:78:1d:4c:37:87:f5:58:5d:26:c6:ca:16:cd:fa:16:1d:6f:42:ae:57:4a:99:45:52:80:5c:1c:76:42:a8:f8:f3:15:9c:1b:3e:36:01:e0:09:5e:d8:19:b1:ed:a0:ef:3b:c7:09:a7:aa:5f:b6:2d:c1:20:84:9b:2c:87:1a:2b:35:de:9e:9c:0c:d9:0c:5e:cf:51:38:d6:d6:80:ae:91:15:b5:c6:22:df:7e:17:9f:c3:eb:bf:fd:d5:3b:4b:ea:66:00:72:a0:b5:b7:65:a8:5a:d9:a8:f1:67:c1:41:d8:79:dd:cc:2f:78:7a:9e:5e:0a:9d:77:0e:59:52:49:d2:10:94:1c:eb:f4:3c:04:0e:3c:1c:1a:75:a6:e8:23:d5:f0:73:14:90:b1:71:5a:32:57:8d:34:d7:6a:61:dc:73:1a:da:1d:1f:56:a7:2e:ef:0d:a4:f5:fb:94:0b:f4:cf:1d:d2:10:0f:07:cd:ba:9d:78:87:e8:04:63:6a:e5:7a:6b:20:bd:bd:29:c2:39:5b:fc:86:84:77:0b:e3:f8:2c:37:ac:af:1b:ed:4f:b9:d6:08:a3:ac:2f:31:07:4a:f8:8e:cf:11:dd:92:1c:c9:aa:c7:a5:b7:62:a4:77:6e:58:20:78:17:cb:5e:ef:6d:41:eb:b6:c2:1f:7f:a1:de:fa:bb:71:92:20:de:b1:5e:34:84:6c:ed:6c:e1:43:86:13:f0:3f:d7:2d:c5:ba:c0:de:37:8d:48:bc:df:c7:4f:b3:a6:a5:e5:c2:db:f1:ef:db:0c:25:69:e6:58:8d:ba:72:bd:5e:3f:cf:81:36:b6:ab:ee:a8:67:8f:ee:bb:fe:6f:c9:1f:8a:1f:ef:e9:c9:7a:52:40:ad:a0:3f:23:45:7a:63:95:98:3d:12:b8:e2:f3:0b:88:10:38:04:68:b0:f1:a7:8b:d0:61:d7:0f:2f:cf:17:51:21:eb:76:69:2d:19:e8:01:c5:33:fd:61:cd:46:64:87:89:43:e9:31:d0:be:88:a0:a2:82:0c:7f:9f:66:41:3a:9a:5a:6a"},{"tbs_certificate":{"version":"v3","serial_number":"03","signature":{"algorithm":"sha1_rsa","parameters":null},"issuer":{"country_name":"FR","state_or_province_name":"Alsace","locality_name":"Strasbourg","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"Freelan Sample Certificate Authority","email_address":"contact@freelan.org"},"validity":{"not_before":1335524093,"not_after":1650884093,"not_before_iso":"2012-04-27T10:54:53+00:00","not_after_iso":"2022-04-25T10:54:53+00:00"},"subject":{"country_name":"FR","state_or_province_name":"Alsace","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"carol","email_address":"contact@freelan.org"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"d7:c0:a7:c6:e9:48:c4:53:40:b3:76:d9:2f:37:28:3d:a3:c4:42:d0:76:cd:08:9b:50:e3:1c:51:e5:14:72:fa:2b:a0:b1:06:23:f3:c1:ad:92:7c:79:fe:15:54:d1:e5:67:62:da:ed:81:aa:7e:e2:b1:50:a9:fb:d8:29:09:da:84:4d:3c:f4:6e:13:ab:0b:d5:ee:80:63:32:7d:57:af:83:3c:1c:27:ed:ec:67:d6:fd:1c:13:2d:40:bf:d1:da:bf:7a:b6:67:7e:b0:75:3b:6d:61:9d:cc:6c:1a:97:f1:56:de:9f:80:d3:16:60:bb:8a:6f:46:9b:be:34:75:c3:4c:d2:f1:c8:f3:3e:98:28:30:e4:cb:2d:25:61:62:48:be:2e:dc:ed:90:93:ae:74:b7:fa:49:43:65:20:ac:8e:fe:52:6c:00:8e:51:3e:b6:9a:c6:4f:44:1c:7b:84:17:bd:5c:f6:36:e9:4c:91:89:6f:4e:ad:ac:10:41:c5:c5:65:8a:20:c8:f7:27:a3:ea:ac:5b:74:09:99:27:88:60:c7:44:69:18:0c:32:1a:77:f2:47:53:46:e3:12:c5:69:95:45:15:9a:14:60:76:20:a7:b5:8c:51:bf:5a:57:19:5a:c7:a8:bc:0b:c4:30:ca:0b:e6:d0:f8:c4:a8:84:d9:24:a2:92:f6:84:f2:13:ea:a4:93:97:fe:ed:77:d8:2f:75:7a:2c:39:88:3c:44:56:0a:ef:12:57:d5:9e:8f:35:8e:7f:84:e7:1a:d1:19:8d:23:db:b5:ce:c5:7f:e1:88:6d:04:d6:01:de:f0:72:3e:51:95:1d:4f:30:b6:32:0a:0f:84:b5:00:34:e4:bf:80:71:10:62:14:c1:32:5a:a9:a6:de:c2:58:e8:52:eb:66:5a:b8:5e:c2:06:7c:a6:6a:33:f2:1e:8a:41:07:53:bb:6b:41:92:59:85:79:04:a9:df:56:4c:e0:62:1e:98:87:95:07:b1:10:49:34:9c:90:4c:0b:83:25:27:9f:01:27:fb:d0:c4:6e:50:cc:f5:02:47:2c:45:9a:31:e5:ce:7d:86:8f:db:fd:83:ea:a6:00:49:71:14:44:a1:8e:9d:ba:a4:a4:cf:9d:15:20:2d:67:76:42:81:63:a2:76:4e:4b:22:b5:de:3d:d8:f8:e0:43:7f:a3:10:f0:73:fb:6e:e1:6a:37:99:dc:87:a3:05:4c:29:f5:63:14:9b:eb:a3:3a:9b:2b:b4:51:f5:05:03:de:41:e5:cb:1a:8e:76:eb:47:93:53:90:71:c5:8f:86:5f:9e:0b:4d:33:9c:3c:88:8a:90:9f:90:a6:35:90:81:f1","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"2.16.840.1.113730.1.13","critical":false,"extn_value":"16:1d:4f:70:65:6e:53:53:4c:20:47:65:6e:65:72:61:74:65:64:20:43:65:72:74:69:66:69:63:61:74:65"},{"extn_id":"key_identifier","critical":false,"extn_value":"b5:5d:0d:4f:55:f6:75:1a:23:b3:f5:8c:bc:6b:5a:b6:96:6c:ae:e0"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"23:6c:2d:3d:3e:29:5d:78:b8:6c:3e:aa:e2:bb:2e:1e:6c:87:f2:53","authority_cert_issuer":null,"authority_cert_serial_number":null}}]},"signature_algorithm":{"algorithm":"sha1_rsa","parameters":null},"signature_value":"bf:3f:e7:16:a2:ba:b1:cf:d6:79:f3:84:ed:a5:10:3e:60:42:0e:d5:1a:c6:e9:b1:39:86:5a:2e:dd:ae:b6:b7:16:33:33:17:3e:83:f7:a1:f7:b4:1b:09:74:8f:9b:0d:8e:4c:c7:a1:d6:66:6c:02:3a:b5:f2:72:aa:c9:e4:b3:c6:9d:6e:c0:48:dc:39:21:30:18:a0:6f:cb:09:be:de:0f:63:83:04:32:73:a7:bc:42:34:b7:a1:dc:21:21:08:86:65:bc:2e:c5:78:ae:fb:fe:ab:fb:8b:85:bf:61:e0:e2:aa:52:5f:1e:0d:19:22:13:94:7a:b4:bd:5c:30:8d:43:22:b4:e9:13:62:7e:3e:f5:e2:7a:2a:3b:da:1f:57:4a:5d:b8:6c:4c:f5:6e:34:b9:bd:b4:1f:dc:88:d0:28:20:a2:0c:31:e8:7f:3a:23:b8:60:48:c8:4e:e1:02:62:ae:00:fb:d0:a5:76:cb:ea:f3:d7:75:0d:9e:56:48:c1:2e:44:c7:0c:9f:03:b3:ac:96:c5:a2:a0:06:9e:2b:c3:eb:b5:04:15:33:79:4a:9e:28:94:1d:28:50:98:e3:eb:b5:74:69:7f:69:bc:61:72:d1:8a:cc:fb:89:be:51:34:81:11:7b:fa:8a:cf:e7:bf:81:91:34:1a:11:63:92:41:eb:62:7d:7a:2a:5a:2b:a3:85:36:5b:39:08:40:6b:0d:bc:b7:ed:36:42:60:45:ee:0c:27:f1:41:38:9e:db:99:8f:0f:ff:1b:ea:02:98:9f:19:21:33:ca:a2:47:89:cb:1d:a9:4c:94:b6:3d:b2:e2:bf:1d:f7:12:8d:01:ff:77:d6:72:65:70:ca:80:8e:a2:2d:78:0c:b2:9d:84:3a:50:f9:e8:8e:85:03:58:eb:0a:d3:5b:d3:55:d0:bd:7d:de:c8:5b:80:ea:0e:53:d6:35:86:60:10:ed:bd:06:f4:59:15:64:75:4c:bd:2f:fb:8a:fa:c1:d0:c2:d9:68:09:2b:9a:91:c4:00:b1:65:7d:6d:a8:c2:42:d1:d7:f1:71:ae:db:96:33:e7:a9:29:27:f3:89:8d:c8:ac:87:14:fa:a5:cf:ec:b6:1b:a6:03:93:d7:ef:7f:49:b0:d5:22:fe:9e:5a:1b:e1:ff:e9:e3:71:fa:e9:09:3f:b4:1a:33:ae:3a:60:27:d2:e6:2f:12:f4:32:54:be:29:be:fc:14:a5:2a:2d:99:88:e0:9d:d0:c6:07:e1:76:fb:96:60:0e:4c:d9:93:bd:26:29:2a:8f:49:d9:f6:7d:7a:bc:34:31:84:81:4f:28:e1:e8:5e:cf:45:b1:c1:8a:2b:e0:52:72:5f:19"}] +[{"tbs_certificate":{"version":"v3","serial_number":"01","signature":{"algorithm":"sha1_rsa","parameters":null},"issuer":{"country_name":"FR","state_or_province_name":"Alsace","locality_name":"Strasbourg","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"Freelan Sample Certificate Authority","email_address":"contact@freelan.org"},"validity":{"not_before":1335522678,"not_after":1650882678,"not_before_iso":"2012-04-27T10:31:18+00:00","not_after_iso":"2022-04-25T10:31:18+00:00"},"subject":{"country_name":"FR","state_or_province_name":"Alsace","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"alice","email_address":"contact@freelan.org"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"dd:6d:bd:f8:80:fa:d7:de:1b:1f:a7:a3:2e:b2:02:e2:16:f6:52:0a:3c:bf:a6:42:f8:ca:dc:93:67:4d:60:c3:4f:8d:c3:8a:00:1b:f1:c4:4b:41:6a:69:d2:69:e5:3f:21:8e:c5:0b:f8:22:37:ad:b6:2c:4b:55:ff:7a:03:72:bb:9a:d3:ec:96:b9:56:9f:cb:19:99:c9:32:94:6f:8f:c6:52:06:9f:45:03:df:fd:e8:97:f6:ea:d6:ba:bb:48:2b:b5:e0:34:61:4d:52:36:0f:ab:87:52:25:03:cf:87:00:87:13:f2:ca:03:29:16:9d:90:57:46:b5:f4:0e:ae:17:c8:0a:4d:92:ed:08:a6:32:23:11:71:fe:f2:2c:44:d7:6c:07:f3:0b:7b:0c:4b:dd:3b:b4:f7:37:70:9f:51:b6:88:4e:5d:6a:05:7f:8d:9b:66:7a:ab:80:20:fe:ee:6b:97:c3:49:7d:78:3b:d5:99:97:03:75:ce:8f:bc:c5:be:9c:9a:a5:12:19:70:f9:a4:bd:96:27:ed:23:02:a7:c7:57:c9:71:cf:76:94:a2:21:62:f6:b8:1d:ca:88:ee:09:ad:46:2f:b7:61:b3:2c:15:13:86:9f:a5:35:26:5a:67:f4:37:c8:e6:80:01:49:0e:c7:ed:61:d3:cd:bc:e4:f8:be:3f:c9:4e:f8:7d:97:89:ce:12:bc:ca:b5:c6:d2:e0:d9:b3:68:3c:2e:4a:9d:b4:5f:b8:53:ee:50:3d:bf:dd:d4:a2:8a:b6:a0:27:ab:98:0c:b3:b2:58:90:e2:bc:a1:ad:ff:bd:8e:55:31:0f:00:bf:68:e9:3d:a9:19:9a:f0:6d:0b:a2:14:6a:c6:4c:c6:4e:bd:63:12:a5:0b:4d:97:eb:42:09:79:53:e2:65:aa:24:34:70:b8:c1:ab:23:80:e7:9c:6c:ed:dc:82:aa:37:04:b8:43:2a:3d:2a:a8:cc:20:fc:27:5d:90:26:58:f9:b7:14:e2:9e:e2:c1:70:73:97:e9:6b:02:8e:d3:52:59:7b:00:ec:61:30:f1:56:3f:9c:c1:7c:05:c5:b1:36:c8:18:85:cf:61:40:1f:07:e8:a7:06:87:df:9a:77:0b:a9:64:72:03:f6:93:fc:e0:02:59:c1:96:ec:c0:09:42:3e:30:a2:7f:1b:48:2f:fe:e0:21:8f:53:87:25:0d:cb:ea:49:f5:4a:9b:d0:e3:5f:ee:78:18:e5:ba:71:31:a9:04:98:0f:b1:ad:67:52:a0:f2:e3:9c:ab:6a:fe:58:84:84:dd:07:3d:32:94:05:16:45:15:96:59:a0:58:6c:18:0e:e3:77:66:c7:b3:f7:99","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"2.16.840.1.113730.1.13","critical":false,"extn_value":"16:1d:4f:70:65:6e:53:53:4c:20:47:65:6e:65:72:61:74:65:64:20:43:65:72:74:69:66:69:63:61:74:65"},{"extn_id":"key_identifier","critical":false,"extn_value":"59:5f:c9:13:ba:1b:cc:b9:a8:41:4a:8a:49:79:6a:36:f6:7d:3e:d7"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"23:6c:2d:3d:3e:29:5d:78:b8:6c:3e:aa:e2:bb:2e:1e:6c:87:f2:53","authority_cert_issuer":null,"authority_cert_serial_number":null}}],"serial_number_str":"1"},"signature_algorithm":{"algorithm":"sha1_rsa","parameters":null},"signature_value":"13:e7:02:45:3e:a7:ab:bd:b8:da:e7:ef:74:88:ac:62:d5:dd:10:56:d5:46:07:ec:fa:6a:80:0c:b9:62:be:aa:08:b4:be:0b:eb:9a:ef:68:b7:69:6f:4d:20:92:9d:18:63:7a:23:f4:48:87:6a:14:c3:91:98:1b:4e:08:59:3f:91:80:e9:f4:cf:fd:d5:bf:af:4b:e4:bd:78:09:71:ac:d0:81:e5:53:9f:3e:ac:44:3e:9f:f0:bf:5a:c1:70:4e:06:04:ef:dc:e8:77:05:a2:7d:c5:fa:80:58:0a:c5:10:6d:90:ca:49:26:71:84:39:b7:9a:3e:e9:6f:ae:c5:35:b6:5b:24:8c:c9:ef:41:c3:b1:17:b6:3b:4e:28:89:3c:7e:87:a8:3a:a5:6d:dc:39:03:20:20:0b:c5:80:a3:79:13:1e:f6:ec:ae:36:df:40:74:34:87:46:93:3b:a3:e0:a4:8c:2f:43:4c:b2:54:80:71:76:78:d4:ea:12:28:d8:f2:e3:80:55:11:9b:f4:65:dc:53:0e:b4:4c:e0:4c:09:b4:dc:a0:80:5c:e6:b5:3b:95:d3:69:e4:52:3d:5b:61:86:02:e5:fd:0b:00:3a:fa:b3:45:cc:c9:a3:64:f2:dc:25:59:89:58:0d:9e:6e:28:3a:55:45:50:5f:88:67:2a:d2:e2:48:cc:8b:de:9a:1b:93:ae:87:e1:f2:90:50:40:d9:0f:44:31:53:46:ad:62:4e:8d:48:86:19:77:fc:59:75:91:79:35:59:1d:e3:4e:33:5b:e2:31:d7:ee:52:28:5f:0a:70:a7:be:bb:1c:03:ca:1a:18:d0:f5:c1:5b:9c:73:04:b6:4a:e8:46:52:58:76:d4:6a:e6:67:1c:0e:dc:13:d0:61:72:a0:92:cb:05:97:47:1c:c1:c9:cf:41:7d:1f:b1:4d:93:6b:53:41:03:21:2b:93:15:63:08:3e:2c:86:9e:7b:9f:3a:09:05:6a:7d:bb:1c:a7:b7:af:96:08:cb:5b:df:07:fb:9c:f2:95:11:c0:82:81:f6:1b:bf:5a:1e:58:cd:28:ca:7d:04:eb:aa:e9:29:c4:82:51:2c:89:61:95:b6:ed:a5:86:7c:7c:48:1d:ec:54:96:47:79:ea:fc:7f:f5:10:43:0a:9b:00:ef:8a:77:2e:f4:36:66:d2:6a:a6:95:b6:9f:23:3b:12:e2:89:d5:a4:c1:2c:91:4e:cb:94:e8:3f:22:0e:21:f9:b8:4a:81:5c:4c:63:ae:3d:05:b2:5c:5c:54:a7:55:8f:98:25:55:c4:a6:90:bc:19:29:b1:14:d4:e2:b0:95:e4:ff:89:71:61:be:8a:16:85"},{"tbs_certificate":{"version":"v3","serial_number":"02","signature":{"algorithm":"sha1_rsa","parameters":null},"issuer":{"country_name":"FR","state_or_province_name":"Alsace","locality_name":"Strasbourg","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"Freelan Sample Certificate Authority","email_address":"contact@freelan.org"},"validity":{"not_before":1335524080,"not_after":1650884080,"not_before_iso":"2012-04-27T10:54:40+00:00","not_after_iso":"2022-04-25T10:54:40+00:00"},"subject":{"country_name":"FR","state_or_province_name":"Alsace","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"bob","email_address":"contact@freelan.org"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"c2:3f:43:14:4a:d4:dd:43:5a:b9:43:5e:2d:bb:89:a1:17:18:f7:ae:47:4b:7a:f4:d4:dc:a3:e1:b7:85:3a:10:20:eb:bc:51:18:d8:8b:25:c6:04:95:4f:80:e9:05:5c:00:f4:7c:23:7b:d1:ad:81:58:f1:9d:43:c3:37:ee:7f:61:03:b5:ff:29:bb:10:1a:fb:a8:77:97:9b:de:4c:7d:3f:ca:ff:53:8c:37:30:b6:88:f2:0e:be:7c:dc:92:76:c9:5f:22:96:19:0b:91:ea:9c:18:96:9f:43:d1:9d:22:9e:d9:c3:12:9f:80:05:85:1f:70:bb:87:5d:63:c1:5a:51:3d:7e:69:3d:76:6d:b0:56:ea:db:3f:ae:f0:cd:0c:19:48:b1:f2:d5:2e:e7:fa:12:dd:15:bc:8c:dc:09:c2:26:9c:dc:22:52:8e:c8:1c:c1:cd:01:bd:1a:24:c5:be:4f:18:08:f3:de:59:1c:8f:63:a6:63:1d:4f:5a:92:68:7a:49:94:26:54:d1:83:be:16:e4:5e:8f:73:2f:81:3a:3a:30:80:fd:57:a9:7f:1b:7b:e5:0f:6c:01:68:f7:1f:45:49:fe:06:3c:08:57:64:27:a5:0b:55:18:b7:30:be:08:45:70:8b:cd:43:ea:fc:80:1e:03:5c:c3:52:8d:a9:55:53:55:f4:61:2e:8b:50:64:6a:30:a7:6f:bd:b8:80:12:ee:66:98:d8:78:5f:a0:f5:65:6a:6d:f5:09:cc:62:4d:55:56:80:21:75:48:73:4d:b9:e3:f9:1d:96:c9:2c:5d:79:4d:3c:c5:7a:9e:84:ff:9d:c7:94:87:0a:3e:69:81:d2:7f:c0:5f:67:9c:06:8c:33:5c:a3:9f:52:e7:04:c7:d3:81:ef:b2:77:1e:d0:57:1f:1f:90:a5:69:c0:0d:43:c5:f6:a6:7e:f7:ea:45:7c:60:b6:68:1f:64:59:dc:60:33:c2:13:8c:b7:06:c2:2a:cd:cc:2b:02:de:a2:e9:70:0c:db:79:fe:ce:eb:5e:c0:06:eb:76:43:09:e0:2a:c7:ee:1e:6a:af:60:49:73:3c:a8:53:8c:e1:39:2c:e7:9e:fe:fd:44:20:f0:85:9a:1f:eb:c7:40:c8:5b:90:43:e6:a1:6a:00:50:4b:73:73:72:c5:39:77:13:1e:3c:95:be:a9:37:6a:d1:4e:34:3d:34:ec:87:f8:1e:6c:e7:dc:8b:7f:8e:d1:3c:78:c2:e2:09:93:d7:c0:68:ae:70:81:b9:f0:d0:f7:26:a4:e2:c0:12:1d:2f:01:63:eb:53:05:cb:aa:db:66:b0:fb:16:9b:e7:e7:be:c3:66:da:5c:c9","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"2.16.840.1.113730.1.13","critical":false,"extn_value":"16:1d:4f:70:65:6e:53:53:4c:20:47:65:6e:65:72:61:74:65:64:20:43:65:72:74:69:66:69:63:61:74:65"},{"extn_id":"key_identifier","critical":false,"extn_value":"9c:d2:71:50:35:f7:10:43:dd:e8:ce:75:29:a3:53:5d:11:a7:a8:3b"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"23:6c:2d:3d:3e:29:5d:78:b8:6c:3e:aa:e2:bb:2e:1e:6c:87:f2:53","authority_cert_issuer":null,"authority_cert_serial_number":null}}],"serial_number_str":"2"},"signature_algorithm":{"algorithm":"sha1_rsa","parameters":null},"signature_value":"c3:b0:a4:82:f5:64:e5:4e:a0:e5:74:5e:c4:3d:d0:9c:f7:4e:f7:8d:af:8b:2e:80:59:63:b5:6e:2f:10:5b:66:d6:29:2a:ca:e2:01:20:68:e1:2b:ff:d6:e1:e1:f2:a6:e0:cc:f5:8f:9f:5c:72:b8:fa:81:76:7d:5c:ee:60:29:e5:d7:de:8f:4a:9c:55:3e:e5:27:1c:76:bc:35:e7:16:80:6f:32:77:fd:57:ae:51:87:fb:be:c2:a1:cc:76:9a:61:01:c9:ff:86:00:ff:d1:96:cd:ff:2c:0f:48:9e:ae:83:d8:df:d4:78:1d:4c:37:87:f5:58:5d:26:c6:ca:16:cd:fa:16:1d:6f:42:ae:57:4a:99:45:52:80:5c:1c:76:42:a8:f8:f3:15:9c:1b:3e:36:01:e0:09:5e:d8:19:b1:ed:a0:ef:3b:c7:09:a7:aa:5f:b6:2d:c1:20:84:9b:2c:87:1a:2b:35:de:9e:9c:0c:d9:0c:5e:cf:51:38:d6:d6:80:ae:91:15:b5:c6:22:df:7e:17:9f:c3:eb:bf:fd:d5:3b:4b:ea:66:00:72:a0:b5:b7:65:a8:5a:d9:a8:f1:67:c1:41:d8:79:dd:cc:2f:78:7a:9e:5e:0a:9d:77:0e:59:52:49:d2:10:94:1c:eb:f4:3c:04:0e:3c:1c:1a:75:a6:e8:23:d5:f0:73:14:90:b1:71:5a:32:57:8d:34:d7:6a:61:dc:73:1a:da:1d:1f:56:a7:2e:ef:0d:a4:f5:fb:94:0b:f4:cf:1d:d2:10:0f:07:cd:ba:9d:78:87:e8:04:63:6a:e5:7a:6b:20:bd:bd:29:c2:39:5b:fc:86:84:77:0b:e3:f8:2c:37:ac:af:1b:ed:4f:b9:d6:08:a3:ac:2f:31:07:4a:f8:8e:cf:11:dd:92:1c:c9:aa:c7:a5:b7:62:a4:77:6e:58:20:78:17:cb:5e:ef:6d:41:eb:b6:c2:1f:7f:a1:de:fa:bb:71:92:20:de:b1:5e:34:84:6c:ed:6c:e1:43:86:13:f0:3f:d7:2d:c5:ba:c0:de:37:8d:48:bc:df:c7:4f:b3:a6:a5:e5:c2:db:f1:ef:db:0c:25:69:e6:58:8d:ba:72:bd:5e:3f:cf:81:36:b6:ab:ee:a8:67:8f:ee:bb:fe:6f:c9:1f:8a:1f:ef:e9:c9:7a:52:40:ad:a0:3f:23:45:7a:63:95:98:3d:12:b8:e2:f3:0b:88:10:38:04:68:b0:f1:a7:8b:d0:61:d7:0f:2f:cf:17:51:21:eb:76:69:2d:19:e8:01:c5:33:fd:61:cd:46:64:87:89:43:e9:31:d0:be:88:a0:a2:82:0c:7f:9f:66:41:3a:9a:5a:6a"},{"tbs_certificate":{"version":"v3","serial_number":"03","signature":{"algorithm":"sha1_rsa","parameters":null},"issuer":{"country_name":"FR","state_or_province_name":"Alsace","locality_name":"Strasbourg","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"Freelan Sample Certificate Authority","email_address":"contact@freelan.org"},"validity":{"not_before":1335524093,"not_after":1650884093,"not_before_iso":"2012-04-27T10:54:53+00:00","not_after_iso":"2022-04-25T10:54:53+00:00"},"subject":{"country_name":"FR","state_or_province_name":"Alsace","organization_name":"www.freelan.org","organizational_unit_name":"freelan","common_name":"carol","email_address":"contact@freelan.org"},"subject_public_key_info":{"algorithm":{"algorithm":"rsa","parameters":null},"public_key":{"modulus":"d7:c0:a7:c6:e9:48:c4:53:40:b3:76:d9:2f:37:28:3d:a3:c4:42:d0:76:cd:08:9b:50:e3:1c:51:e5:14:72:fa:2b:a0:b1:06:23:f3:c1:ad:92:7c:79:fe:15:54:d1:e5:67:62:da:ed:81:aa:7e:e2:b1:50:a9:fb:d8:29:09:da:84:4d:3c:f4:6e:13:ab:0b:d5:ee:80:63:32:7d:57:af:83:3c:1c:27:ed:ec:67:d6:fd:1c:13:2d:40:bf:d1:da:bf:7a:b6:67:7e:b0:75:3b:6d:61:9d:cc:6c:1a:97:f1:56:de:9f:80:d3:16:60:bb:8a:6f:46:9b:be:34:75:c3:4c:d2:f1:c8:f3:3e:98:28:30:e4:cb:2d:25:61:62:48:be:2e:dc:ed:90:93:ae:74:b7:fa:49:43:65:20:ac:8e:fe:52:6c:00:8e:51:3e:b6:9a:c6:4f:44:1c:7b:84:17:bd:5c:f6:36:e9:4c:91:89:6f:4e:ad:ac:10:41:c5:c5:65:8a:20:c8:f7:27:a3:ea:ac:5b:74:09:99:27:88:60:c7:44:69:18:0c:32:1a:77:f2:47:53:46:e3:12:c5:69:95:45:15:9a:14:60:76:20:a7:b5:8c:51:bf:5a:57:19:5a:c7:a8:bc:0b:c4:30:ca:0b:e6:d0:f8:c4:a8:84:d9:24:a2:92:f6:84:f2:13:ea:a4:93:97:fe:ed:77:d8:2f:75:7a:2c:39:88:3c:44:56:0a:ef:12:57:d5:9e:8f:35:8e:7f:84:e7:1a:d1:19:8d:23:db:b5:ce:c5:7f:e1:88:6d:04:d6:01:de:f0:72:3e:51:95:1d:4f:30:b6:32:0a:0f:84:b5:00:34:e4:bf:80:71:10:62:14:c1:32:5a:a9:a6:de:c2:58:e8:52:eb:66:5a:b8:5e:c2:06:7c:a6:6a:33:f2:1e:8a:41:07:53:bb:6b:41:92:59:85:79:04:a9:df:56:4c:e0:62:1e:98:87:95:07:b1:10:49:34:9c:90:4c:0b:83:25:27:9f:01:27:fb:d0:c4:6e:50:cc:f5:02:47:2c:45:9a:31:e5:ce:7d:86:8f:db:fd:83:ea:a6:00:49:71:14:44:a1:8e:9d:ba:a4:a4:cf:9d:15:20:2d:67:76:42:81:63:a2:76:4e:4b:22:b5:de:3d:d8:f8:e0:43:7f:a3:10:f0:73:fb:6e:e1:6a:37:99:dc:87:a3:05:4c:29:f5:63:14:9b:eb:a3:3a:9b:2b:b4:51:f5:05:03:de:41:e5:cb:1a:8e:76:eb:47:93:53:90:71:c5:8f:86:5f:9e:0b:4d:33:9c:3c:88:8a:90:9f:90:a6:35:90:81:f1","public_exponent":65537}},"issuer_unique_id":null,"subject_unique_id":null,"extensions":[{"extn_id":"basic_constraints","critical":false,"extn_value":{"ca":false,"path_len_constraint":null}},{"extn_id":"2.16.840.1.113730.1.13","critical":false,"extn_value":"16:1d:4f:70:65:6e:53:53:4c:20:47:65:6e:65:72:61:74:65:64:20:43:65:72:74:69:66:69:63:61:74:65"},{"extn_id":"key_identifier","critical":false,"extn_value":"b5:5d:0d:4f:55:f6:75:1a:23:b3:f5:8c:bc:6b:5a:b6:96:6c:ae:e0"},{"extn_id":"authority_key_identifier","critical":false,"extn_value":{"key_identifier":"23:6c:2d:3d:3e:29:5d:78:b8:6c:3e:aa:e2:bb:2e:1e:6c:87:f2:53","authority_cert_issuer":null,"authority_cert_serial_number":null}}],"serial_number_str":"3"},"signature_algorithm":{"algorithm":"sha1_rsa","parameters":null},"signature_value":"bf:3f:e7:16:a2:ba:b1:cf:d6:79:f3:84:ed:a5:10:3e:60:42:0e:d5:1a:c6:e9:b1:39:86:5a:2e:dd:ae:b6:b7:16:33:33:17:3e:83:f7:a1:f7:b4:1b:09:74:8f:9b:0d:8e:4c:c7:a1:d6:66:6c:02:3a:b5:f2:72:aa:c9:e4:b3:c6:9d:6e:c0:48:dc:39:21:30:18:a0:6f:cb:09:be:de:0f:63:83:04:32:73:a7:bc:42:34:b7:a1:dc:21:21:08:86:65:bc:2e:c5:78:ae:fb:fe:ab:fb:8b:85:bf:61:e0:e2:aa:52:5f:1e:0d:19:22:13:94:7a:b4:bd:5c:30:8d:43:22:b4:e9:13:62:7e:3e:f5:e2:7a:2a:3b:da:1f:57:4a:5d:b8:6c:4c:f5:6e:34:b9:bd:b4:1f:dc:88:d0:28:20:a2:0c:31:e8:7f:3a:23:b8:60:48:c8:4e:e1:02:62:ae:00:fb:d0:a5:76:cb:ea:f3:d7:75:0d:9e:56:48:c1:2e:44:c7:0c:9f:03:b3:ac:96:c5:a2:a0:06:9e:2b:c3:eb:b5:04:15:33:79:4a:9e:28:94:1d:28:50:98:e3:eb:b5:74:69:7f:69:bc:61:72:d1:8a:cc:fb:89:be:51:34:81:11:7b:fa:8a:cf:e7:bf:81:91:34:1a:11:63:92:41:eb:62:7d:7a:2a:5a:2b:a3:85:36:5b:39:08:40:6b:0d:bc:b7:ed:36:42:60:45:ee:0c:27:f1:41:38:9e:db:99:8f:0f:ff:1b:ea:02:98:9f:19:21:33:ca:a2:47:89:cb:1d:a9:4c:94:b6:3d:b2:e2:bf:1d:f7:12:8d:01:ff:77:d6:72:65:70:ca:80:8e:a2:2d:78:0c:b2:9d:84:3a:50:f9:e8:8e:85:03:58:eb:0a:d3:5b:d3:55:d0:bd:7d:de:c8:5b:80:ea:0e:53:d6:35:86:60:10:ed:bd:06:f4:59:15:64:75:4c:bd:2f:fb:8a:fa:c1:d0:c2:d9:68:09:2b:9a:91:c4:00:b1:65:7d:6d:a8:c2:42:d1:d7:f1:71:ae:db:96:33:e7:a9:29:27:f3:89:8d:c8:ac:87:14:fa:a5:cf:ec:b6:1b:a6:03:93:d7:ef:7f:49:b0:d5:22:fe:9e:5a:1b:e1:ff:e9:e3:71:fa:e9:09:3f:b4:1a:33:ae:3a:60:27:d2:e6:2f:12:f4:32:54:be:29:be:fc:14:a5:2a:2d:99:88:e0:9d:d0:c6:07:e1:76:fb:96:60:0e:4c:d9:93:bd:26:29:2a:8f:49:d9:f6:7d:7a:bc:34:31:84:81:4f:28:e1:e8:5e:cf:45:b1:c1:8a:2b:e0:52:72:5f:19"}] diff --git a/tests/fixtures/generic/x509-string-serialnumber.der b/tests/fixtures/generic/x509-string-serialnumber.der new file mode 100644 index 0000000000000000000000000000000000000000..77bec2ee5518accf66983e95cf6d6a198d0923f8 GIT binary patch literal 524 zcmXqLV&X7pV%)TVnTe5!NhI^`*^k?Ha5ta%Jj-r&SM1-GKa zyyVQ{u5N(JZq+=9fsN|+!s4_9twab`)XUUGh}p@0D&$OKkl_Fz95H-mu(lOw~X0Ja-aRxz#@ z`qusW!g=tjj+3C2*Mh%KRbOg9Y|*XuoNi`(_3y>Ib~nG<%HONpceelH@zP|KyhmTB zK1oh(v(RT^W@KPoEMWi%OIbk{UIXqX&Yb+@#GH)$;u2(AfziV3$Y8ddN%)~oS&8+> zD{9d#KcrPZJ$&ExXZ@kJCN1tiX3xLsOw4V2H|z1vTdyu8O@AlOY+=hak