--- /dev/null
+# For use with gpg --batch --gen-key
+
+Key-Type: DSA
+Key-Length: 1024
+Subkey-Type: ELG-E
+Subkey-Length: 1024
+Name-Real: Joe Tester
+Name-Email: joe@example.net
+Expire-Date: 0
+
+Key-Type: RSA
+Key-Length: 2048
+Key-Usage: sign
+Subkey-Type: RSA
+Subkey-Length: 1024
+Subkey-Usage: auth
+Name-Real: Joe Tester
+Name-Email: joe@example.net
+Expire-Date: 0
+
+Key-Type: RSA
+Key-Length: 2048
+Key-Usage: sign
+Subkey-Type: RSA
+Subkey-Length: 1024
+Subkey-Usage: sign
+Name-Real: Joe Tester
+Name-Email: joe@example.net
+Expire-Date: 0
+
+Key-Type: RSA
+Key-Length: 2048
+Key-Usage: auth
+Name-Real: Joe Tester
+Name-Email: joe@example.net
+Expire-Date: 0
+
+Key-Type: RSA
+Key-Length: 2048
+Key-Usage: encrypt
+Subkey-Type: RSA
+Subkey-Length: 1024
+Subkey-Usage: auth
+Name-Real: Joe Tester
+Name-Email: jojo@example.net
+Expire-Date: 0
+
use TAP::Harness;
use File::Find;
use FindBin;
+use GnuPG::Interface;
+use GnuPG::Handles;
+use File::Temp qw(tempdir);
+
my $BINDIR;
BEGIN { $BINDIR = $FindBin::Bin; }
+
+{
+# Generate Keys from template file
+
+ my $tempdir = tempdir("/tmp/test-gnupgXXXXX", CLEANUP=> 1);
+ my $gnupg = new GnuPG::Interface();
+ $gnupg->options->hash_init(homedir=>$tempdir,batch=>1);
+
+ my $GPGQR='';
+ if (system qw(gpg --quick-random --version) ==0) {
+ $GPGQR='--quick-random';
+ } elsif (system qw(gpg --debug-quick-random --version) ==0) {
+ $GPGQR='--debug-quick-random';
+ }
+
+ print STDERR "WARNING: no quick random option found. Tests may hang!\n"
+ unless(scalar $GPGQR);
+
+ my $pid = $gnupg->wrap_call( commands=>[qw(--gen-key --batch),$GPGQR],
+ command_args=>[$BINDIR.'/keys.txt'],
+ handles=>new GnuPG::Handles() );
+ waitpid $pid,0;
+
+ $ENV{GNUPGHOME}=$tempdir;
+}
+
my @dirs = scalar(@ARGV) > 0 ? @ARGV : ($BINDIR);
my @tests;