Verbose Description of VSD Registry Settings
This document describes the Registry Setting for GnuPG VS-Desktop and GnuPG Desktop in a more verbose manner. In particular the actual used options of the GnuPG engine are described.
We first describe the Registry setting and then the corresponding option used to implement this in GnuPG. The description of the defaults for the engine option may be different from the one used in the installed global configuration files (and thus the Registry).
Keep in mind that some settings can be customized by the user. Below those ones for which this is true in the standard configuration are marked with «option[user]».
Table of Contents
OpenPGP related settings
NewKeyAlgo
Used to change the default algorithm for new keys. Valid values are:
- rsa3072
- rsa4096
- brainpoolP256r1
- brainpoolP384r1
- brainpoolP512r1
- none
The value "none" disallows the generation of new keys.
This Registry setting is read by gpg.conf and implemented using the options default-new-key-algo and forbid-gen-key:
default-new-key-algo
This option can be used to change the default algorithms for key generation. The string is similar to the arguments required for the command –quick-add-key but slightly different. For example the current default of "rsa2048/cert,sign+rsa2048/encr" (or "rsa3072") can be changed to the value of what we currently call future default, which is "ed25519/cert,sign+cv25519/encr". You need to consult the source code to learn the details. Note that the advanced key generation commands can always be used to specify a key algorithm directly.
forbid-gen-key
This option is intended for use in the global config file to disallow the use of generate key commands. Those commands will then fail with the error code for Not Enabled.
DisableWKD
Any value interpreted as non-zero (e.g. "1") disables the use of the Web Key Directory for automatic key lookup.
This Registry setting is read by gpg.conf and implemented using the
option auto-key-locate
. If not set the value for this option is
"local,keyserver,wkd"; if set the value is "local,keyserver".
auto-key-locate mechanisms
GnuPG can automatically locate and retrieve keys as needed using this option. This happens when encrypting to an email address (in the "user@example.com" form), and there are no "user@example.com" keys on the local keyring. This option takes any number of the mechanisms listed below, in the order they are to be tried. Instead of listing the mechanisms as comma delimited arguments, the option may also be given several times to add more mechanism. The option –no-auto-key-locate or the mechanism "clear" resets the list. The default is "local,wkd".
- cert
- Locate a key using DNS CERT, as specified in RFC-4398.
- pka
- Locate a key using DNS PKA.
- dane
- Locate a key using DANE, as specified in draft-ietf-dane-openpgpkey-05.txt.
- wkd
- Locate a key using the Web Key Directory protocol.
- ldap
- Using DNS Service Discovery, check the domain in question for any LDAP keyservers to use. If this fails, attempt to locate the key using the PGP Universal method of checking ‘ldap://keys.(thedomain)’.
- ntds
- Locate the key using the Active Directory (Windows only). This method also allows to search by fingerprint using the command –locate-external-key. Note that this mechanism is actually a shortcut for the mechanism ‘keyserver’ but using "ldap:///" as the keyserver.
- keyserver
- Locate a key using a keyserver. This method also allows to search by fingerprint using the command –locate-external-key if any of the configured keyservers is an LDAP server.
- keyserver-URL
- In addition, a keyserver URL as used in the dirmngr configuration may be used here to query that particular keyserver. This method also allows to search by fingerprint using the command –locate-external-key if the URL specifies an LDAP server.
- local
- Locate the key using the local keyrings. This mechanism allows the user to select the order a local key lookup is done. Thus using ‘–auto-key-locate local’ is identical to –no-auto-key-locate.
- nodefault
- This flag disables the standard local key lookup, done before any of the mechanisms defined by the –auto-key-locate are tried. The position of this mechanism in the list does not matter. It is not required if local is also used.
- clear
- Clear all defined mechanisms. This is useful to override mechanisms given in a config file. Note that a nodefault in mechanisms will also be cleared unless it is given after the clear.
DisableAKR
Any value interpreted as non-zero (e.g. "1") disables the use of automatic key retrieval from key servers when checking signatures. Default value is 1.
This Registry setting is read by gpg.conf and implemented using the
option auto-key-retrieve
. A new installation of VSD disables this
option using the registry (i.e. sets the value for the Registry key to
"1").
auto-key-retrieve[user]
This options enables the automatic retrieving of keys from a keyserver when verifying signatures made by keys that are not on the local keyring.
The order of methods tried to lookup the key is:
If the option
--auto-key-import
is set and the signatures includes an embedded key, that key is used to verify the signature and on verification success that key is imported.If a preferred keyserver is specified in the signature and the option
honor-keyserver-url
is active (which is not the default), that keyserver is tried. Note that the creator of the signature uses the optionsig-keyserver-url
to specify the preferred keyserver for data signatures.If the signature has the Signer's UID set (e.g. using
--sender
while creating the signature) a Web Key Directory (WKD) lookup is done. This is the default configuration but can be disabled by removing WKD from the auto-key-locate list or by using the option--disable-signer-uid
.- If the option
honor-pka-record
is active, the legacy PKA method is used. - If any keyserver is configured and the Issuer Fingerprint is part of the signature (since GnuPG 2.1.16), the configured keyservers are tried.
- If the option
Note that this option makes a “web bug” like behavior possible. Keyserver or Web Key Directory operators can see which keys you request, so by sending you a message signed by a brand new key (which you naturally will not have on your local keyring), the operator can tell both your IP address and the time when you verified the signature.
AutoKeyImport
Any value interpreted as non-zero (e.g. "1") nables an offline
mechanism to get a missing public key for signature verification and
for later encryption to this key. If this option is enabled and a
signature includes an embedded key, that key is used to verify the
signature and on verification success the key is imported. Used
together with IncludeKeyBlock
. [since 3.1.24.0]
This Registry setting is read by gpg.conf and implemented using the
option auto-key-import
auto-key-import[user]
This is an offline mechanism to get a missing key for signature verification and for later encryption to this key. If this option is enabled and a signature includes an embedded key, that key is used to verify the signature and on verification success that key is imported. The option is by default disabled.
On the sender (signing) site the option --include-key-block
needs to
be used to put the public part of the signing key as “Key Block
Subpacket” into the signature.
IncludeKeyBlock
Any value interpreted as non-zero (e.g. "1") puts the used public key
into a data signature. This embedded key is stripped down to a single
user id and includes only the signing subkey and all valid encryption
subkeys. This option is the OpenPGP counterpart to the S/MIME feature
of embedding the certificates into signatures. It allows the
recipient of a signed message to reply encrypted to the sender without
first using any online directories to lookup the key. Used together
with AutoKeyImport
. [since 3.1.24.0]
This Registry setting is read by gpg.conf and implemented using the
option include-key-block
include-key-block[user]
This option is used to embed the actual signing key into a data
signature. The embedded key is stripped down to a single user id and
includes only the signing subkey used to create the signature as well
as as valid encryption subkeys. All other info is removed from the
key to keep it and thus the signature small. This option is the
OpenPGP counterpart to the gpgsm option --include-certs
.
TrustedKey1
The value specifies a fixed trust root (trusted-key). If more than
one trust root is required, the entries TrustedKey2
, TrustedKey3
,
TrustedKey4
, TrustedKey5
may also be used. Take care to specify
the 40 hex-digit fingerprint of those trusted keys.
This Registry setting is read by gpg.conf and implemented using the
option trusted-key
.
trusted-key
One argument with a long key-ID or a fingerprint is required.
Assume that the specified key (which should be given as fingerprint) is as trustworthy as one of your own secret keys. This option is useful if you don't want to keep your secret keys (or one of them) online but still want to be able to check the validity of a given recipient's or signator's key. If the given key is not locally available but an LDAP keyserver is configured the missing key is imported from that server.
EncryptTo1
The value specifies a key wich is always used in addition to the
specified recipient keys. This may be used for an archival key. A
second such key may be given using EncryptTo2
. Please use the 40
hex-digit fingerprint as value and not a user name or the shorter
key-id. [since 3.1.20.7]
This Registry setting is read by gpg.conf and implemented using the
option encrypt-to
encrypt-to
One argument with a name is expected.
Same as --recipient
but this one is intended for use in the options
file and may be used with your own user-id as an “encrypt-to-self”.
These keys are only used when there are other recipients given either
by use of --recipient
or by the asked user id. No trust checking is
performed for these user ids and even disabled keys can be used.
S/MIME related settings
DisableUserTrustlist
Any value interpreted as non-zero (e.g. "1") entirely ignores the users trustlist.txt and considers only the global trustlist. [since 3.1.24.0]
This Registry setting is read by gpg-agent.conf and implemented using the
option no-user-trustlist
no-user-trustlist
Entirely ignore the user trust list and consider only the global trustlist. This implies the option –no-allow-mark-trusted which is anyway set in GnuPG VS-Desktop.
SysTrustlistFile
The list of trusted root certificates are distributed in a file named trustlist.txt. This option allows to specify another file for this list. This is needed to avoid overwriting a custom version of the list by a software update. [since 3.1.24.0]
This Registry setting is read by gpg-agent.conf and implemented using
the option sys-trustlist-name
(note that the gpg-agent options ends
in "name").
sys-trustlist-name
A file name is expected as argument.
Changes the default name for the global trustlist from trustlist.txt
to the give file. If the given file does not contain any slashes and does
not start with ~/
it is searched in the global configuration
directory.
GpgsmCompatibility
Set compatibility flags to work around problems due to non-compliant certificates or data. The flags are given as a comma separated list of flag names and are OR-ed together. Please ask for advise. [since 3.1.23.0]
This Registry setting is read by gpgsm.conf and implemented using the
option compatibility-flags
compatibility-flags
Set compatibility flags to work around problems due to non-compliant certificates or data. The argument is a comma separated list of flag names which are OR-ed together. The special flag "none" clears the list and allows to start over with an empty list. To get a list of available flags the word "help" can be used.
Private key related settings
Note: These settings do not affect smart card PINs.
CacheTime
The number of seconds a password is cached after its last use. Re-triggered with each use. Defaults to 900 (15 minutes).
This Registry setting is read by gpg-agent.conf and implemented using
the option default-cache-ttl
default-cache-ttl[user]
The required argument is a number with the TTL given in seconds.
Set the time a cache entry is valid to N seconds. The default
is 600 seconds. Each time a cache entry is accessed, the entry's
timer is reset. To set an entry's maximum lifetime, use
max-cache-ttl
. Note that a cached passphrase may not be
evicted immediately from memory if no client requests a cache
operation. This is due to an internal housekeeping function which is
only run every few seconds.
CacheTimeMax
The number of seconds a password is cached after its first use. Defaults to 3600 (1 hour).
This Registry setting is read by gpg-agent.conf and implemented using
the option max-cache-ttl
max-cache-ttl[user]
The required argument is a number with the TTL given in seconds.
Set the maximum time a cache entry is valid to N seconds. After this time a cache entry will be expired even if it has been accessed recently or has been set using gpg-preset-passphrase. The default are 2 hours (7200 seconds).
MinPasswordLen
The minimum number of characters required for a password. The default is 9. Note that in addition to this value the regular expressions in asymrules.txt and symrules.txt also take effect. [since 3.1.21.1]
This Registry setting is read by gpg-agent.conf and implemented using the
option min-passphrase-len
.
min-passphrase-len
The required argument is a non-negative number.
Set the minimal length of a passphrase. When entering a new passphrase shorter than this value a warning will be displayed. Defaults to 8.
AsymrulesFile
The pattern defining the rules for passwords to protect private keys are distributed in a file named asymrules.txt. This option allows to specify another file for these pattern. Use only if advised to do so. [since 3.1.21.3]
This Registry setting is read by gpg-agent.conf and implemented using the
option check-passphrase-pattern
.
check-passphrase-pattern=
The required argument is a file name.
Check the passphrase against the pattern given in the file. When
entering a new passphrase matching one of these pattern a warning will
be displayed. If the file name does not contain any slashes and does
not start with ~/
it is searched in the global configuration
directory. The default is not to use any pattern file.
Security note: It is known that checking a passphrase against a list of pattern or even against a complete dictionary is not very effective to enforce good passphrases. Users will soon figure up ways to bypass such a policy. A better policy is to educate users on good security behavior and optionally to run a passphrase cracker regularly on all users passphrases to catch the very simple ones.
SymrulesFile
The pattern defining the rules for symmetric passwords are distributed in a file named symrules.txt. This option allows to specify another file for these pattern. Use only if advised to do so. [since 3.1.21.3]
This Registry setting is read by gpg-agent.conf and implemented using the
option check-sym-passphrase-pattern
.
check-sym-passphrase-pattern
This is the same as sym-passphrase-pattern
but is only used when
creating a new symmetric key to allow the use of different patterns
for such passphrases.
Network related settings
NtdsKeyserver
The value specifies an Active Directory authenticated LDS server name for OpenPGP keys. If a non-standard port is used it must be given delimited by a colon. Examples: "openpgp-lds", "keyserver.example.com:8389".
This Registry setting is read by dirmngr.conf and implemented using
the option keyserver
. The value from the registy is expanded using
the patterm "ldap://$value/????gpgNtds=1". Thus this a shortcut for
the Registry setting Keyserver
; see below for details.
Keyserver
A full keyserver specification string; used only if NtdsKeyserver is not set. The default is "ldap:///" to specify an OpenPGP keyserver as part of the AD. In case of initial delays in name resolution with LDAP servers on Windows, it is often useful to use a value like
openpgp-lds:::::starttls,ntds,areconly
instead of NtdsKeyserver or the URL format.
This Registry setting is read by dirmngr.conf and implemented using the
option keyserver
.
keyserver
The required argument is a string (name).
Use name as your keyserver. This is the server that gpg communicates with to receive keys, send keys, and search for keys. The format of name is an URI:
scheme:[//]keyservername[:port]
The scheme is the type of the keyserver: "hkp" for the HTTP (or
compatible) keyservers or "ldap" for the LDAP keyservers. Note that
your particular installation of GnuPG may have other keyserver types
available as well. Keyserver schemes are case-insensitive. After the
keyserver name, optional keyserver configuration options may be
provided. These are the same as the --keyserver-options
of gpg, but
apply only to this particular keyserver.
Some keyservers synchronize with each other, so there is not always a need to send keys to more than one server. Somes keyservers use round robin DNS to give a different keyserver each time you use it.
If exactly two keyservers are configured and only one is a Tor hidden service (.onion), Dirmngr selects the keyserver to use depending on whether Tor is locally running or not. The check for a running Tor is done for each new connection.
If no keyserver is explicitly configured, dirmngr will use the built-in default of @code{https://keyserver.ubuntu.com}.
Windows users with a keyserver running on their Active Directory may use the short form @code{ldap:///} for @var{name} to access this directory.
For accessing anonymous LDAP keyservers name is in general just
a ldaps://ldap.example.com
. A BaseDN parameter should never be
specified. If authentication is required things are more complicated
and two methods are available:
The modern method (since version 2.2.28) is to use the very same syntax
as used with the option --ldapserver
. Please see over
there for details; here is an example:
keyserver ldap:ldap.example.com::uid=USERNAME,ou=GnuPG Users, dc=example,dc=com:PASSWORD::starttls
The older method is to use a full URL for name; for example:
keyserver ldaps://ldap.example.com/????bindname=uid=USERNAME %2Cou=GnuPG%20Users%2Cdc=example%2Cdc=com,password=PASSWORD
Put this all on one line without any spaces and keep the '%2C' as
given. Replace USERNAME, PASSWORD, and the 'dc' parts according to
the instructions received from your LDAP administrator. Note that
only simple authentication (i.e. cleartext passwords) is supported and
thus using ldaps is strongly suggested (since 2.2.28 "ldaps" defaults
to port 389 and uses STARTTLS). On Windows authentication via AD can
be requested by adding gpgNtds=1
after the fourth question mark
instead of the bindname and password parameter.
Ldapserver
A full LDAP server specification string. This will be used as the default LDAP server for X.509 certificate lookup. For example
ldap.example.com:::::starttls,ntds
uses the given server in StartTLS mode with AD authentication. To use password based authentication this might be used
ldap.example.com::username:mypassword::starttls
[since 3.1.21.1]
This Registry setting is read by dirmngr.conf and implemented using the
option ldapserver
.
ldapserver[user]
The required argument is a string (spec).
This is an alternative way to specify LDAP servers for CRL and X.509
certificate retrieval. If this option is used the servers configured
in dirmngr_ldapservers.conf (or the file given by
--ldapserverlist-file
) are cleared. Note that
dirmngr_ldapservers.conf is not read again by a reload
signal. However, --ldapserver
options are read again.
spec is either a proper LDAP URL or a colon delimited list of the form
hostname:port:username:password:base_dn:flags:
with an optional prefix of ldap:
(but without the two slashes
which would turn this into a proper LDAP URL). flags is a list
of one or more comma delimited keywords:
- plain
- The default: Do not use a TLS secured connection at all; the default port is 389.
- starttls
- Use STARTTLS to secure the connection; the default port is 389.
- ldaptls
- Tunnel LDAP through a TLS connection; the default port is 636.
- ntds
- On Windows authenticate the LDAP connection using the Active Directory with the current user.
- areconly
- On Windows use only the A or AAAA record when resolving the LDAP server name.
Note that in an URL style specification the scheme ldaps://
refers to STARTTLS and not to LDAP-over-TLS.
HttpProxy
If set specifies a proxy for HTTP. For example "proxy.local:8080".
This Registry setting is read by dirmngr.conf and implemented using the
option http-proxy
.
http-proxy[user]
The required argument is a string with host and optionally a colon delimited port number (host, port).
Use host and port to access HTTP servers. The use of this
option overrides the environment variable http_proxy regardless
whether --honor-http-proxy
has been set.
LdapProxy
If set specifies a proxy for LDAP. For example "proxy.local:8389".
This Registry setting is read by dirmngr.conf and implemented using the
option ldap-proxy
.
ldap-proxy[user]
The required argument is a string with host and optionally a colon delimited port number (host, port).
Use host and port to connect to LDAP servers. If port is omitted, port 389 (standard LDAP port) is used. This overrides any specified host and port part in a LDAP URL and will also be used if host and port have been omitted from the URL.
IgnoreHttpDP
Any value interpreted as non-zero (e.g. "1") disables the use of HTTP CRL distribution points.
This Registry setting is read by dirmngr.conf and implemented using the
option ignore-http-dp
.
ignore-http-dp[user]
When looking for the location of a CRL, the to be tested certificate usually contains so called CRL Distribution Point (DP) entries which are URLs describing the way to access the CRL. The first found DP entry is used. With this option all entries using the HTTP scheme are ignored when looking for a suitable DP.
IgnoreLdapDP
Any value interpreted as non-zero (e.g. "1") disables the use of LDAP CRL distribution points.
This Registry setting is read by dirmngr.conf and implemented using the
option ignore-ldap-dp
.
ignore-ldap-dp[user]
This is similar to ignore-http-dp
but ignores entries using the LDAP
scheme. Both options may be combined resulting in ignoring DPs
entirely.
DisableIPv4
Any value interpreted as non-zero (e.g. "1") disables the use of the IPv4 protocol. Used in case of problems with IPv4 connections. [since 3.1.24.0]
This Registry setting is read by dirmngr.conf and implemented using the
option disable-ipv4
.[user]
DisableIPv6
Any value interpreted as non-zero (e.g. "1") disables the use of the IPv6 protocol. Used in case of problems with IPv6 connections. [since 3.1.24.0]
This Registry setting is read by dirmngr.conf and implemented using the
option disable-ipv6
.[user]
ResolverTimeout
The timeout value in seconds for DNS requests. The default is 30 seconds. [since 3.1.24.0]
This Registry setting is read by dirmngr.conf and implemented using the
option resolver-timeout
.[user]
resolver-timeout
Set the timeout for the DNS resolver to N seconds. The default are 30 seconds.
ConnectTimeout
The timeout value in seconds for all HTTP, HTTPS, and other TCP connection attempts. The default is 15 seconds. For LDAP connections the native Windows settings must be used. [since 3.1.24.0]
This Registry setting is read by dirmngr.conf and implemented using the
option connect-timeout
.
connect-[quick-]timeout[user]
Set the timeout for HTTP and generic TCP connection attempts to N seconds. The value set with the quick variant is used when the –quick option has been given to certain Assuan commands. The quick value is capped at the value of the regular connect timeout. The default values are 15 and 2 seconds. Note that the timeout values are for each connection attempt; the connection code will attempt to connect all addresses listed for a server.
ConnectQuickTimeout
Like ConnectTimeout
but for connection attempts which are required
to happen fast. The default is 2 seconds. [since 3.1.24.0]
This Registry setting is read by dirmngr.conf and implemented using the
option connect-quick-timeout
. See above.
Smart card related settings
ReaderPort
The smart card reader to use. The GUI has an option to show all detected readers in the settings menu. The exact string needs to be entered. If this entry is not set and there is no local override the reader to use is determined by a simple heuristic.
This Registry setting is read by scdaemon.conf and implemented using
the option reader-port
. Note that the user may want to select its
own reader-port which is supported by a dedicated GUI dialog in
Kleopatra.
reader-port[user]
The require argument is a string.
This option may be used to specify the port of the card terminal. A value of 0 refers to the first serial device; add 32768 to access USB devices. The default is 32768 (first USB device). PC/SC or CCID readers might need a string here; run the program in verbose mode to get a list of available readers. The default is the first reader found.
To get a list of available CCID readers you may use this command:
echo scd getinfo reader_list \ | gpg-connect-agent --decode | awk '/^D/ @{print $2@}'
SharePort
Any value interpreted as non-zero (e.g. "1") enables the option pcsc-shared. This allows GnuPG VS-Desktop and the other software to access the same card.
This Registry setting is read by scdaemon.conf and implemented using the
option pcsc-shared
. Only the RSCS version the default is set to
enabled if the Registry entry does not exist.
pcsc-shared[user]
Use shared mode to access the card via PC/SC. This is a somewhat dangerous option because scdaemon assumes exclusivbe access to the card and for example caches certain information from the card. Use this option only if you know what you are doing.
DisableSCD
Any value interpreted as non-zero (e.g. "1") entirely disables smart card support. [since 3.1.20.7]
This Registry setting is read by gpg-agent.conf and implemented using the
option disable-scdaemon
.
disable-scdaemon[user]
Do not make use of the scdaemon component. This option has the effect of disabling the ability to do smart card operations. Note, that enabling this option at runtime does not kill an already started scdaemon.
Option[user]: This option can be customized by the user in the standard configuration of GnuPG VS-Desktop.