diff options
Diffstat (limited to 'tests/gpgsm/gpgsm-defs.scm')
-rw-r--r-- | tests/gpgsm/gpgsm-defs.scm | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/gpgsm/gpgsm-defs.scm b/tests/gpgsm/gpgsm-defs.scm new file mode 100644 index 0000000..848bc75 --- /dev/null +++ b/tests/gpgsm/gpgsm-defs.scm @@ -0,0 +1,104 @@ +;; Common definitions for the GPGSM test scripts. +;; +;; Copyright (C) 2016 g10 Code GmbH +;; +;; This file is part of GnuPG. +;; +;; GnuPG is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3 of the License, or +;; (at your option) any later version. +;; +;; GnuPG is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, see <http://www.gnu.org/licenses/>. + +(load (in-srcdir "tests" "openpgp" "defs.scm")) + +;; This is the list of certificates that we install in the test +;; environment. +(define certs + (package + (define (new fpr issuer-fpr uid) + (package)) + (define (new-uid CN OU O L C) + (package)) + (define test-1 (new "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E" + "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E" + (new-uid "test cert 1" + "Aegypten Project" + "g10 Code GmbH" + "Düsseldorf" + "DE"))))) +(define all-certs (list certs::test-1)) + +(define gpgsm `(,(tool 'gpgsm) --yes)) ;; more/less options + +(define (tr:gpgsm input args) + (tr:spawn input `(,@gpgsm --output **out** ,@args **in**))) + +(define (pipe:gpgsm args) + (pipe:spawn `(,@gpgsm --output - ,@args -))) + +(define (gpgsm-with-colons args) + (let ((s (call-popen `(,@gpgsm --with-colons ,@args) ""))) + (map (lambda (line) (string-split line #\:)) + (string-split-newlines s)))) + +(define (sm-have-public-key? key) + (catch #f + (pair? (filter (lambda (l) (and (equal? 'fpr (:type l)) + (equal? key::fpr (:fpr l)))) + (gpgsm-with-colons `(--list-keys ,key::fpr)))))) + +(define (sm-have-secret-key? key) + (catch #f + (pair? (filter (lambda (l) (and (equal? 'fpr (:type l)) + (equal? key::fpr (:fpr l)))) + (gpgsm-with-colons `(--list-secret-keys ,key::fpr)))))) + +(define (create-gpgsmhome) + (create-file "gpgsm.conf" + "disable-crl-checks" + "faked-system-time 1008241200") + (create-file "gpg-agent.conf" + (string-append "pinentry-program " (tool 'pinentry)) + "disable-scdaemon") + (start-agent) + (create-file + "trustlist.txt" + "32100C27173EF6E9C4E9A25D3D69F86D37A4F939" + "# CN=test cert 1,OU=Aegypten Project,O=g10 Code GmbH,L=Düsseldorf,C=DE" + "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E S") + + (log "Storing private keys") + (for-each + (lambda (name) + (file-copy (in-srcdir "tests" "gpgsm" name) + (path-join "private-keys-v1.d" + (string-append name ".key")))) + '("32100C27173EF6E9C4E9A25D3D69F86D37A4F939")) + + (log "Importing public demo and test keys") + (call-check `(,@gpgsm --import ,(in-srcdir "tests" "gpgsm" "cert_g10code_test1.der"))) + + (create-sample-files) + (stop-agent)) + +;; Initialize the test environment, install appropriate configuration +;; and start the agent, with the keys from the legacy test suite. +(define (setup-gpgsm-environment) + (if (member "--unpack-tarball" *args*) + (call-check `(,(tool 'gpgtar) --extract --directory=. ,(cadr *args*))) + (create-gpgsm-gpghome)) + (start-agent)) + +(define (setup-gpgsm-environment-no-atexit) + (if (member "--unpack-tarball" *args*) + (call-check `(,(tool 'gpgtar) --extract --directory=. ,(cadr *args*))) + (create-gpgsm-gpghome)) + (start-agent #t)) |