- (if (string-match "\\`\\([^ ]+\\) \\(.*\\)" string)
- (epg-context-set-result-for
- epg-context
- 'verify
- (cons (epg-make-signature
- 'bad
- (match-string 1 string)
- (if (eq (epg-context-protocol epg-context) 'CMS)
- (condition-case nil
- (epg-dn-from-string (match-string 2 string))
- (error (match-string 2 string)))
- (match-string 2 string)))
- (epg-context-result-for epg-context 'verify)))))
+ (epg-signature-status-internal 'bad string))
+
+(defun epg-status-NO_PUBKEY (process string)
+ (epg-context-set-result-for
+ epg-context
+ 'verify
+ (cons (epg-make-signature 'no-pubkey string)
+ (epg-context-result-for epg-context 'verify))))
+
+(defun epg-status-ERRSIG (process string)
+ (let ((signatures (car (epg-context-result-for epg-context 'verify))))
+ (unless signatures
+ (setq signatures (list (epg-make-signature 'error)))
+ (epg-context-set-result-for epg-context 'verify signatures))
+ (when (and (not (eq (epg-signature-status (car signatures)) 'good))
+ (string-match "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \
+\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)"
+ string))
+ (epg-signature-set-key-id
+ (car signatures)
+ (match-string 1 string))
+ (epg-signature-set-pubkey-algorithm
+ (car signatures)
+ (string-to-number (match-string 2 string)))
+ (epg-signature-set-digest-algorithm
+ (car signatures)
+ (string-to-number (match-string 3 string)))
+; (epg-signature-set-class
+; (car signatures)
+; (string-to-number (match-string 4 string) 16))
+ (epg-signature-set-creation-time
+ (car signatures)
+ (match-string 5 string)))))