From b835e158d51c873a99367afd27f3d57cfe92e10e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 30 Apr 2020 15:56:54 +0200 Subject: [PATCH] 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. --- guix/openpgp.scm | 9 ++++++++- tests/openpgp.scm | 15 +++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/guix/openpgp.scm b/guix/openpgp.scm index 987660fa29..2b2997dcd4 100644 --- a/guix/openpgp.scm +++ b/guix/openpgp.scm @@ -55,7 +55,8 @@ (define-module (guix openpgp) 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 @@ (define (skip-headers port) (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)))) diff --git a/tests/openpgp.scm b/tests/openpgp.scm index a85fe6a6cb..0beab6f88b 100644 --- a/tests/openpgp.scm +++ b/tests/openpgp.scm @@ -194,10 +194,7 @@ (define %hello-signature/ed25519/sha1 ;digest-algo: sha1 (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 @@ (define %hello-signature/ed25519/sha1 ;digest-algo: sha1 (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 @@ (define %hello-signature/ed25519/sha1 ;digest-algo: sha1 "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?!"))))