from enum import StrEnum


class StatusCodes(StrEnum):
    NEWSIG = "NEWSIG"
    GOODSIG = "GOODSIG"
    EXPSIG = "EXPSIG"
    EXPKEYSIG = "EXPKEYSIG"
    REVKEYSIG = "REVKEYSIG"
    BADSIG = "BADSIG"
    ERRSIG = "ERRSIG"
    VALIDSIG = "VALIDSIG"
    ASSERT_SIGNER = "ASSERT_SIGNER"
    ASSERT_PUBKEY_ALGO = "ASSERT_PUBKEY_ALGO"
    SIG_ID = "SIG_ID"
    ENC_TO = "ENC_TO"
    BEGIN_DECRYPTION = "BEGIN_DECRYPTION"
    END_DECRYPTION = "END_DECRYPTION"
    DECRYPTION_KEY = "DECRYPTION_KEY"
    DECRYPTION_INFO = "DECRYPTION_INFO"
    DECRYPTION_FAILED = "DECRYPTION_FAILED"
    DECRYPTION_OKAY = "DECRYPTION_OKAY"
    SESSION_KEY = "SESSION_KEY"
    BEGIN_ENCRYPTION = "BEGIN_ENCRYPTION"
    END_ENCRYPTION = "END_ENCRYPTION"
    FILE_START = "FILE_START"
    FILE_DONE = "FILE_DONE"
    BEGIN_SIGNING = "BEGIN_SIGNING"
    ALREADY_SIGNED = "ALREADY_SIGNED"
    SIG_CREATED = "SIG_CREATED"
    NOTATION_ = "NOTATION_"
    POLICY_URL = "POLICY_URL"
    PLAINTEXT = "PLAINTEXT"
    PLAINTEXT_LENGTH = "PLAINTEXT_LENGTH"
    ATTRIBUTE = "ATTRIBUTE"
    SIG_SUBPACKET = "SIG_SUBPACKET"
    ENCRYPTION_COMPLIANCE_MODE = "ENCRYPTION_COMPLIANCE_MODE"
    DECRYPTION_COMPLIANCE_MODE = "DECRYPTION_COMPLIANCE_MODE"
    VERIFICATION_COMPLIANCE_MODE = "VERIFICATION_COMPLIANCE_MODE"
    INV_RECP = "INV_RECP"
    INV_SGNR = "INV_SGNR"
    NO_RECP = "NO_RECP"
    NO_SGNR = "NO_SGNR"
    KEY_CONSIDERED = "KEY_CONSIDERED"
    KEYEXPIRED = "KEYEXPIRED"
    KEYREVOKED = "KEYREVOKED"
    NO_PUBKEY = "NO_PUBKEY"
    NO_SECKEY = "NO_SECKEY"
    KEY_CREATED = "KEY_CREATED"
    KEY_NOT_CREATED = "KEY_NOT_CREATED"
    TRUST_ = "TRUST_"
    TOFU_USER = "TOFU_USER"
    TOFU_STATS = "TOFU_STATS"
    TOFU_STATS_SHORT = "TOFU_STATS_SHORT"
    TOFU_STATS_LONG = "TOFU_STATS_LONG"
    PKA_TRUST_GOOD = "PKA_TRUST_GOOD"
    PKA_TRUST_BAD = "PKA_TRUST_BAD"
    GET_BOOL = "GET_BOOL"
    GET_LINE = "GET_LINE"
    GET_HIDDEN = "GET_HIDDEN"
    GOT_IT = "GOT_IT"
    USERID_HINT = "USERID_HINT"
    NEED_PASSPHRASE = "NEED_PASSPHRASE"
    NEED_PASSPHRASE_SYM = "NEED_PASSPHRASE_SYM"
    NEED_PASSPHRASE_PIN = "NEED_PASSPHRASE_PIN"
    MISSING_PASSPHRASE = "MISSING_PASSPHRASE"
    BAD_PASSPHRASE = "BAD_PASSPHRASE"
    GOOD_PASSPHRASE = "GOOD_PASSPHRASE"
    IMPORT_CHECK = "IMPORT_CHECK"
    IMPORTED = "IMPORTED"
    IMPORT_OK = "IMPORT_OK"
    IMPORT_PROBLEM = "IMPORT_PROBLEM"
    IMPORT_RES = "IMPORT_RES"
    EXPORTED = "EXPORTED"
    EXPORT_RES = "EXPORT_RES"
    CARDCTRL = "CARDCTRL"
    SC_OP_FAILURE = "SC_OP_FAILURE"
    SC_OP_SUCCESS = "SC_OP_SUCCESS"
    NODATA = "NODATA"
    UNEXPECTED = "UNEXPECTED"
    TRUNCATED = "TRUNCATED"
    ERROR = "ERROR"
    WARNING = "WARNING"
    NOTE = "NOTE"
    SUCCESS = "SUCCESS"
    FAILURE = "FAILURE"
    BADARMOR = "BADARMOR"
    DELETE_PROBLEM = "DELETE_PROBLEM"
    PROGRESS = "PROGRESS"
    BACKUP_KEY_CREATED = "BACKUP_KEY_CREATED"
    MOUNTPOINT = "MOUNTPOINT"
    PINENTRY_LAUNCHED = "PINENTRY_LAUNCHED"
    GPGTAR_EXTRACT = "GPGTAR_EXTRACT"
    SIGEXPIRED = "SIGEXPIRED"
    PUBKEY_INFO = "PUBKEY_INFO"
    KEYPAIRINFO = "KEYPAIRINFO"
    CERTINFO = "CERTINFO"
    MANUFACTURER = "MANUFACTURER"
    KEY_STATUS = "KEY-STATUS"
    KEY_ATTR_INFO = "KEY-ATTR-INFO"
    KEY_TIME = "KEY-TIME"
    KEY_LABEL = "KEY-LABEL"


class SigningModes(StrEnum):
    EXPORTABLE = "sign"
    NON_EXPORTABLE = "lsign"
    NON_REVOCABLE = "nrsign"
    TRUST = "tsign"


class RevocationReason(StrEnum):
    NO_REASON = "0"
    USER_ID_INVALID = "4"


class KeyRevocationReason(StrEnum):
    NO_REASON = "0"
    KEY_COMPROMISED = "1"
    KEY_SUPERSEDED = "2"
    KEY_UNUSED = "3"


class KeyTrust(StrEnum):
    UNKNOWN = "1"
    UNTRUSTED = "2"
    MARGINAL_TRUST = "3"
    FULL_TRUST = "4"
    ULTIMATE_TRUST = "5"
