diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-03-20 22:33:52 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-03-20 23:06:47 +0100 |
commit | 1fda6840a892e55b579dfeb8f4590b5cd2874662 (patch) | |
tree | e4abf299e7bfa8df30ec6ca743a761e09d744923 /guix/pk-crypto.scm | |
parent | 2f66e64c53ccae423a791b51cd635ad892f0feab (diff) | |
download | gnu-guix-1fda6840a892e55b579dfeb8f4590b5cd2874662.tar gnu-guix-1fda6840a892e55b579dfeb8f4590b5cd2874662.tar.gz |
pk-crypto: Don't use Ed25519 when libgcrypt is older than 1.6.0.
* guix/pk-crypto.scm (gcrypt-version): New procedure.
* guix/scripts/archive.scm (%key-generation-parameters): New variable.
(%options) <generate-key>: Use it.
* tests/pk-crypto.scm ("sign + verify, Ed25519"): Skip if using gcrypt < 1.6.0.
Diffstat (limited to 'guix/pk-crypto.scm')
-rw-r--r-- | guix/pk-crypto.scm | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/guix/pk-crypto.scm b/guix/pk-crypto.scm index b9ab02861c..481d3f2463 100644 --- a/guix/pk-crypto.scm +++ b/guix/pk-crypto.scm @@ -24,7 +24,8 @@ #:use-module (system foreign) #:use-module (rnrs bytevectors) #:use-module (ice-9 match) - #:export (canonical-sexp? + #:export (gcrypt-version + canonical-sexp? error-source error-string string->canonical-sexp @@ -86,6 +87,17 @@ "Return a pointer to symbol FUNC in libgcrypt." (dynamic-func func lib)))) +(define gcrypt-version + ;; According to the manual, this function must be called before any other, + ;; and it's not clear whether it can be called more than once. So call it + ;; right here from the top level. + (let* ((ptr (libgcrypt-func "gcry_check_version")) + (proc (pointer->procedure '* ptr '(*))) + (version (pointer->string (proc %null-pointer)))) + (lambda () + "Return the version number of libgcrypt as a string." + version))) + (define finalize-canonical-sexp! (libgcrypt-func "gcry_sexp_release")) |