Move allowed_options into separate groups in their own functions.
parent
9b9e441dd7
commit
4871e9e038
|
@ -165,261 +165,19 @@ def _is_allowed(input):
|
||||||
:return: The original parameter ``input``, unmodified and unsanitized,
|
:return: The original parameter ``input``, unmodified and unsanitized,
|
||||||
if no errors occur.
|
if no errors occur.
|
||||||
"""
|
"""
|
||||||
|
gnupg_options = _get_all_gnupg_options()
|
||||||
three_hundred_eighteen = ("""
|
allowed = _get_options_group("allowed")
|
||||||
--allow-freeform-uid --multifile
|
|
||||||
--allow-multiple-messages --no
|
|
||||||
--allow-multisig-verification --no-allow-freeform-uid
|
|
||||||
--allow-non-selfsigned-uid --no-allow-multiple-messages
|
|
||||||
--allow-secret-key-import --no-allow-non-selfsigned-uid
|
|
||||||
--always-trust --no-armor
|
|
||||||
--armor --no-armour
|
|
||||||
--armour --no-ask-cert-expire
|
|
||||||
--ask-cert-expire --no-ask-cert-level
|
|
||||||
--ask-cert-level --no-ask-sig-expire
|
|
||||||
--ask-sig-expire --no-auto-check-trustdb
|
|
||||||
--attribute-fd --no-auto-key-locate
|
|
||||||
--attribute-file --no-auto-key-retrieve
|
|
||||||
--auto-check-trustdb --no-batch
|
|
||||||
--auto-key-locate --no-comments
|
|
||||||
--auto-key-retrieve --no-default-keyring
|
|
||||||
--batch --no-default-recipient
|
|
||||||
--bzip2-compress-level --no-disable-mdc
|
|
||||||
--bzip2-decompress-lowmem --no-emit-version
|
|
||||||
--card-edit --no-encrypt-to
|
|
||||||
--card-status --no-escape-from-lines
|
|
||||||
--cert-digest-algo --no-expensive-trust-checks
|
|
||||||
--cert-notation --no-expert
|
|
||||||
--cert-policy-url --no-force-mdc
|
|
||||||
--change-pin --no-force-v3-sigs
|
|
||||||
--charset --no-force-v4-certs
|
|
||||||
--check-sig --no-for-your-eyes-only
|
|
||||||
--check-sigs --no-greeting
|
|
||||||
--check-trustdb --no-groups
|
|
||||||
--cipher-algo --no-literal
|
|
||||||
--clearsign --no-mangle-dos-filenames
|
|
||||||
--command-fd --no-mdc-warning
|
|
||||||
--command-file --no-options
|
|
||||||
--comment --no-permission-warning
|
|
||||||
--completes-needed --no-pgp2
|
|
||||||
--compress-algo --no-pgp6
|
|
||||||
--compression-algo --no-pgp7
|
|
||||||
--compress-keys --no-pgp8
|
|
||||||
--compress-level --no-random-seed-file
|
|
||||||
--compress-sigs --no-require-backsigs
|
|
||||||
--ctapi-driver --no-require-cross-certification
|
|
||||||
--dearmor --no-require-secmem
|
|
||||||
--dearmour --no-rfc2440-text
|
|
||||||
--debug --no-secmem-warning
|
|
||||||
--debug-all --no-show-notation
|
|
||||||
--debug-ccid-driver --no-show-photos
|
|
||||||
--debug-level --no-show-policy-url
|
|
||||||
--decrypt --no-sig-cache
|
|
||||||
--decrypt-files --no-sig-create-check
|
|
||||||
--default-cert-check-level --no-sk-comments
|
|
||||||
--default-cert-expire --no-strict
|
|
||||||
--default-cert-level --notation-data
|
|
||||||
--default-comment --not-dash-escaped
|
|
||||||
--default-key --no-textmode
|
|
||||||
--default-keyserver-url --no-throw-keyid
|
|
||||||
--default-preference-list --no-throw-keyids
|
|
||||||
--default-recipient --no-tty
|
|
||||||
--default-recipient-self --no-use-agent
|
|
||||||
--default-sig-expire --no-use-embedded-filename
|
|
||||||
--delete-keys --no-utf8-strings
|
|
||||||
--delete-secret-and-public-keys --no-verbose
|
|
||||||
--delete-secret-keys --no-version
|
|
||||||
--desig-revoke --openpgp
|
|
||||||
--detach-sign --options
|
|
||||||
--digest-algo --output
|
|
||||||
--disable-ccid --override-session-key
|
|
||||||
--disable-cipher-algo --passphrase
|
|
||||||
--disable-dsa2 --passphrase-fd
|
|
||||||
--disable-mdc --passphrase-file
|
|
||||||
--disable-pubkey-algo --passphrase-repeat
|
|
||||||
--display --pcsc-driver
|
|
||||||
--display-charset --personal-cipher-preferences
|
|
||||||
--dry-run --personal-cipher-prefs
|
|
||||||
--dump-options --personal-compress-preferences
|
|
||||||
--edit-key --personal-compress-prefs
|
|
||||||
--emit-version --personal-digest-preferences
|
|
||||||
--enable-dsa2 --personal-digest-prefs
|
|
||||||
--enable-progress-filter --pgp2
|
|
||||||
--enable-special-filenames --pgp6
|
|
||||||
--enarmor --pgp7
|
|
||||||
--enarmour --pgp8
|
|
||||||
--encrypt --photo-viewer
|
|
||||||
--encrypt-files --pipemode
|
|
||||||
--encrypt-to --preserve-permissions
|
|
||||||
--escape-from-lines --primary-keyring
|
|
||||||
--exec-path --print-md
|
|
||||||
--exit-on-status-write-error --print-mds
|
|
||||||
--expert --quick-random
|
|
||||||
--export --quiet
|
|
||||||
--export-options --reader-port
|
|
||||||
--export-ownertrust --rebuild-keydb-caches
|
|
||||||
--export-secret-keys --recipient
|
|
||||||
--export-secret-subkeys --recv-keys
|
|
||||||
--fast-import --refresh-keys
|
|
||||||
--fast-list-mode --remote-user
|
|
||||||
--fetch-keys --require-backsigs
|
|
||||||
--fingerprint --require-cross-certification
|
|
||||||
--fixed-list-mode --require-secmem
|
|
||||||
--fix-trustdb --rfc1991
|
|
||||||
--force-mdc --rfc2440
|
|
||||||
--force-ownertrust --rfc2440-text
|
|
||||||
--force-v3-sigs --rfc4880
|
|
||||||
--force-v4-certs --run-as-shm-coprocess
|
|
||||||
--for-your-eyes-only --s2k-cipher-algo
|
|
||||||
--gen-key --s2k-count
|
|
||||||
--gen-prime --s2k-digest-algo
|
|
||||||
--gen-random --s2k-mode
|
|
||||||
--gen-revoke --search-keys
|
|
||||||
--gnupg --secret-keyring
|
|
||||||
--gpg-agent-info --send-keys
|
|
||||||
--gpgconf-list --set-filename
|
|
||||||
--gpgconf-test --set-filesize
|
|
||||||
--group --set-notation
|
|
||||||
--help --set-policy-url
|
|
||||||
--hidden-encrypt-to --show-keyring
|
|
||||||
--hidden-recipient --show-notation
|
|
||||||
--homedir --show-photos
|
|
||||||
--honor-http-proxy --show-policy-url
|
|
||||||
--ignore-crc-error --show-session-key
|
|
||||||
--ignore-mdc-error --sig-keyserver-url
|
|
||||||
--ignore-time-conflict --sign
|
|
||||||
--ignore-valid-from --sign-key
|
|
||||||
--import --sig-notation
|
|
||||||
--import-options --sign-with
|
|
||||||
--import-ownertrust --sig-policy-url
|
|
||||||
--interactive --simple-sk-checksum
|
|
||||||
--keyid-format --sk-comments
|
|
||||||
--keyring --skip-verify
|
|
||||||
--keyserver --status-fd
|
|
||||||
--keyserver-options --status-file
|
|
||||||
--lc-ctype --store
|
|
||||||
--lc-messages --strict
|
|
||||||
--limit-card-insert-tries --symmetric
|
|
||||||
--list-config --temp-directory
|
|
||||||
--list-key --textmode
|
|
||||||
--list-keys --throw-keyid
|
|
||||||
--list-only --throw-keyids
|
|
||||||
--list-options --trustdb-name
|
|
||||||
--list-ownertrust --trusted-key
|
|
||||||
--list-packets --trust-model
|
|
||||||
--list-public-keys --try-all-secrets
|
|
||||||
--list-secret-keys --ttyname
|
|
||||||
--list-sig --ttytype
|
|
||||||
--list-sigs --ungroup
|
|
||||||
--list-trustdb --update-trustdb
|
|
||||||
--load-extension --use-agent
|
|
||||||
--local-user --use-embedded-filename
|
|
||||||
--lock-multiple --user
|
|
||||||
--lock-never --utf8-strings
|
|
||||||
--lock-once --verbose
|
|
||||||
--logger-fd --verify
|
|
||||||
--logger-file --verify-files
|
|
||||||
--lsign-key --verify-options
|
|
||||||
--mangle-dos-filenames --version
|
|
||||||
--marginals-needed --warranty
|
|
||||||
--max-cert-depth --with-colons
|
|
||||||
--max-output --with-fingerprint
|
|
||||||
--merge-only --with-key-data
|
|
||||||
--min-cert-level --yes
|
|
||||||
""").split()
|
|
||||||
|
|
||||||
possible = frozenset(three_hundred_eighteen)
|
|
||||||
|
|
||||||
## these are the allowed options we will handle so far, all others should
|
## these are the allowed options we will handle so far, all others should
|
||||||
## be dropped. this dance is so that when new options are added later, we
|
## be dropped. this dance is so that when new options are added later, we
|
||||||
## merely add the to the _allowed list, and the `` _allowed.issubset``
|
## merely add the to the _allowed list, and the `` _allowed.issubset``
|
||||||
## assertion will check that GPG will recognise them
|
## assertion will check that GPG will recognise them
|
||||||
##
|
|
||||||
## xxx checkout the --store option for creating rfc1991 data packets
|
|
||||||
## xxx key fetching/retrieving options: [fetch_keys, merge_only, recv_keys]
|
|
||||||
##
|
|
||||||
allowed = frozenset(['--fixed-list-mode', ## key/packet listing
|
|
||||||
'--list-key',
|
|
||||||
'--list-keys',
|
|
||||||
'--list-options',
|
|
||||||
'--list-packets',
|
|
||||||
'--list-public-keys',
|
|
||||||
'--list-secret-keys',
|
|
||||||
'--print-md',
|
|
||||||
'--print-mds',
|
|
||||||
'--with-colons',
|
|
||||||
## deletion
|
|
||||||
'--delete-keys',
|
|
||||||
'--delete-secret-keys',
|
|
||||||
## en-/de-cryption
|
|
||||||
'--always-trust',
|
|
||||||
'--decrypt',
|
|
||||||
'--decrypt-files',
|
|
||||||
'--encrypt',
|
|
||||||
'--encrypt-files',
|
|
||||||
'--recipient',
|
|
||||||
'--no-default-recipient',
|
|
||||||
'--symmetric',
|
|
||||||
'--use-agent',
|
|
||||||
'--no-use-agent',
|
|
||||||
## signing/certification
|
|
||||||
'--armor',
|
|
||||||
'--armour',
|
|
||||||
'--clearsign',
|
|
||||||
'--detach-sign',
|
|
||||||
'--list-sigs',
|
|
||||||
'--sign',
|
|
||||||
'--verify',
|
|
||||||
## i/o and files
|
|
||||||
'--batch',
|
|
||||||
'--debug-all',
|
|
||||||
'--debug-level',
|
|
||||||
'--gen-key',
|
|
||||||
#'--multifile',
|
|
||||||
'--no-emit-version',
|
|
||||||
'--no-tty',
|
|
||||||
'--output',
|
|
||||||
'--passphrase-fd',
|
|
||||||
'--status-fd',
|
|
||||||
'--version',
|
|
||||||
## keyring, homedir, & options
|
|
||||||
'--homedir',
|
|
||||||
'--keyring',
|
|
||||||
'--primary-keyring',
|
|
||||||
'--secret-keyring',
|
|
||||||
'--no-default-keyring',
|
|
||||||
'--default-key',
|
|
||||||
'--no-options',
|
|
||||||
'--keyserver',
|
|
||||||
'--recv-keys',
|
|
||||||
'--send-keys',
|
|
||||||
## preferences
|
|
||||||
'--digest-algo',
|
|
||||||
'--cipher-algo',
|
|
||||||
'--compress-algo',
|
|
||||||
'--compression-algo',
|
|
||||||
'--cert-digest-algo',
|
|
||||||
'--list-config',
|
|
||||||
'--personal-digest-prefs',
|
|
||||||
'--personal-digest-preferences',
|
|
||||||
'--personal-cipher-prefs',
|
|
||||||
'--personal-cipher-preferences',
|
|
||||||
'--personal-compress-prefs',
|
|
||||||
'--personal-compress-preferences',
|
|
||||||
## export/import
|
|
||||||
'--import',
|
|
||||||
'--export',
|
|
||||||
'--export-secret-keys',
|
|
||||||
'--export-secret-subkeys',
|
|
||||||
'--fingerprint',
|
|
||||||
])
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
## check that allowed is a subset of possible
|
## check that allowed is a subset of all gnupg_options
|
||||||
assert allowed.issubset(possible)
|
assert allowed.issubset(gnupg_options)
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
raise UsageError("'allowed' isn't a subset of known options, diff: %s"
|
raise UsageError("'allowed' isn't a subset of known options, diff: %s"
|
||||||
% allowed.difference(possible))
|
% allowed.difference(gnupg_options))
|
||||||
|
|
||||||
## if we got a list of args, join them
|
## if we got a list of args, join them
|
||||||
##
|
##
|
||||||
|
@ -504,7 +262,10 @@ def _sanitise(*args):
|
||||||
:rtype: str
|
:rtype: str
|
||||||
:returns: A string of the items in ``checked`` delimited by spaces.
|
:returns: A string of the items in ``checked`` delimited by spaces.
|
||||||
"""
|
"""
|
||||||
safe_option = str()
|
checked = str()
|
||||||
|
none_options = _get_options_group("none_options")
|
||||||
|
hex_options = _get_options_group("hex_options")
|
||||||
|
hex_or_none_options = _get_options_group("hex_or_none_options")
|
||||||
|
|
||||||
if not _util._py3k:
|
if not _util._py3k:
|
||||||
if not isinstance(arg, list) and isinstance(arg, unicode):
|
if not isinstance(arg, list) and isinstance(arg, unicode):
|
||||||
|
@ -667,6 +428,313 @@ def _sanitise_list(arg_list):
|
||||||
if safe_arg != "":
|
if safe_arg != "":
|
||||||
yield safe_arg
|
yield safe_arg
|
||||||
|
|
||||||
|
def _get_options_group(group=None):
|
||||||
|
"""Get a specific group of options which are allowed."""
|
||||||
|
|
||||||
|
#: These expect a hexidecimal keyid as their argument, and can be parsed
|
||||||
|
#: with :func:`_is_hex`.
|
||||||
|
hex_options = frozenset(['--check-sigs',
|
||||||
|
'--default-key',
|
||||||
|
'--default-recipient',
|
||||||
|
'--delete-keys',
|
||||||
|
'--delete-secret-keys',
|
||||||
|
'--delete-secret-and-public-keys',
|
||||||
|
'--desig-revoke',
|
||||||
|
'--export',
|
||||||
|
'--export-secret-keys',
|
||||||
|
'--export-secret-subkeys',
|
||||||
|
'--fingerprint',
|
||||||
|
'--gen-revoke',
|
||||||
|
'--list-key',
|
||||||
|
'--list-keys',
|
||||||
|
'--list-public-keys',
|
||||||
|
'--list-secret-keys',
|
||||||
|
'--list-sigs',
|
||||||
|
'--recipient',
|
||||||
|
'--recv-keys',
|
||||||
|
'--send-keys',
|
||||||
|
])
|
||||||
|
#: These options expect value which are left unchecked, though still run
|
||||||
|
#: through :func:`_fix_unsafe`.
|
||||||
|
unchecked_options = frozenset(['--list-options',
|
||||||
|
'--passphrase-fd',
|
||||||
|
'--status-fd',
|
||||||
|
'--verify-options',
|
||||||
|
])
|
||||||
|
#: These have their own parsers and don't really fit into a group
|
||||||
|
other_options = frozenset(['--debug-level',
|
||||||
|
'--keyserver',
|
||||||
|
|
||||||
|
])
|
||||||
|
#: These should have a directory for an argument
|
||||||
|
dir_options = frozenset(['--homedir',
|
||||||
|
])
|
||||||
|
#: These expect a keyring or keyfile as their argument
|
||||||
|
keyring_options = frozenset(['--keyring',
|
||||||
|
'--primary-keyring',
|
||||||
|
'--secret-keyring',
|
||||||
|
'--trustdb-name',
|
||||||
|
])
|
||||||
|
#: These expect a filename (or the contents of a file as a string) or None
|
||||||
|
#: (meaning that they read from stdin)
|
||||||
|
file_or_none_options = frozenset(['--decrypt',
|
||||||
|
'--decrypt-files',
|
||||||
|
'--encrypt',
|
||||||
|
'--encrypt-files',
|
||||||
|
'--import',
|
||||||
|
'--verify',
|
||||||
|
'--verify-files',
|
||||||
|
])
|
||||||
|
#: These options expect a string. see :func:`_check_preferences`.
|
||||||
|
pref_options = frozenset(['--digest-algo',
|
||||||
|
'--cipher-algo',
|
||||||
|
'--compress-algo',
|
||||||
|
'--compression-algo',
|
||||||
|
'--cert-digest-algo',
|
||||||
|
'--personal-digest-prefs',
|
||||||
|
'--personal-digest-preferences',
|
||||||
|
'--personal-cipher-prefs',
|
||||||
|
'--personal-cipher-preferences',
|
||||||
|
'--personal-compress-prefs',
|
||||||
|
'--personal-compress-preferences',
|
||||||
|
'--print-md',
|
||||||
|
])
|
||||||
|
#: These options expect no arguments
|
||||||
|
none_options = frozenset(['--always-trust',
|
||||||
|
'--armor',
|
||||||
|
'--armour',
|
||||||
|
'--batch',
|
||||||
|
'--check-sigs',
|
||||||
|
'--check-trustdb',
|
||||||
|
'--clearsign',
|
||||||
|
'--debug-all',
|
||||||
|
'--default-recipient-self',
|
||||||
|
'--detach-sign',
|
||||||
|
'--export',
|
||||||
|
'--export-secret-keys',
|
||||||
|
'--export-secret-subkeys',
|
||||||
|
'--fingerprint',
|
||||||
|
'--fixed-list-mode',
|
||||||
|
'--gen-key',
|
||||||
|
'--list-config',
|
||||||
|
'--list-key',
|
||||||
|
'--list-keys',
|
||||||
|
'--list-packets',
|
||||||
|
'--list-public-keys',
|
||||||
|
'--list-secret-keys',
|
||||||
|
'--list-sigs',
|
||||||
|
'--no-default-keyring',
|
||||||
|
'--no-default-recipient',
|
||||||
|
'--no-emit-version',
|
||||||
|
'--no-options',
|
||||||
|
'--no-tty',
|
||||||
|
'--no-use-agent',
|
||||||
|
'--no-verbose',
|
||||||
|
'--print-mds',
|
||||||
|
'--quiet',
|
||||||
|
'--sign',
|
||||||
|
'--symmetric',
|
||||||
|
'--use-agent',
|
||||||
|
'--verbose',
|
||||||
|
'--version',
|
||||||
|
'--with-colons',
|
||||||
|
'--yes',
|
||||||
|
])
|
||||||
|
#: These options expect either None or a hex string
|
||||||
|
hex_or_none_options = hex_options.intersection(none_options)
|
||||||
|
allowed = hex_options.union(unchecked_options, other_options, dir_options,
|
||||||
|
keyring_options, file_or_none_options,
|
||||||
|
pref_options, none_options)
|
||||||
|
|
||||||
|
if group and group in locals().keys():
|
||||||
|
return locals()[group]
|
||||||
|
|
||||||
|
def _get_all_gnupg_options():
|
||||||
|
"""Get all GnuPG options and flags.
|
||||||
|
|
||||||
|
This is hardcoded within a local scope to reduce the chance of a tampered
|
||||||
|
GnuPG binary reporting falsified option sets, i.e. because certain options
|
||||||
|
(namedly the '--no-options' option, which prevents the usage of gpg.conf
|
||||||
|
files) are necessary and statically specified in
|
||||||
|
:meth:`gnupg.GPG._makeargs`, if the inputs into Python are already
|
||||||
|
controlled, and we were to summon the GnuPG binary to ask it for its
|
||||||
|
options, it would be possible to receive a falsified options set missing
|
||||||
|
the '--no-options' option in response. This seems unlikely, and the method
|
||||||
|
is stupid and ugly, but at least we'll never have to debug whether or not
|
||||||
|
an option *actually* disappeared in a different GnuPG version, or some
|
||||||
|
funny business is happening.
|
||||||
|
|
||||||
|
These are the options as of GnuPG 1.4.12; the current stable branch of the
|
||||||
|
2.1.x tree contains a few more -- if you need them you'll have to add them
|
||||||
|
in here.
|
||||||
|
|
||||||
|
:ivar frozenset gnupg_options: All known GPG options and flags.
|
||||||
|
:rtype: frozenset
|
||||||
|
:returns: ``gnupg_options``
|
||||||
|
"""
|
||||||
|
three_hundred_eighteen = ("""
|
||||||
|
--allow-freeform-uid --multifile
|
||||||
|
--allow-multiple-messages --no
|
||||||
|
--allow-multisig-verification --no-allow-freeform-uid
|
||||||
|
--allow-non-selfsigned-uid --no-allow-multiple-messages
|
||||||
|
--allow-secret-key-import --no-allow-non-selfsigned-uid
|
||||||
|
--always-trust --no-armor
|
||||||
|
--armor --no-armour
|
||||||
|
--armour --no-ask-cert-expire
|
||||||
|
--ask-cert-expire --no-ask-cert-level
|
||||||
|
--ask-cert-level --no-ask-sig-expire
|
||||||
|
--ask-sig-expire --no-auto-check-trustdb
|
||||||
|
--attribute-fd --no-auto-key-locate
|
||||||
|
--attribute-file --no-auto-key-retrieve
|
||||||
|
--auto-check-trustdb --no-batch
|
||||||
|
--auto-key-locate --no-comments
|
||||||
|
--auto-key-retrieve --no-default-keyring
|
||||||
|
--batch --no-default-recipient
|
||||||
|
--bzip2-compress-level --no-disable-mdc
|
||||||
|
--bzip2-decompress-lowmem --no-emit-version
|
||||||
|
--card-edit --no-encrypt-to
|
||||||
|
--card-status --no-escape-from-lines
|
||||||
|
--cert-digest-algo --no-expensive-trust-checks
|
||||||
|
--cert-notation --no-expert
|
||||||
|
--cert-policy-url --no-force-mdc
|
||||||
|
--change-pin --no-force-v3-sigs
|
||||||
|
--charset --no-force-v4-certs
|
||||||
|
--check-sig --no-for-your-eyes-only
|
||||||
|
--check-sigs --no-greeting
|
||||||
|
--check-trustdb --no-groups
|
||||||
|
--cipher-algo --no-literal
|
||||||
|
--clearsign --no-mangle-dos-filenames
|
||||||
|
--command-fd --no-mdc-warning
|
||||||
|
--command-file --no-options
|
||||||
|
--comment --no-permission-warning
|
||||||
|
--completes-needed --no-pgp2
|
||||||
|
--compress-algo --no-pgp6
|
||||||
|
--compression-algo --no-pgp7
|
||||||
|
--compress-keys --no-pgp8
|
||||||
|
--compress-level --no-random-seed-file
|
||||||
|
--compress-sigs --no-require-backsigs
|
||||||
|
--ctapi-driver --no-require-cross-certification
|
||||||
|
--dearmor --no-require-secmem
|
||||||
|
--dearmour --no-rfc2440-text
|
||||||
|
--debug --no-secmem-warning
|
||||||
|
--debug-all --no-show-notation
|
||||||
|
--debug-ccid-driver --no-show-photos
|
||||||
|
--debug-level --no-show-policy-url
|
||||||
|
--decrypt --no-sig-cache
|
||||||
|
--decrypt-files --no-sig-create-check
|
||||||
|
--default-cert-check-level --no-sk-comments
|
||||||
|
--default-cert-expire --no-strict
|
||||||
|
--default-cert-level --notation-data
|
||||||
|
--default-comment --not-dash-escaped
|
||||||
|
--default-key --no-textmode
|
||||||
|
--default-keyserver-url --no-throw-keyid
|
||||||
|
--default-preference-list --no-throw-keyids
|
||||||
|
--default-recipient --no-tty
|
||||||
|
--default-recipient-self --no-use-agent
|
||||||
|
--default-sig-expire --no-use-embedded-filename
|
||||||
|
--delete-keys --no-utf8-strings
|
||||||
|
--delete-secret-and-public-keys --no-verbose
|
||||||
|
--delete-secret-keys --no-version
|
||||||
|
--desig-revoke --openpgp
|
||||||
|
--detach-sign --options
|
||||||
|
--digest-algo --output
|
||||||
|
--disable-ccid --override-session-key
|
||||||
|
--disable-cipher-algo --passphrase
|
||||||
|
--disable-dsa2 --passphrase-fd
|
||||||
|
--disable-mdc --passphrase-file
|
||||||
|
--disable-pubkey-algo --passphrase-repeat
|
||||||
|
--display --pcsc-driver
|
||||||
|
--display-charset --personal-cipher-preferences
|
||||||
|
--dry-run --personal-cipher-prefs
|
||||||
|
--dump-options --personal-compress-preferences
|
||||||
|
--edit-key --personal-compress-prefs
|
||||||
|
--emit-version --personal-digest-preferences
|
||||||
|
--enable-dsa2 --personal-digest-prefs
|
||||||
|
--enable-progress-filter --pgp2
|
||||||
|
--enable-special-filenames --pgp6
|
||||||
|
--enarmor --pgp7
|
||||||
|
--enarmour --pgp8
|
||||||
|
--encrypt --photo-viewer
|
||||||
|
--encrypt-files --pipemode
|
||||||
|
--encrypt-to --preserve-permissions
|
||||||
|
--escape-from-lines --primary-keyring
|
||||||
|
--exec-path --print-md
|
||||||
|
--exit-on-status-write-error --print-mds
|
||||||
|
--expert --quick-random
|
||||||
|
--export --quiet
|
||||||
|
--export-options --reader-port
|
||||||
|
--export-ownertrust --rebuild-keydb-caches
|
||||||
|
--export-secret-keys --recipient
|
||||||
|
--export-secret-subkeys --recv-keys
|
||||||
|
--fast-import --refresh-keys
|
||||||
|
--fast-list-mode --remote-user
|
||||||
|
--fetch-keys --require-backsigs
|
||||||
|
--fingerprint --require-cross-certification
|
||||||
|
--fixed-list-mode --require-secmem
|
||||||
|
--fix-trustdb --rfc1991
|
||||||
|
--force-mdc --rfc2440
|
||||||
|
--force-ownertrust --rfc2440-text
|
||||||
|
--force-v3-sigs --rfc4880
|
||||||
|
--force-v4-certs --run-as-shm-coprocess
|
||||||
|
--for-your-eyes-only --s2k-cipher-algo
|
||||||
|
--gen-key --s2k-count
|
||||||
|
--gen-prime --s2k-digest-algo
|
||||||
|
--gen-random --s2k-mode
|
||||||
|
--gen-revoke --search-keys
|
||||||
|
--gnupg --secret-keyring
|
||||||
|
--gpg-agent-info --send-keys
|
||||||
|
--gpgconf-list --set-filename
|
||||||
|
--gpgconf-test --set-filesize
|
||||||
|
--group --set-notation
|
||||||
|
--help --set-policy-url
|
||||||
|
--hidden-encrypt-to --show-keyring
|
||||||
|
--hidden-recipient --show-notation
|
||||||
|
--homedir --show-photos
|
||||||
|
--honor-http-proxy --show-policy-url
|
||||||
|
--ignore-crc-error --show-session-key
|
||||||
|
--ignore-mdc-error --sig-keyserver-url
|
||||||
|
--ignore-time-conflict --sign
|
||||||
|
--ignore-valid-from --sign-key
|
||||||
|
--import --sig-notation
|
||||||
|
--import-options --sign-with
|
||||||
|
--import-ownertrust --sig-policy-url
|
||||||
|
--interactive --simple-sk-checksum
|
||||||
|
--keyid-format --sk-comments
|
||||||
|
--keyring --skip-verify
|
||||||
|
--keyserver --status-fd
|
||||||
|
--keyserver-options --status-file
|
||||||
|
--lc-ctype --store
|
||||||
|
--lc-messages --strict
|
||||||
|
--limit-card-insert-tries --symmetric
|
||||||
|
--list-config --temp-directory
|
||||||
|
--list-key --textmode
|
||||||
|
--list-keys --throw-keyid
|
||||||
|
--list-only --throw-keyids
|
||||||
|
--list-options --trustdb-name
|
||||||
|
--list-ownertrust --trusted-key
|
||||||
|
--list-packets --trust-model
|
||||||
|
--list-public-keys --try-all-secrets
|
||||||
|
--list-secret-keys --ttyname
|
||||||
|
--list-sig --ttytype
|
||||||
|
--list-sigs --ungroup
|
||||||
|
--list-trustdb --update-trustdb
|
||||||
|
--load-extension --use-agent
|
||||||
|
--local-user --use-embedded-filename
|
||||||
|
--lock-multiple --user
|
||||||
|
--lock-never --utf8-strings
|
||||||
|
--lock-once --verbose
|
||||||
|
--logger-fd --verify
|
||||||
|
--logger-file --verify-files
|
||||||
|
--lsign-key --verify-options
|
||||||
|
--mangle-dos-filenames --version
|
||||||
|
--marginals-needed --warranty
|
||||||
|
--max-cert-depth --with-colons
|
||||||
|
--max-output --with-fingerprint
|
||||||
|
--merge-only --with-key-data
|
||||||
|
--min-cert-level --yes
|
||||||
|
""").split()
|
||||||
|
gnupg_options = frozenset(three_hundred_eighteen)
|
||||||
|
return gnupg_options
|
||||||
|
|
||||||
def nodata(status_code):
|
def nodata(status_code):
|
||||||
"""Translate NODATA status codes from GnuPG to messages."""
|
"""Translate NODATA status codes from GnuPG to messages."""
|
||||||
|
|
Loading…
Reference in New Issue