103 { NULL, NULL, 0, -1, NULL }
112 {
"crypt_confirm_hook",
DT_BOOL,
true, 0, NULL,
113 "Prompt the user to confirm keys before use"
115 {
"crypt_opportunistic_encrypt",
DT_BOOL,
false, 0, NULL,
116 "Enable encryption when the recipient's key is available"
118 {
"crypt_opportunistic_encrypt_strong_keys",
DT_BOOL,
false, 0, NULL,
119 "Enable encryption only when strong a key is available"
121 {
"crypt_protected_headers_read",
DT_BOOL,
true, 0, NULL,
122 "Display protected headers (Memory Hole) in the pager"
124 {
"crypt_protected_headers_subject",
DT_STRING,
IP "...", 0, NULL,
125 "Use this as the subject for encrypted emails"
127 {
"crypt_protected_headers_weed",
DT_BOOL,
false, 0, NULL,
128 "Controls whether NeoMutt will weed protected header fields"
130 {
"crypt_protected_headers_write",
DT_BOOL,
true, 0, NULL,
131 "Generate protected header (Memory Hole) for signed and encrypted emails"
133 {
"crypt_encryption_info",
DT_BOOL,
true, 0, NULL,
134 "Add an informative block with details about the encryption"
136 {
"crypt_timestamp",
DT_BOOL,
true, 0, NULL,
137 "Add a timestamp to PGP or SMIME output to prevent spoofing"
139 {
"envelope_from_address",
DT_ADDRESS, 0, 0, NULL,
140 "Manually set the sender for outgoing messages"
142 {
"pgp_auto_inline",
DT_BOOL,
false, 0, NULL,
143 "Use old-style inline PGP messages (not recommended)"
145 {
"pgp_default_key",
DT_STRING, 0, 0, NULL,
146 "Default key to use for PGP operations"
149 "printf-like format string for the PGP key selection menu"
151 {
"pgp_ignore_subkeys",
DT_BOOL,
true, 0, NULL,
152 "Only use the principal PGP key"
154 {
"pgp_long_ids",
DT_BOOL,
true, 0, NULL,
155 "Display long PGP key IDs to the user"
158 "Prompt the user to use MIME if inline PGP fails"
160 {
"pgp_retainable_sigs",
DT_BOOL,
false, 0, NULL,
161 "Create nested multipart/signed or encrypted messages"
163 {
"pgp_self_encrypt",
DT_BOOL,
true, 0, NULL,
164 "Encrypted messages will also be encrypted to $pgp_default_key too"
166 {
"pgp_show_unusable",
DT_BOOL,
true, 0, NULL,
167 "Show non-usable keys in the key selection"
170 "Use this alternative key for signing messages"
173 "Sort order for PGP keys"
175 {
"pgp_strict_enc",
DT_BOOL,
true, 0, NULL,
176 "Encode PGP signed messages with quoted-printable (don't unset)"
178 {
"smime_default_key",
DT_STRING, 0, 0, NULL,
179 "Default key for SMIME operations"
181 {
"smime_encrypt_with",
DT_STRING,
IP "aes256", 0, NULL,
182 "Algorithm for encryption"
184 {
"smime_self_encrypt",
DT_BOOL,
true, 0, NULL,
185 "Encrypted messages will also be encrypt to $smime_default_key too"
187 {
"smime_sign_as",
DT_STRING, 0, 0, NULL,
188 "Use this alternative key for signing messages"
190 {
"smime_is_default",
DT_BOOL,
false, 0, NULL,
191 "Use SMIME rather than PGP by default"
193 {
"pgp_auto_decode",
DT_BOOL,
false, 0, NULL,
194 "Automatically decrypt PGP messages"
197 "Verify PGP or SMIME signatures"
199 {
"crypt_protected_headers_save",
DT_BOOL,
false, 0, NULL,
200 "Save the cleartext Subject with the headers"
203 {
"crypt_confirmhook",
DT_SYNONYM,
IP "crypt_confirm_hook",
IP "2021-02-11" },
204 {
"pgp_autoinline",
DT_SYNONYM,
IP "pgp_auto_inline",
IP "2021-02-11" },
205 {
"pgp_create_traditional",
DT_SYNONYM,
IP "pgp_auto_inline",
IP "2004-04-12" },
206 {
"pgp_self_encrypt_as",
DT_SYNONYM,
IP "pgp_default_key",
IP "2018-01-11" },
207 {
"pgp_sort_keys",
DT_SYNONYM,
IP "pgp_key_sort",
IP "2024-11-20" },
208 {
"pgp_verify_sig",
DT_SYNONYM,
IP "crypt_verify_sig",
IP "2002-01-24" },
209 {
"smime_self_encrypt_as",
DT_SYNONYM,
IP "smime_default_key",
IP "2018-01-11" },
218#if defined(CRYPT_BACKEND_GPGME)
225 "Use GPGME crypto backend"
227 {
"crypt_use_pka",
DT_BOOL,
false, 0, NULL,
228 "Use GPGME to use PKA (lookup PGP keys using DNS)"
235#if defined(CRYPT_BACKEND_CLASSIC_PGP)
261 { NULL, NULL, 0, -1, NULL }
266#if defined(CRYPT_BACKEND_CLASSIC_SMIME)
292 { NULL, NULL, 0, -1, NULL }
297#if defined(CRYPT_BACKEND_CLASSIC_PGP)
303 {
"pgp_check_exit",
DT_BOOL,
true, 0, NULL,
304 "Check the exit code of PGP subprocess"
306 {
"pgp_check_gpg_decrypt_status_fd",
DT_BOOL,
true, 0, NULL,
307 "File descriptor used for status info"
310 "(pgp) External command to inline-sign a message"
313 "(pgp) External command to decode a PGP attachment"
316 "(pgp) External command to decrypt a PGP message"
318 {
"pgp_decryption_okay",
DT_REGEX, 0, 0, NULL,
319 "Text indicating a successful decryption"
322 "(pgp) External command to encrypt, but not sign a message"
325 "(pgp) External command to encrypt and sign a message"
328 "(pgp) External command to export a public key from the user's keyring"
331 "(pgp) External command to download a key for an email address"
333 {
"pgp_good_sign",
DT_REGEX, 0, 0, NULL,
334 "Text indicating a good signature"
337 "(pgp) External command to import a key into the user's keyring"
340 "(pgp) External command to list the public keys in a user's keyring"
343 "(pgp) External command to list the private keys in a user's keyring"
346 "(pgp) External command to create a detached PGP signature"
349 "Time in seconds to cache a passphrase"
351 {
"pgp_use_gpg_agent",
DT_BOOL,
true, 0, NULL,
352 "Use a PGP agent for caching passwords"
355 "(pgp) External command to verify PGP signatures"
358 "(pgp) External command to verify key information"
360 {
"pgp_clearsign_command",
DT_SYNONYM,
IP "pgp_clear_sign_command",
IP "2021-02-11" },
361 {
"pgp_getkeys_command",
DT_SYNONYM,
IP "pgp_get_keys_command",
IP "2021-02-11" },
367#if defined(CRYPT_BACKEND_CLASSIC_SMIME)
373 {
"smime_ask_cert_label",
DT_BOOL,
true, 0, NULL,
374 "Prompt the user for a label for SMIME certificates"
377 "File containing trusted certificates"
380 "File containing user's public certificates"
383 "(smime) External command to decrypt an SMIME message"
385 {
"smime_decrypt_use_default_key",
DT_BOOL,
true, 0, NULL,
386 "Use the default key for decryption"
389 "(smime) External command to encrypt a message"
392 "(smime) External command to extract a certificate from a message"
395 "(smime) External command to get a certificate for an email"
398 "(smime) External command to extract a certificate from an email"
401 "(smime) External command to import a certificate"
404 "File containing user's private certificates"
407 "(smime) External command to extract a public certificate"
410 "(smime) External command to sign a message"
412 {
"smime_sign_digest_alg",
DT_STRING,
IP "sha256", 0, NULL,
416 "Time in seconds to cache a passphrase"
419 "(smime) External command to verify a signed message"
422 "(smime) External command to verify a signature"
436#if defined(CRYPT_BACKEND_GPGME)
440#if defined(CRYPT_BACKEND_CLASSIC_PGP)
444#if defined(CRYPT_BACKEND_CLASSIC_SMIME)
Convenience wrapper for the config headers.
bool cs_register_variables(const struct ConfigSet *cs, struct ConfigDef vars[])
Register a set of config items.
uint8_t ExpandoParserFlags
Flags for expando_parse(), e.g. EP_CONDITIONAL.
#define EP_CONDITIONAL
Expando is being used as a condition.
@ ED_PGP_CMD
Pgp Command ED_PGC_ ExpandoDataPgpCmd.
@ ED_SMIME_CMD
Smime Command ED_SMI_ ExpandoDataSmimeCmd.
@ ED_PGP
Pgp ED_PGP_ ExpandoDataPgp.
@ ED_GLOBAL
Global ED_GLO_ ExpandoDataGlobal.
@ ED_PGP_KEY
Pgp_Key ED_PGK_ ExpandoDataPgpKey.
bool config_init_ncrypt(struct ConfigSet *cs)
Register ncrypt config variables - Implements module_init_config_t -.
struct ExpandoNode * node_padding_parse(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Padding Expando - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_pgp_date(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Date Expando - Implements ExpandoDefinition::parse() -.
Convenience wrapper for the library headers.
static const struct ExpandoDefinition SmimeCommandFormatDef[]
Expando definitions.
static struct ConfigDef NcryptVarsPgp[]
PGP Config definitions for the encryption library.
static const struct ExpandoDefinition PgpEntryFormatDef[]
Expando definitions.
static struct ConfigDef NcryptVarsSmime[]
SMIME Config definitions for the encryption library.
static const struct Mapping KeySortMethods[]
Sort methods for encryption keys.
static struct ConfigDef NcryptVars[]
Config definitions for the encryption library.
static const struct ExpandoDefinition PgpCommandFormatDef[]
Expando definitions.
static struct ConfigDef NcryptVarsGpgme[]
GPGME Config definitions for the encryption library.
@ ED_PGP_NUMBER
PgpEntry.num.
@ ED_PGP_USER_ID
PgpUid.addr.
@ ED_PGP_TRUST
PgpUid, TrustFlags.
@ KEY_SORT_ADDRESS
Sort by address.
@ KEY_SORT_DATE
Sort by date.
@ KEY_SORT_TRUST
Sort by trust level.
@ KEY_SORT_KEYID
Sort by key id.
struct ExpandoNode * node_conddate_parse(const char *str, int did, int uid, const char **parsed_until, struct ExpandoParseError *err)
Parse a CondDate format string.
struct ExpandoNode * node_expando_parse_enclosure(const char *str, int did, int uid, char terminator, struct ExpandoFormat *fmt, const char **parsed_until, struct ExpandoParseError *err)
Parse an enclosed Expando.
PGP sign, encrypt, check routines.
@ ED_PGC_KEY_IDS
PgpCommandContext.ids.
@ ED_PGC_FILE_SIGNATURE
PgpCommandContext.sig_fname.
@ ED_PGC_NEED_PASS
PgpCommandContext.need_passphrase.
@ ED_PGC_SIGN_AS
PgpCommandContext.signas.
@ ED_PGC_FILE_MESSAGE
PgpCommandContext.fname.
Misc PGP helper routines.
@ ED_PGK_KEY_CAPABILITIES
PgpKeyInfo.flags, pgp_key_abilities()
@ ED_PGK_KEY_FINGERPRINT
PgpKeyInfo.fingerprint.
@ ED_PGK_PKEY_LENGTH
pgp_principal_key(), PgpKeyInfo.keylen
@ ED_PGK_PKEY_ALGORITHM
pgp_principal_key(), PgpKeyInfo.algorithm
@ ED_PGK_DATE
PgpKeyInfo.gen_time.
@ ED_PGK_PKEY_FINGERPRINT
pgp_principal_key(), PgpKeyInfo.fingerprint
@ ED_PGK_KEY_ID
PgpKeyInfo, pgp_this_keyid()
@ ED_PGK_PROTOCOL
PgpKeyInfo.
@ ED_PGK_PKEY_CAPABILITIES
pgp_principal_key(), PgpKeyInfo.flags, pgp_key_abilities()
@ ED_PGK_KEY_FLAGS
PgpKeyInfo.kflags, pgp_flags()
@ ED_PGK_PKEY_ID
pgp_principal_key(), PgpKeyInfo, pgp_this_keyid()
@ ED_PGK_KEY_ALGORITHM
PgpKeyInfo.algorithm.
@ ED_PGK_KEY_LENGTH
PgpKeyInfo.keylen.
@ ED_PGK_PKEY_FLAGS
pgp_principal_key(), PgpKeyInfo.kflags, pgp_flags()
@ MUTT_ASKYES
Ask the user, defaulting to 'Yes'.
@ MUTT_YES
User answered 'Yes', or assume 'Yes'.
@ ED_SMI_MESSAGE_FILE
SmimeCommandContext.fname.
@ ED_SMI_ALGORITHM
SmimeCommandContext.cryptalg.
@ ED_SMI_SIGNATURE_FILE
SmimeCommandContext.sig_fname.
@ ED_SMI_DIGEST_ALGORITHM
SmimeCommandContext.digestalg.
@ ED_SMI_CERTIFICATE_IDS
SmimeCommandContext.certificates.
@ ED_SMI_KEY
SmimeCommandContext.key.
@ ED_SMI_INTERMEDIATE_IDS
SmimeCommandContext.intermediates.
@ ED_SMI_CERTIFICATE_PATH
Path of Smime certificates.
Container for lots of config items.
Definition of a format string.
int uid
Unique ID, e.g. ED_EMA_SIZE.
int did
Domain ID, e.g. ED_EMAIL.
Buffer for parsing errors.
Mapping between user-readable string and a constant.
#define D_INTERNAL_DEPRECATED
Config item shouldn't be used any more.
#define D_STRING_COMMAND
A command.
#define D_PATH_DIR
Path is a directory.
#define D_PATH_FILE
Path is a file.
@ DT_QUAD
quad-option (no/yes/ask-no/ask-yes)
@ DT_SYNONYM
synonym for another variable
@ DT_ADDRESS
e-mail address
@ DT_REGEX
regular expressions
@ DT_PATH
a path to a file/directory
#define D_SORT_REVERSE
Sort flag for -reverse prefix.
#define D_NOT_EMPTY
Empty strings are not allowed.
#define D_INTEGER_NOT_NEGATIVE
Negative numbers are not allowed.
#define D_ON_STARTUP
May only be set at startup.
@ ED_GLO_PADDING_EOL
Padding to end-of-line.
@ ED_GLO_PADDING_HARD
Hard Padding.
@ ED_GLO_PADDING_SOFT
Soft Padding.