+(defun epg--time-from-seconds (seconds)
+ (let ((number-seconds (string-to-number (concat seconds ".0"))))
+ (cons (floor (/ number-seconds 65536))
+ (floor (mod number-seconds 65536)))))
+
+(defun epg--status-ERRSIG (context string)
+ (if (string-match "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \
+\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)"
+ string)
+ (let ((signature (epg-make-signature 'error)))
+ (epg-context-set-result-for
+ context
+ 'verify
+ (cons signature
+ (epg-context-result-for context 'verify)))
+ (epg-signature-set-key-id
+ signature
+ (match-string 1 string))
+ (epg-signature-set-pubkey-algorithm
+ signature
+ (string-to-number (match-string 2 string)))
+ (epg-signature-set-digest-algorithm
+ signature
+ (string-to-number (match-string 3 string)))
+ (epg-signature-set-class
+ signature
+ (string-to-number (match-string 4 string) 16))
+ (epg-signature-set-creation-time
+ signature
+ (epg--time-from-seconds (match-string 5 string))))))
+
+(defun epg--status-VALIDSIG (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))