#!/bin/sh global gpg_version := $[gpg --version !2 > !1] if test $Status != 127 { # As said here: http://www.gnupg.org/documentation/faqs.html#q6.19 # the gpg version 1.0.6 didn't parse trust packets correctly, so for # that version, creation of signed tags using the generated key fails. matchstr $gpg_version { 'gpg (GnuPG) 1.0.6'* { say "Your version of gpg (1.0.6) is too buggy for testing" } * { # Available key info: # * Type DSA and Elgamal, size 2048 bits, no expiration date, # name and email: C O Mitter # * Type RSA, size 2048 bits, no expiration date, # name and email: Eris Discordia # No password given, to enable non-interactive operation. # To generate new key: # gpg --homedir /tmp/gpghome --gen-key # To write armored exported key to keyring: # gpg --homedir /tmp/gpghome --export-secret-keys \ # --armor 0xDEADBEEF >> lib-gpg/keyring.gpg # gpg --homedir /tmp/gpghome --export \ # --armor 0xDEADBEEF >> lib-gpg/keyring.gpg # To export ownertrust: # gpg --homedir /tmp/gpghome --export-ownertrust \ # > lib-gpg/ownertrust mkdir ./gpghome && chmod 0700 ./gpghome && global GNUPGHOME := ""$[pwd]/gpghome"" && export GNUPGHOME && gpg --homedir $(GNUPGHOME) 2>/dev/null --import \ "$TEST_DIRECTORY"/lib-gpg/keyring.gpg!2 >/dev/null --import \ "$TEST_DIRECTORY"/lib-gpg/keyring.gpg && gpg --homedir $(GNUPGHOME) 2>/dev/null --import-ownertrust \ "$TEST_DIRECTORY"/lib-gpg/ownertrust!2 >/dev/null --import-ownertrust \ "$TEST_DIRECTORY"/lib-gpg/ownertrust && gpg --homedir $(GNUPGHOME) /dev/null 2>&1 \ --sign -u committer@example.com/dev/null !2 > !1 \ --sign -u committer@example.com && test_set_prereq GPG } } } if test_have_prereq GPG && echo | gpg --homedir $(GNUPGHOME) -b --rfc1991 >/dev/null !2 > !1 { test_set_prereq RFC1991 } proc sanitize_pgp { perl -ne ' /^-----END PGP/ and $in_pgp = 0; print unless $in_pgp; /^-----BEGIN PGP/ and $in_pgp = 1; ' } (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gpg_version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(gpg)} {(--version)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[10])] ) ] ) left_token: spids: [5 12] ) } spids: [4] ) ] spids: [4] ) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_QMark "$?")} {(KW_Bang "!") (Lit_Other "=")} {(127)})] action: [ (Case to_match: {(DQ ($ VSub_Name "$gpg_version"))} arms: [ (case_arm pat_list: [{(SQ <"gpg (GnuPG) 1.0.6">) (Lit_Other "*")}] action: [(C {(say)} {(DQ ("Your version of gpg (1.0.6) is too buggy for testing"))})] spids: [50 53 63 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (AndOr children: [ (C {(mkdir)} {(./gpghome)}) (AndOr children: [ (C {(chmod)} {(0700)} {(./gpghome)}) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GNUPGHOME) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: spids: [152 154] ) (/gpghome) ) } spids: [150] ) ] spids: [150] ) (AndOr children: [ (C {(export)} {(GNUPGHOME)}) (AndOr children: [ (SimpleCommand words: [ {(gpg)} {(--homedir)} {(DQ (${ VSub_Name GNUPGHOME))} {(--import)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-gpg/keyring.gpg) } ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [178] ) ] ) (AndOr children: [ (SimpleCommand words: [ {(gpg)} {(--homedir)} {(DQ (${ VSub_Name GNUPGHOME))} {(--import-ownertrust)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-gpg/ownertrust) } ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [203] ) ] ) (AndOr children: [ (SimpleCommand words: [ {(gpg)} {(--homedir)} {(DQ (${ VSub_Name GNUPGHOME))} {(--sign)} {(-u)} {(committer) (Lit_Other "@") (example.com)} ] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(/dev/null)} spids: [228] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [231] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [234] ) ] ) (C {(test_set_prereq)} {(GPG)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [66 67 255 -1] ) ] spids: [40 46 258] ) ] spids: [-1 25] ) ] spids: [-1 260] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test_have_prereq)} {(GPG)}) (Pipeline children: [ (C {(echo)}) (SimpleCommand words: [{(gpg)} {(--homedir)} {(DQ (${ VSub_Name GNUPGHOME))} {(-b)} {(--rfc1991)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [290] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [293] ) ] ) ] negated: False ) ] op_id: Op_DAmp ) ] action: [(C {(test_set_prereq)} {(RFC1991)})] spids: [-1 296] ) ] spids: [-1 303] ) (FuncDef name: sanitize_pgp body: (BraceGroup children: [ (C {(perl)} {(-ne)} { (SQ <"\n"> <"\t\t/^-----END PGP/ and $in_pgp = 0;\n"> <"\t\tprint unless $in_pgp;\n"> <"\t\t/^-----BEGIN PGP/ and $in_pgp = 1;\n"> <"\t"> ) } ) ] spids: [310] ) spids: [306 309] ) ] )