~ruther/guix-local

b835e158d51c873a99367afd27f3d57cfe92e10e — Ludovic Courtès 6 years ago bd81265
openpgp: Add 'string->openpgp-packet'.

* guix/openpgp.scm (string->openpgp-packet): New procedure.
* tests/openpgp.scm ("verify-openpgp-signature, missing key")
("verify-openpgp-signature, good signatures")
("verify-openpgp-signature, bad signature"): Use it.
2 files changed, 11 insertions(+), 13 deletions(-)

M guix/openpgp.scm
M tests/openpgp.scm
M guix/openpgp.scm => guix/openpgp.scm +8 -1
@@ 55,7 55,8 @@
            lookup-key-by-fingerprint
            get-openpgp-keyring

            read-radix-64)
            read-radix-64
            string->openpgp-packet)
  #:use-module (rnrs bytevectors)
  #:use-module (rnrs io ports)
  #:use-module (srfi srfi-1)


@@ 1067,3 1068,9 @@ end-of-file object if the Radix-64 sequence was truncated."
                        (values #f kind)))
                     (loop (cons str lines))))))))
        (values #f #f))))

(define (string->openpgp-packet str)
  "Read STR, an ASCII-armored OpenPGP packet, and return the corresponding
OpenPGP record."
  (get-packet
   (open-bytevector-input-port (call-with-input-string str read-radix-64))))

M tests/openpgp.scm => tests/openpgp.scm +3 -12
@@ 194,10 194,7 @@ Pz7oopeN72xgggYUNT37ezqN3MeCqw0=
(test-equal "verify-openpgp-signature, missing key"
  `(missing-key ,%rsa-key-fingerprint)
  (let* ((keyring   (get-openpgp-keyring (%make-void-port "r")))
         (signature (get-openpgp-packet
                     (open-bytevector-input-port
                      (call-with-input-string %hello-signature/rsa
                        read-radix-64)))))
         (signature (string->openpgp-packet %hello-signature/rsa)))
    (let-values (((status key)
                  (verify-openpgp-signature signature keyring
                                            (open-input-string "Hello!\n"))))


@@ 214,10 211,7 @@ Pz7oopeN72xgggYUNT37ezqN3MeCqw0=
                (keyring   (get-openpgp-keyring
                            (open-bytevector-input-port
                             (call-with-input-file key read-radix-64))))
                (signature (get-openpgp-packet
                            (open-bytevector-input-port
                             (call-with-input-string signature
                               read-radix-64)))))
                (signature (string->openpgp-packet signature)))
           (let-values (((status key)
                         (verify-openpgp-signature signature keyring
                                                   (open-input-string "Hello!\n"))))


@@ 246,10 240,7 @@ Pz7oopeN72xgggYUNT37ezqN3MeCqw0=
                         "tests/ed25519.key" "tests/ed25519.key"
                         "tests/ed25519.key"))))
    (map (lambda (signature)
           (let ((signature (get-openpgp-packet
                             (open-bytevector-input-port
                              (call-with-input-string signature
                                read-radix-64)))))
           (let ((signature (string->openpgp-packet signature)))
             (let-values (((status key)
                           (verify-openpgp-signature signature keyring
                                                     (open-input-string "What?!"))))