NeoMutt  2020-11-20
Teaching an old dog new tricks
DOXYGEN
config.c
Go to the documentation of this file.
1 
29 #include "config.h"
30 #include <stddef.h>
31 #include <config/lib.h>
32 #include <stdbool.h>
33 #include "private.h"
34 #include "lib.h"
35 #include "init.h"
36 
37 bool config_init_ncrypt(struct ConfigSet *cs);
38 
39 // clang-format off
40 
44 const struct Mapping SortKeyMethods[] = {
45  { "address", SORT_ADDRESS },
46  { "date", SORT_DATE },
47  { "keyid", SORT_KEYID },
48  { "trust", SORT_TRUST },
49  { NULL, 0 },
50 };
51 
52 #ifdef CRYPT_BACKEND_GPGME
54 #endif
67 char * C_PgpSignAs;
70 char * C_SmimeSignAs;
75 unsigned char C_PgpEncryptSelf;
76 unsigned char C_PgpMimeAuto;
80 unsigned char C_SmimeEncryptSelf;
82 #ifdef CRYPT_BACKEND_GPGME
84 #endif
88 struct Regex * C_PgpGoodSign;
115 char * C_SmimeKeys;
123 unsigned char C_CryptVerifySig;
124 // clang-format on
125 
126 struct ConfigDef NcryptVars[] = {
127  // clang-format off
128  { "crypt_confirmhook", DT_BOOL, &C_CryptConfirmhook, true, 0, NULL,
129  "Prompt the user to confirm keys before use"
130  },
131  { "crypt_opportunistic_encrypt", DT_BOOL, &C_CryptOpportunisticEncrypt, false, 0, NULL,
132  "Enable encryption when the recipient's key is available"
133  },
134  { "crypt_opportunistic_encrypt_strong_keys", DT_BOOL, &C_CryptOpportunisticEncryptStrongKeys, false, 0, NULL,
135  "Enable encryption only when strong a key is available"
136  },
137  { "crypt_protected_headers_read", DT_BOOL, &C_CryptProtectedHeadersRead, true, 0, NULL,
138  "Display protected headers (Memory Hole) in the pager"
139  },
140  { "crypt_protected_headers_subject", DT_STRING, &C_CryptProtectedHeadersSubject, IP "...", 0, NULL,
141  "Use this as the subject for encrypted emails"
142  },
143  { "crypt_protected_headers_write", DT_BOOL, &C_CryptProtectedHeadersWrite, false, 0, NULL,
144  "Generate protected header (Memory Hole) for signed and encrypted emails"
145  },
146  { "crypt_timestamp", DT_BOOL, &C_CryptTimestamp, true, 0, NULL,
147  "Add a timestamp to PGP or SMIME output to prevent spoofing"
148  },
149 #ifdef CRYPT_BACKEND_GPGME
150  { "crypt_use_gpgme", DT_BOOL, &C_CryptUseGpgme, true, 0, NULL,
151  "Use GPGME crypto backend"
152  },
153  { "crypt_use_pka", DT_BOOL, &C_CryptUsePka, false, 0, NULL,
154  "Use GPGME to use PKA (lookup PGP keys using DNS)"
155  },
156 #endif
157  { "envelope_from_address", DT_ADDRESS, &C_EnvelopeFromAddress, 0, 0, NULL,
158  "Manually set the sender for outgoing messages"
159  },
160  { "pgp_autoinline", DT_BOOL, &C_PgpAutoinline, false, 0, NULL,
161  "Use old-style inline PGP messages (not recommended)"
162  },
163 #ifdef CRYPT_BACKEND_CLASSIC_PGP
164  { "pgp_check_exit", DT_BOOL, &C_PgpCheckExit, true, 0, NULL,
165  "Check the exit code of PGP subprocess"
166  },
167  { "pgp_check_gpg_decrypt_status_fd", DT_BOOL, &C_PgpCheckGpgDecryptStatusFd, true, 0, NULL,
168  "File descriptor used for status info"
169  },
170  { "pgp_clearsign_command", DT_STRING|DT_COMMAND, &C_PgpClearsignCommand, 0, 0, NULL,
171  "(pgp) External command to inline-sign a message"
172  },
173  { "pgp_decode_command", DT_STRING|DT_COMMAND, &C_PgpDecodeCommand, 0, 0, NULL,
174  "(pgp) External command to decode a PGP attachment"
175  },
176  { "pgp_decrypt_command", DT_STRING|DT_COMMAND, &C_PgpDecryptCommand, 0, 0, NULL,
177  "(pgp) External command to decrypt a PGP message"
178  },
179  { "pgp_decryption_okay", DT_REGEX, &C_PgpDecryptionOkay, 0, 0, NULL,
180  "Text indicating a successful decryption"
181  },
182 #endif
183  { "pgp_default_key", DT_STRING, &C_PgpDefaultKey, 0, 0, NULL,
184  "Default key to use for PGP operations"
185  },
186 #ifdef CRYPT_BACKEND_CLASSIC_PGP
187  { "pgp_encrypt_only_command", DT_STRING|DT_COMMAND, &C_PgpEncryptOnlyCommand, 0, 0, NULL,
188  "(pgp) External command to encrypt, but not sign a message"
189  },
190  { "pgp_encrypt_sign_command", DT_STRING|DT_COMMAND, &C_PgpEncryptSignCommand, 0, 0, NULL,
191  "(pgp) External command to encrypt and sign a message"
192  },
193 #endif
194  { "pgp_entry_format", DT_STRING|DT_NOT_EMPTY, &C_PgpEntryFormat, IP "%4n %t%f %4l/0x%k %-4a %2c %u", 0, NULL,
195  "printf-like format string for the PGP key selection menu"
196  },
197 #ifdef CRYPT_BACKEND_CLASSIC_PGP
198  { "pgp_export_command", DT_STRING|DT_COMMAND, &C_PgpExportCommand, 0, 0, NULL,
199  "(pgp) External command to export a public key from the user's keyring"
200  },
201  { "pgp_getkeys_command", DT_STRING|DT_COMMAND, &C_PgpGetkeysCommand, 0, 0, NULL,
202  "(pgp) External command to download a key for an email address"
203  },
204  { "pgp_good_sign", DT_REGEX, &C_PgpGoodSign, 0, 0, NULL,
205  "Text indicating a good signature"
206  },
207 #endif
208  { "pgp_ignore_subkeys", DT_BOOL, &C_PgpIgnoreSubkeys, true, 0, NULL,
209  "Only use the principal PGP key"
210  },
211 #ifdef CRYPT_BACKEND_CLASSIC_PGP
212  { "pgp_import_command", DT_STRING|DT_COMMAND, &C_PgpImportCommand, 0, 0, NULL,
213  "(pgp) External command to import a key into the user's keyring"
214  },
215  { "pgp_list_pubring_command", DT_STRING|DT_COMMAND, &C_PgpListPubringCommand, 0, 0, NULL,
216  "(pgp) External command to list the public keys in a user's keyring"
217  },
218  { "pgp_list_secring_command", DT_STRING|DT_COMMAND, &C_PgpListSecringCommand, 0, 0, NULL,
219  "(pgp) External command to list the private keys in a user's keyring"
220  },
221 #endif
222  { "pgp_long_ids", DT_BOOL, &C_PgpLongIds, true, 0, NULL,
223  "Display long PGP key IDs to the user"
224  },
225  { "pgp_mime_auto", DT_QUAD, &C_PgpMimeAuto, MUTT_ASKYES, 0, NULL,
226  "Prompt the user to use MIME if inline PGP fails"
227  },
228  { "pgp_retainable_sigs", DT_BOOL, &C_PgpRetainableSigs, false, 0, NULL,
229  "Create nested multipart/signed or encrypted messages"
230  },
231  { "pgp_self_encrypt", DT_BOOL, &C_PgpSelfEncrypt, true, 0, NULL,
232  "Encrypted messages will also be encrypted to C_PgpDefaultKey too"
233  },
234  { "pgp_show_unusable", DT_BOOL, &C_PgpShowUnusable, true, 0, NULL,
235  "Show non-usable keys in the key selection"
236  },
237  { "pgp_sign_as", DT_STRING, &C_PgpSignAs, 0, 0, NULL,
238  "Use this alternative key for signing messages"
239  },
240 #ifdef CRYPT_BACKEND_CLASSIC_PGP
241  { "pgp_sign_command", DT_STRING|DT_COMMAND, &C_PgpSignCommand, 0, 0, NULL,
242  "(pgp) External command to create a detached PGP signature"
243  },
244 #endif
245  { "pgp_sort_keys", DT_SORT|DT_SORT_REVERSE, &C_PgpSortKeys, SORT_ADDRESS, IP SortKeyMethods, NULL,
246  "Sort order for PGP keys"
247  },
248  { "pgp_strict_enc", DT_BOOL, &C_PgpStrictEnc, true, 0, NULL,
249  "Encode PGP signed messages with quoted-printable (don't unset)"
250  },
251 #ifdef CRYPT_BACKEND_CLASSIC_PGP
252  { "pgp_timeout", DT_LONG|DT_NOT_NEGATIVE, &C_PgpTimeout, 300, 0, NULL,
253  "Time in seconds to cache a passphrase"
254  },
255  { "pgp_use_gpg_agent", DT_BOOL, &C_PgpUseGpgAgent, true, 0, NULL,
256  "Use a PGP agent for caching passwords"
257  },
258  { "pgp_verify_command", DT_STRING|DT_COMMAND, &C_PgpVerifyCommand, 0, 0, NULL,
259  "(pgp) External command to verify PGP signatures"
260  },
261  { "pgp_verify_key_command", DT_STRING|DT_COMMAND, &C_PgpVerifyKeyCommand, 0, 0, NULL,
262  "(pgp) External command to verify key information"
263  },
264 #endif
265 #ifdef CRYPT_BACKEND_CLASSIC_SMIME
266  { "smime_ask_cert_label", DT_BOOL, &C_SmimeAskCertLabel, true, 0, NULL,
267  "Prompt the user for a label for SMIME certificates"
268  },
269  { "smime_ca_location", DT_PATH|DT_PATH_FILE, &C_SmimeCaLocation, 0, 0, NULL,
270  "File containing trusted certificates"
271  },
272  { "smime_certificates", DT_PATH|DT_PATH_DIR, &C_SmimeCertificates, 0, 0, NULL,
273  "File containing user's public certificates"
274  },
275  { "smime_decrypt_command", DT_STRING|DT_COMMAND, &C_SmimeDecryptCommand, 0, 0, NULL,
276  "(smime) External command to decrypt an SMIME message"
277  },
278  { "smime_decrypt_use_default_key", DT_BOOL, &C_SmimeDecryptUseDefaultKey, true, 0, NULL,
279  "Use the default key for decryption"
280  },
281 #endif
282  { "smime_default_key", DT_STRING, &C_SmimeDefaultKey, 0, 0, NULL,
283  "Default key for SMIME operations"
284  },
285 #ifdef CRYPT_BACKEND_CLASSIC_SMIME
286  { "smime_encrypt_command", DT_STRING|DT_COMMAND, &C_SmimeEncryptCommand, 0, 0, NULL,
287  "(smime) External command to encrypt a message"
288  },
289 #endif
290  { "smime_encrypt_with", DT_STRING, &C_SmimeEncryptWith, IP "aes256", 0, NULL,
291  "Algorithm for encryption"
292  },
293 #ifdef CRYPT_BACKEND_CLASSIC_SMIME
294  { "smime_get_cert_command", DT_STRING|DT_COMMAND, &C_SmimeGetCertCommand, 0, 0, NULL,
295  "(smime) External command to extract a certificate from a message"
296  },
297  { "smime_get_cert_email_command", DT_STRING|DT_COMMAND, &C_SmimeGetCertEmailCommand, 0, 0, NULL,
298  "(smime) External command to get a certificate for an email"
299  },
300  { "smime_get_signer_cert_command", DT_STRING|DT_COMMAND, &C_SmimeGetSignerCertCommand, 0, 0, NULL,
301  "(smime) External command to extract a certificate from an email"
302  },
303  { "smime_import_cert_command", DT_STRING|DT_COMMAND, &C_SmimeImportCertCommand, 0, 0, NULL,
304  "(smime) External command to import a certificate"
305  },
306 #endif
307 #ifdef CRYPT_BACKEND_CLASSIC_SMIME
308  { "smime_keys", DT_PATH|DT_PATH_DIR, &C_SmimeKeys, 0, 0, NULL,
309  "File containing user's private certificates"
310  },
311  { "smime_pk7out_command", DT_STRING|DT_COMMAND, &C_SmimePk7outCommand, 0, 0, NULL,
312  "(smime) External command to extract a public certificate"
313  },
314 #endif
315  { "smime_self_encrypt", DT_BOOL, &C_SmimeSelfEncrypt, true, 0, NULL,
316  "Encrypted messages will also be encrypt to C_SmimeDefaultKey too"
317  },
318  { "smime_sign_as", DT_STRING, &C_SmimeSignAs, 0, 0, NULL,
319  "Use this alternative key for signing messages"
320  },
321 #ifdef CRYPT_BACKEND_CLASSIC_SMIME
322  { "smime_sign_command", DT_STRING|DT_COMMAND, &C_SmimeSignCommand, 0, 0, NULL,
323  "(smime) External command to sign a message"
324  },
325  { "smime_sign_digest_alg", DT_STRING, &C_SmimeSignDigestAlg, IP "sha256", 0, NULL,
326  "Digest algorithm"
327  },
328  { "smime_timeout", DT_NUMBER|DT_NOT_NEGATIVE, &C_SmimeTimeout, 300, 0, NULL,
329  "Time in seconds to cache a passphrase"
330  },
331  { "smime_verify_command", DT_STRING|DT_COMMAND, &C_SmimeVerifyCommand, 0, 0, NULL,
332  "(smime) External command to verify a signed message"
333  },
334  { "smime_verify_opaque_command", DT_STRING|DT_COMMAND, &C_SmimeVerifyOpaqueCommand, 0, 0, NULL,
335  "(smime) External command to verify a signature"
336  },
337 #endif
338  { "smime_is_default", DT_BOOL, &C_SmimeIsDefault, false, 0, NULL,
339  "Use SMIME rather than PGP by default"
340  },
341  { "pgp_auto_decode", DT_BOOL, &C_PgpAutoDecode, false, 0, NULL,
342  "Automatically decrypt PGP messages"
343  },
344  { "crypt_verify_sig", DT_QUAD, &C_CryptVerifySig, MUTT_YES, 0, NULL,
345  "Verify PGP or SMIME signatures"
346  },
347  { "crypt_protected_headers_save", DT_BOOL, &C_CryptProtectedHeadersSave, false, 0, NULL,
348  "Save the cleartext Subject with the headers"
349  },
350 
351  { "pgp_create_traditional", DT_SYNONYM, NULL, IP "pgp_autoinline", },
352  { "pgp_self_encrypt_as", DT_SYNONYM, NULL, IP "pgp_default_key", },
353  { "pgp_verify_sig", DT_SYNONYM, NULL, IP "crypt_verify_sig", },
354  { "smime_self_encrypt_as", DT_SYNONYM, NULL, IP "smime_default_key", },
355 
356  { "pgp_encrypt_self", DT_DEPRECATED|DT_QUAD, &C_PgpEncryptSelf, MUTT_NO },
357  { "smime_encrypt_self", DT_DEPRECATED|DT_QUAD, &C_SmimeEncryptSelf, MUTT_NO },
358 
359  { NULL, 0, NULL, 0, 0, NULL, NULL },
360  // clang-format on
361 };
362 
367 {
368  return cs_register_variables(cs, NcryptVars, 0);
369 }
char * C_SmimeVerifyOpaqueCommand
Config: (smime) External command to verify a signature.
Definition: config.c:121
bool C_PgpUseGpgAgent
Config: Use a PGP agent for caching passwords.
Definition: config.c:90
char * C_SmimeEncryptCommand
Config: (smime) External command to encrypt a message.
Definition: config.c:110
Container for lots of config items.
Definition: set.h:228
#define IP
Definition: set.h:54
unsigned char C_CryptVerifySig
Config: Verify PGP or SMIME signatures.
Definition: config.c:123
#define DT_LONG
a number (long)
Definition: types.h:33
#define DT_NOT_EMPTY
Empty strings are not allowed.
Definition: types.h:46
Config/command parsing.
char * C_SmimeDecryptCommand
Config: (smime) External command to decrypt an SMIME message.
Definition: config.c:108
char * C_SmimePk7outCommand
Config: (smime) External command to extract a public certificate.
Definition: config.c:116
#define DT_REGEX
regular expressions
Definition: types.h:38
char * C_SmimeGetSignerCertCommand
Config: (smime) External command to extract a certificate from an email.
Definition: config.c:113
bool C_CryptProtectedHeadersRead
Config: Display protected headers (Memory Hole) in the pager.
Definition: config.c:58
#define DT_SORT
sorting methods
Definition: types.h:40
Sort by email address.
Definition: sort2.h:56
An email address.
Definition: address.h:34
#define DT_NOT_NEGATIVE
Negative numbers are not allowed.
Definition: types.h:47
char * C_PgpGetkeysCommand
Config: (pgp) External command to download a key for an email address.
Definition: config.c:97
long C_SmimeTimeout
Config: Time in seconds to cache a passphrase.
Definition: config.c:119
unsigned char C_PgpMimeAuto
Config: Prompt the user to use MIME if inline PGP fails.
Definition: config.c:76
bool C_CryptUseGpgme
Config: Use GPGME crypto backend.
Definition: config.c:83
#define DT_SORT_REVERSE
Sort flag for -reverse prefix.
Definition: sort2.h:38
bool C_CryptOpportunisticEncryptStrongKeys
Config: Enable encryption only when strong a key is available.
Definition: config.c:57
Config item definition.
Definition: set.h:61
Shared constants/structs that are private to libconn.
unsigned char C_SmimeEncryptSelf
Definition: config.c:80
#define DT_QUAD
quad-option (no/yes/ask-no/ask-yes)
Definition: types.h:37
char * C_PgpDecodeCommand
Config: (pgp) External command to decode a PGP attachment.
Definition: config.c:92
Convenience wrapper for the config headers.
#define DT_PATH_DIR
Path is a directory.
Definition: types.h:53
char * C_SmimeVerifyCommand
Config: (smime) External command to verify a signed message.
Definition: config.c:120
char * C_SmimeKeys
Config: File containing user&#39;s private certificates.
Definition: config.c:115
char * C_PgpEncryptSignCommand
Config: (pgp) External command to encrypt and sign a message.
Definition: config.c:95
bool C_CryptOpportunisticEncrypt
Config: Enable encryption when the recipient&#39;s key is available.
Definition: config.c:56
char * C_PgpEncryptOnlyCommand
Config: (pgp) External command to encrypt, but not sign a message.
Definition: config.c:94
char * C_PgpSignAs
Config: Use this alternative key for signing messages.
Definition: config.c:67
bool C_CryptTimestamp
Config: Add a timestamp to PGP or SMIME output to prevent spoofing.
Definition: config.c:74
bool C_PgpAutoDecode
Config: Automatically decrypt PGP messages.
Definition: config.c:122
char * C_PgpDefaultKey
Config: Default key to use for PGP operations.
Definition: config.c:66
bool C_SmimeSelfEncrypt
Config: Encrypted messages will also be encrypt to $smime_default_key too.
Definition: config.c:81
bool C_PgpShowUnusable
Config: Show non-usable keys in the key selection.
Definition: config.c:64
char * C_PgpClearsignCommand
Config: (pgp) External command to inline-sign a message.
Definition: config.c:91
#define DT_PATH_FILE
Path is a file.
Definition: types.h:54
char * C_PgpDecryptCommand
Config: (pgp) External command to decrypt a PGP message.
Definition: config.c:93
bool C_CryptUsePka
Config: Use GPGME to use PKA (lookup PGP keys using DNS)
Definition: config.c:53
#define DT_ADDRESS
e-mail address
Definition: types.h:29
bool cs_register_variables(const struct ConfigSet *cs, struct ConfigDef vars[], int flags)
Register a set of config items.
Definition: set.c:286
#define DT_STRING
a string
Definition: types.h:41
bool C_SmimeIsDefault
Config: Use SMIME rather than PGP by default.
Definition: config.c:61
Sort by encryption key&#39;s trust level.
Definition: sort2.h:58
#define DT_PATH
a path to a file/directory
Definition: types.h:36
char * C_SmimeEncryptWith
Config: Algorithm for encryption.
Definition: config.c:71
#define DT_DEPRECATED
Config item shouldn&#39;t be used any more.
Definition: types.h:79
bool C_SmimeAskCertLabel
Config: Prompt the user for a label for SMIME certificates.
Definition: config.c:105
char * C_SmimeCertificates
Config: File containing user&#39;s public certificates.
Definition: config.c:107
char * C_SmimeImportCertCommand
Config: (smime) External command to import a certificate.
Definition: config.c:114
char * C_SmimeCaLocation
Config: File containing trusted certificates.
Definition: config.c:106
#define DT_COMMAND
A command.
Definition: types.h:50
char * C_PgpSignCommand
Config: (pgp) External command to create a detached PGP signature.
Definition: config.c:101
Ask the user, defaulting to &#39;Yes&#39;.
Definition: quad.h:42
bool C_PgpLongIds
Config: Display long PGP key IDs to the user.
Definition: config.c:63
bool C_PgpRetainableSigs
Config: Create nested multipart/signed or encrypted messages.
Definition: config.c:77
bool config_init_ncrypt(struct ConfigSet *cs)
Register ncrypt config variables - Implements module_init_config_t.
Definition: config.c:366
bool C_PgpStrictEnc
Config: Encode PGP signed messages with quoted-printable (don&#39;t unset)
Definition: config.c:79
char * C_SmimeDefaultKey
Config: Default key for SMIME operations.
Definition: config.c:69
short C_PgpSortKeys
Config: Sort order for PGP keys.
Definition: config.c:104
char * C_SmimeSignAs
Config: Use this alternative key for signing messages.
Definition: config.c:70
char * C_PgpListPubringCommand
Config: (pgp) External command to list the public keys in a user&#39;s keyring.
Definition: config.c:99
char * C_SmimeGetCertCommand
Config: (smime) External command to extract a certificate from a message.
Definition: config.c:111
#define DT_SYNONYM
synonym for another variable
Definition: types.h:42
char * C_PgpEntryFormat
Config: printf-like format string for the PGP key selection menu.
Definition: config.c:68
unsigned char C_PgpEncryptSelf
Definition: config.c:75
Cached regular expression.
Definition: regex3.h:88
bool C_PgpCheckExit
Config: Check the exit code of PGP subprocess.
Definition: config.c:85
bool C_PgpAutoinline
Config: Use old-style inline PGP messages (not recommended)
Definition: config.c:65
char * C_SmimeSignDigestAlg
Config: Digest algorithm.
Definition: config.c:118
bool C_CryptConfirmhook
Config: Prompt the user to confirm keys before use.
Definition: config.c:55
char * C_SmimeGetCertEmailCommand
Config: (smime) External command to get a certificate for an email.
Definition: config.c:112
long C_PgpTimeout
Config: Time in seconds to cache a passphrase.
Definition: config.c:89
bool C_PgpSelfEncrypt
Config: Encrypted messages will also be encrypted to $pgp_default_key too.
Definition: config.c:78
char * C_PgpExportCommand
Config: (pgp) External command to export a public key from the user&#39;s keyring.
Definition: config.c:96
Mapping between user-readable string and a constant.
Definition: mapping.h:31
User answered &#39;No&#39;, or assume &#39;No&#39;.
Definition: quad.h:39
Sort by the encryption key&#39;s ID.
Definition: sort2.h:57
char * C_SmimeSignCommand
Config: (smime) External command to sign a message.
Definition: config.c:117
const struct Mapping SortKeyMethods[]
Sort methods for encryption keys.
Definition: config.c:44
struct Regex * C_PgpGoodSign
Config: Text indicating a good signature.
Definition: config.c:88
Sort by the date the email was sent.
Definition: sort2.h:45
bool C_PgpIgnoreSubkeys
Config: Only use the principal PGP key.
Definition: config.c:62
struct Regex * C_PgpDecryptionOkay
Config: Text indicating a successful decryption.
Definition: config.c:87
bool C_CryptProtectedHeadersSave
Config: Save the cleartext Subject with the headers.
Definition: config.c:59
char * C_PgpImportCommand
Config: (pgp) External command to import a key into the user&#39;s keyring.
Definition: config.c:98
bool C_SmimeDecryptUseDefaultKey
Config: Use the default key for decryption.
Definition: config.c:109
char * C_PgpListSecringCommand
Config: (pgp) External command to list the private keys in a user&#39;s keyring.
Definition: config.c:100
#define DT_NUMBER
a number
Definition: types.h:35
#define DT_BOOL
boolean option
Definition: types.h:30
char * C_PgpVerifyKeyCommand
Config: (pgp) External command to verify key information.
Definition: config.c:103
bool C_PgpCheckGpgDecryptStatusFd
Config: File descriptor used for status info.
Definition: config.c:86
struct Address * C_EnvelopeFromAddress
Config: Manually set the sender for outgoing messages.
Definition: config.c:73
char * C_CryptProtectedHeadersSubject
Config: Use this as the subject for encrypted emails.
Definition: config.c:72
char * C_PgpVerifyCommand
Config: (pgp) External command to verify PGP signatures.
Definition: config.c:102
User answered &#39;Yes&#39;, or assume &#39;Yes&#39;.
Definition: quad.h:40
bool C_CryptProtectedHeadersWrite
Config: Generate protected header (Memory Hole) for signed and encrypted emails.
Definition: config.c:60