2022-07-05 13:33:57 -07:00
|
|
|
[Home](https://kellyjonbrazil.github.io/jc/)
|
|
|
|
<a id="jc.parsers.x509_cert"></a>
|
|
|
|
|
|
|
|
# jc.parsers.x509\_cert
|
|
|
|
|
|
|
|
jc - JSON Convert X.509 Certificate format file parser
|
|
|
|
|
2022-07-05 14:59:21 -07:00
|
|
|
This parser will convert DER and PEM encoded X.509 certificate files.
|
2022-07-05 13:33:57 -07:00
|
|
|
|
|
|
|
Usage (cli):
|
|
|
|
|
|
|
|
$ cat certificate.pem | jc --x509-cert
|
|
|
|
|
|
|
|
Usage (module):
|
|
|
|
|
|
|
|
import jc
|
|
|
|
result = jc.parse('x509_cert', x509_cert_file_output)
|
|
|
|
|
|
|
|
Schema:
|
|
|
|
|
|
|
|
[
|
|
|
|
{
|
2022-07-05 14:59:21 -07:00
|
|
|
"tbs_certificate": {
|
|
|
|
"version": string,
|
|
|
|
"serial_number": string, # [0]
|
|
|
|
"signature": {
|
|
|
|
"algorithm": string,
|
|
|
|
"parameters": string/null,
|
|
|
|
},
|
|
|
|
"issuer": {
|
|
|
|
"country_name": string,
|
|
|
|
"state_or_province_name" string,
|
|
|
|
"locality_name": string,
|
|
|
|
"organization_name": array/string,
|
|
|
|
"organizational_unit_name": array/string,
|
|
|
|
"common_name": string,
|
|
|
|
"email_address": string
|
|
|
|
},
|
|
|
|
"validity": {
|
|
|
|
"not_before": integer, # [1]
|
|
|
|
"not_after": integer, # [1]
|
|
|
|
"not_before_iso": string,
|
|
|
|
"not_after_iso": string
|
|
|
|
},
|
|
|
|
"subject": {
|
|
|
|
"country_name": string,
|
|
|
|
"state_or_province_name": string,
|
|
|
|
"locality_name": string,
|
|
|
|
"organization_name": array/string,
|
|
|
|
"organizational_unit_name": array/string,
|
|
|
|
"common_name": string,
|
|
|
|
"email_address": string
|
|
|
|
},
|
|
|
|
"subject_public_key_info": {
|
|
|
|
"algorithm": {
|
|
|
|
"algorithm": string,
|
|
|
|
"parameters": string/null,
|
|
|
|
},
|
|
|
|
"public_key": {
|
|
|
|
"modulus": string, # [0]
|
|
|
|
"public_exponent": integer
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"issuer_unique_id": string/null,
|
|
|
|
"subject_unique_id": string/null,
|
|
|
|
"extensions": [
|
|
|
|
{
|
|
|
|
"extn_id": string,
|
|
|
|
"critical": boolean,
|
|
|
|
"extn_value": array/object/string/integer # [2]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"signature_algorithm": {
|
|
|
|
"algorithm": string,
|
|
|
|
"parameters": string/null
|
|
|
|
},
|
|
|
|
"signature_value": string # [0]
|
2022-07-05 13:33:57 -07:00
|
|
|
}
|
|
|
|
]
|
|
|
|
|
2022-07-05 14:59:21 -07:00
|
|
|
[0] in colon-delimited hex notation
|
|
|
|
[1] time-zone-aware (UTC) epoch timestamp
|
|
|
|
[2] See below for well-known Extension schemas:
|
|
|
|
|
|
|
|
Basic Constraints:
|
|
|
|
{
|
|
|
|
"extn_id": "basic_constraints",
|
|
|
|
"critical": boolean,
|
|
|
|
"extn_value": {
|
|
|
|
"ca": boolean,
|
|
|
|
"path_len_constraint": string/null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Key Usage:
|
|
|
|
{
|
|
|
|
"extn_id": "key_usage",
|
|
|
|
"critical": boolean,
|
|
|
|
"extn_value": [
|
|
|
|
string
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
Key Identifier:
|
|
|
|
{
|
|
|
|
"extn_id": "key_identifier",
|
|
|
|
"critical": boolean,
|
|
|
|
"extn_value": string # [0]
|
|
|
|
}
|
|
|
|
|
|
|
|
Authority Key Identifier:
|
|
|
|
{
|
|
|
|
"extn_id": "authority_key_identifier",
|
|
|
|
"critical": boolean,
|
|
|
|
"extn_value": {
|
|
|
|
"key_identifier": string, # [0]
|
|
|
|
"authority_cert_issuer": string/null,
|
|
|
|
"authority_cert_serial_number": string/null
|
|
|
|
}
|
|
|
|
}
|
2022-07-05 13:33:57 -07:00
|
|
|
|
2022-07-05 14:59:21 -07:00
|
|
|
Examples:
|
2022-07-05 13:33:57 -07:00
|
|
|
|
2022-07-05 14:59:21 -07:00
|
|
|
$ cat entrust-ec1.pem| jc --x509-cert -p
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"tbs_certificate": {
|
|
|
|
"version": "v3",
|
|
|
|
"serial_number": "a6:8b:79:29:00:00:00:00:50:d0:91:f9",
|
|
|
|
"signature": {
|
|
|
|
"algorithm": "sha384_ecdsa",
|
|
|
|
"parameters": null
|
|
|
|
},
|
|
|
|
"issuer": {
|
|
|
|
"country_name": "US",
|
|
|
|
"organization_name": "Entrust, Inc.",
|
|
|
|
"organizational_unit_name": [
|
|
|
|
"See www.entrust.net/legal-terms",
|
|
|
|
"(c) 2012 Entrust, Inc. - for authorized use only"
|
|
|
|
],
|
|
|
|
"common_name": "Entrust Root Certification Authority - EC1"
|
|
|
|
},
|
|
|
|
"validity": {
|
|
|
|
"not_before": 1355844336,
|
|
|
|
"not_after": 2144764536,
|
|
|
|
"not_before_iso": "2012-12-18T15:25:36+00:00",
|
|
|
|
"not_after_iso": "2037-12-18T15:55:36+00:00"
|
|
|
|
},
|
|
|
|
"subject": {
|
|
|
|
"country_name": "US",
|
|
|
|
"organization_name": "Entrust, Inc.",
|
|
|
|
"organizational_unit_name": [
|
|
|
|
"See www.entrust.net/legal-terms",
|
|
|
|
"(c) 2012 Entrust, Inc. - for authorized use only"
|
|
|
|
],
|
|
|
|
"common_name": "Entrust Root Certification Authority - EC1"
|
|
|
|
},
|
|
|
|
"subject_public_key_info": {
|
|
|
|
"algorithm": {
|
|
|
|
"algorithm": "ec",
|
|
|
|
"parameters": "secp384r1"
|
|
|
|
},
|
|
|
|
"public_key": "04:84:13:c9:d0:ba:6d:41:7b:e2:6c:d0:eb:55:..."
|
|
|
|
},
|
|
|
|
"issuer_unique_id": null,
|
|
|
|
"subject_unique_id": null,
|
|
|
|
"extensions": [
|
|
|
|
{
|
|
|
|
"extn_id": "key_usage",
|
|
|
|
"critical": true,
|
|
|
|
"extn_value": [
|
|
|
|
"crl_sign",
|
|
|
|
"key_cert_sign"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"extn_id": "basic_constraints",
|
|
|
|
"critical": true,
|
|
|
|
"extn_value": {
|
|
|
|
"ca": true,
|
|
|
|
"path_len_constraint": null
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"extn_id": "key_identifier",
|
|
|
|
"critical": false,
|
|
|
|
"extn_value": "b7:63:e7:1a:dd:8d:e9:08:a6:55:83:a4:e0:6a:..."
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"signature_algorithm": {
|
|
|
|
"algorithm": "sha384_ecdsa",
|
|
|
|
"parameters": null
|
|
|
|
},
|
|
|
|
"signature_value": "30:64:02:30:61:79:d8:e5:42:47:df:1c:ae:53:..."
|
|
|
|
}
|
|
|
|
]
|
2022-07-05 13:33:57 -07:00
|
|
|
|
|
|
|
<a id="jc.parsers.x509_cert.parse"></a>
|
|
|
|
|
|
|
|
### parse
|
|
|
|
|
|
|
|
```python
|
|
|
|
def parse(data: Union[str, bytes],
|
|
|
|
raw: bool = False,
|
|
|
|
quiet: bool = False) -> List[Dict]
|
|
|
|
```
|
|
|
|
|
|
|
|
Main text parsing function
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
data: (string) text data to parse
|
|
|
|
raw: (boolean) unprocessed output if True
|
|
|
|
quiet: (boolean) suppress warning messages if True
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
List of Dictionaries. Raw or processed structured data.
|
|
|
|
|
|
|
|
### Parser Information
|
|
|
|
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
|
|
|
|
|
|
|
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|