+(defcustom mml-default-encrypt-method "pgpmime"
+ "Default encryption method.
+The string must have an entry in `mml-encrypt-alist'."
+ :version "22.1"
+ :type '(choice (const "smime")
+ (const "pgp")
+ (const "pgpauto")
+ (const "pgpmime")
+ string)
+ :group 'message)
+
+(defcustom mml-signencrypt-style-alist
+ '(("smime" separate)
+ ("pgp" combined)
+ ("pgpauto" combined)
+ ("pgpmime" combined))
+ "Alist specifying if `signencrypt' results in two separate operations or not.
+The first entry indicates the MML security type, valid entries include
+the strings \"smime\", \"pgp\", and \"pgpmime\". The second entry is
+a symbol `separate' or `combined' where `separate' means that MML signs
+and encrypt messages in a two step process, and `combined' means that MML
+signs and encrypt the message in one step.
+
+Note that the output generated by using a `combined' mode is NOT
+understood by all PGP implementations, in particular PGP version
+2 does not support it! See Info node `(message)Security' for
+details."
+ :version "22.1"
+ :group 'message
+ :type '(repeat (list (choice (const :tag "S/MIME" "smime")
+ (const :tag "PGP" "pgp")
+ (const :tag "PGP/MIME" "pgpmime")
+ (string :tag "User defined"))
+ (choice (const :tag "Separate" separate)
+ (const :tag "Combined" combined)))))
+
+(defcustom mml-secure-verbose nil
+ "If non-nil, ask the user about the current operation more verbosely."
+ :group 'message
+ :type 'boolean)
+
+(defcustom mml-secure-cache-passphrase
+ (if (boundp 'password-cache)
+ password-cache
+ t)
+ "If t, cache passphrase."
+ :group 'message
+ :type 'boolean)
+
+(defcustom mml-secure-passphrase-cache-expiry
+ (if (boundp 'password-cache-expiry)
+ password-cache-expiry
+ 16)
+ "How many seconds the passphrase is cached.
+Whether the passphrase is cached at all is controlled by
+`mml-secure-cache-passphrase'."
+ :group 'message
+ :type 'integer)
+
+;;; Configuration/helper functions
+
+(defun mml-signencrypt-style (method &optional style)
+ "Function for setting/getting the signencrypt-style used. Takes two
+arguments, the method (e.g. \"pgp\") and optionally the mode
+\(e.g. combined). If the mode is omitted, the current value is returned.
+
+For example, if you prefer to use combined sign & encrypt with
+smime, putting the following in your Gnus startup file will
+enable that behavior:
+
+\(mml-set-signencrypt-style \"smime\" combined)
+
+You can also customize or set `mml-signencrypt-style-alist' instead."
+ (let ((style-item (assoc method mml-signencrypt-style-alist)))
+ (if style-item
+ (if (or (eq style 'separate)
+ (eq style 'combined))
+ ;; valid style setting?
+ (setf (second style-item) style)
+ ;; otherwise, just return the current value
+ (second style-item))
+ (message "Warning, attempt to set invalid signencrypt style"))))