(setcdr entry value)
(epg-context-set-result context (cons (cons name value) result)))))
+(defun epg-signature-to-string (signature)
+ (format "%s signature from %s %s%s"
+ (capitalize (symbol-name (epg-signature-status signature)))
+ (epg-signature-key-id signature)
+ (epg-signature-user-id signature)
+ (if (epg-signature-validity signature)
+ (format " (trust %s)"
+ (epg-signature-validity signature))
+ "")))
+
+(defun epg-verify-result-to-string (verify-result)
+ (mapconcat #'epg-signature-to-string verify-result "\n"))
+
(defun epg-start (context args)
"Start `epg-gpg-program' in a subprocess with given ARGS."
(let* ((args (append (list "--no-tty"
(cons (cons 'delete-problem (string-to-number (match-string 1 string)))
(epg-context-result-for epg-context 'error)))))
+(defun epg-status-SIG_CREATED (process string)
+ (if (string-match "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \
+\\([0-9A-Fa-F][0-9A-Fa-F]\\) \\(.*\\) " string)
+ (epg-context-set-result-for
+ epg-context 'sign
+ (cons (list (cons 'type (string-to-char (match-string 1 string)))
+ (cons 'pubkey-algorithm
+ (string-to-number (match-string 2 string)))
+ (cons 'digest-algorithm
+ (string-to-number (match-string 3 string)))
+ (cons 'class (string-to-number (match-string 4 string) 16))
+ (cons 'creation-time (match-string 5 string))
+ (cons 'fingerprint (substring string (match-end 0))))
+ (epg-context-result-for epg-context 'sign)))))
+
(defun epg-passphrase-callback-function (key-id handback)
(read-passwd
(if (eq key-id 'SYM)
"--detach-sign"
"--sign")))
(apply #'nconc
- (mapcar (lambda (signer)
- (list "-u" signer))
- (epg-context-signers context)))
+ (mapcar
+ (lambda (signer)
+ (list "-u"
+ (epg-sub-key-id
+ (car (epg-key-sub-key-list signer)))))
+ (epg-context-signers context)))
(if (epg-data-file plain)
(list (epg-data-file plain)))))
(epg-wait-for-status context '("BEGIN_SIGNING"))
(list "-u" signer))
(epg-context-signers context)))))
(apply #'nconc
- (mapcar (lambda (recipient)
- (list "-r" recipient))
- recipients))
+ (mapcar
+ (lambda (recipient)
+ (list "-r"
+ (epg-sub-key-id
+ (car (epg-key-sub-key-list recipient)))))
+ recipients))
(if (epg-data-file plain)
(list (epg-data-file plain)))))
(if sign
- (epg-wait-for-status context '("BEGIN_SIGNING")))
- (epg-wait-for-status context '("BEGIN_ENCRYPTION"))
+ (epg-wait-for-status context '("BEGIN_SIGNING"))
+ (epg-wait-for-status context '("BEGIN_ENCRYPTION")))
(if (and (epg-data-string plain)
(eq (process-status (epg-context-process context)) 'run))
(process-send-string (epg-context-process context)