[Home](https://kellyjonbrazil.github.io/jc/)

# jc.parsers.gpg

jc - JSON Convert `gpg --with-colons` command output parser

Usage (cli):

    $ gpg --with-colons --show-keys file.gpg | jc --gpg

or

    $ jc gpg --with-colons --show-keys file.gpg

Usage (module):

    import jc
    result = jc.parse('gpg', gpg_command_output)

Schema:

Field definitions from https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob_plain;f=doc/DETAILS

> Note: Number values are not converted to integers because many field
> specifications are overloaded and future augmentations are implied in the
> documentation.

    [
      {
        "type":                             string,
        "validity":                         string,
        "key_length":                       string,
        "pub_key_alg":                      string,
        "key_id":                           string,
        "creation_date":                    string,
        "expiration_date":                  string,
        "certsn_uidhash_trustinfo":         string,
        "owner_trust":                      string,
        "user_id":                          string,
        "signature_class":                  string,
        "key_capabilities":                 string,
        "cert_fingerprint_other":           string,
        "flag":                             string,
        "token_sn":                         string,
        "hash_alg":                         string,
        "curve_name":                       string,
        "compliance_flags":                 string,
        "last_update_date":                 string,
        "origin":                           string,
        "comment":                          string,
        "index":                            string,  # [0]
        "bits":                             string,  # [0]
        "value":                            string,  # [0]
        "version":                          string,  # [1], [4]
        "signature_count":                  string,  # [1]
        "encryption_count":                 string,  # [1]
        "policy":                           string,  # [1]
        "signature_first_seen":             string,  # [1]
        "signature_most_recent_seen":       string,  # [1]
        "encryption_first_done":            string,  # [1]
        "encryption_most_recent_done":      string,  # [1]
        "staleness_reason":                 string,  # [2]
        "trust_model":                      string,  # [2]
        "trust_db_created":                 string,  # [2]
        "trust_db_expires":                 string,  # [2]
        "marginally_trusted_users":         string,  # [2]
        "completely_trusted_users":         string,  # [2]
        "cert_chain_max_depth":             string,  # [2]
        "subpacket_number":                 string,  # [3]
        "hex_flags":                        string,  # [3]
        "subpacket_length":                 string,  # [3]
        "subpacket_data":                   string,  # [3]
        "pubkey":                           string,  # [4]
        "cipher":                           string,  # [4]
        "digest":                           string,  # [4]
        "compress":                         string,  # [4]
        "group":                            string,  # [4]
        "members":                          string,  # [4]
        "curve_names":                      string,  # [4]
      }
    ]

    All blank values are converted to null/None.

    [0] for 'pkd' type
    [1] for 'tfs' type
    [2] for 'tru' type
    [3] for 'skp' type
    [4] for 'cfg' type

Examples:

    $ gpg --with-colons --show-keys file.gpg | jc --gpg -p
    [
      {
        "type": "pub",
        "validity": "f",
        "key_length": "1024",
        "pub_key_alg": "17",
        "key_id": "6C7EE1B8621CC013",
        "creation_date": "899817715",
        "expiration_date": "1055898235",
        "certsn_uidhash_trustinfo": null,
        "owner_trust": "m",
        "user_id": null,
        "signature_class": null,
        "key_capabilities": "scESC",
        "cert_fingerprint_other": null,
        "flag": null,
        "token_sn": null,
        "hash_alg": null,
        "curve_name": null,
        "compliance_flags": null,
        "last_update_date": null,
        "origin": null,
        "comment": null
      },
      ...
    ]


### parse

```python
def parse(data: str, 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

Source: [`jc/parsers/gpg.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/gpg.py)

Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
