netpgp : better rcpt list handling for encryption + other minor fixes. pEpEngineTest : added more test key pairs, and load them in test so that test can run on empty rings.
authorEdouard Tisserant
Thu, 11 Jun 2015 00:51:49 +0200
changeset 315fb80b70e844d
parent 314 a3a60ce9c5d8
child 316 db2bad72a93b
netpgp : better rcpt list handling for encryption + other minor fixes. pEpEngineTest : added more test key pairs, and load them in test so that test can run on empty rings.
src/pgp_netpgp.c
test/6FF00E97_pub.asc
test/6FF00E97_sec.asc
test/70DCF575_pub.asc
test/70DCF575_sec.asc
test/C9C2EE39_pub.asc
test/C9C2EE39_sec.asc
test/DF9B1541-sec.key
test/DF9B1541.key
test/gen_pgp_samples.sh
test/msg
test/msg.asc
test/pEpEngineTest.cc
test/signature.asc
     1.1 --- a/src/pgp_netpgp.c	Mon Jun 08 22:08:24 2015 +0200
     1.2 +++ b/src/pgp_netpgp.c	Thu Jun 11 00:51:49 2015 +0200
     1.3 @@ -40,7 +40,7 @@
     1.4  
     1.5      // netpgp_setvar(&netpgp, "max mem alloc", "4194304");
     1.6      netpgp_setvar(&netpgp, "need seckey", "1");
     1.7 -    netpgp_setvar(&netpgp, "need userid", "1");
     1.8 +    // netpgp_setvar(&netpgp, "need userid", "1");
     1.9  
    1.10      // NetPGP shares home with GPG
    1.11      home = gpg_home();
    1.12 @@ -63,6 +63,8 @@
    1.13          goto unlock_netpgp;
    1.14      }
    1.15  
    1.16 +    // netpgp_set_debug("packet-parse.c");
    1.17 +
    1.18  unlock_netpgp:
    1.19      pthread_mutex_unlock(&netpgp_mutex);
    1.20      
    1.21 @@ -204,15 +206,41 @@
    1.22  }
    1.23  
    1.24  /* return key ID's hexdump as a string */
    1.25 -static void id_to_str(const uint8_t *userid, char *fpr)
    1.26 +static void id_to_str(const uint8_t *keyid, char *str)
    1.27  {
    1.28      int i;
    1.29      static const char *hexes = "0123456789abcdef";
    1.30 -    for (i = 0; i < 8 ; i++) {
    1.31 -        fpr[i * 2] = hexes[(unsigned)(userid[i] & 0xf0) >> 4];
    1.32 -        fpr[(i * 2) + 1] = hexes[userid[i] & 0xf];
    1.33 +    for (i = 0; i < PGP_KEY_ID_SIZE ; i++) {
    1.34 +        str[i * 2] = hexes[(unsigned)(keyid[i] & 0xf0) >> 4];
    1.35 +        str[(i * 2) + 1] = hexes[keyid[i] & 0xf];
    1.36      }
    1.37 -    fpr[8 * 2] = 0x0;
    1.38 +    str[PGP_KEY_ID_SIZE * 2] = 0x0;
    1.39 +}
    1.40 +
    1.41 +/* return key ID's hexdump as a string */
    1.42 +static unsigned str_to_id(uint8_t *keyid, const char *str)
    1.43 +{
    1.44 +    int i, n;
    1.45 +    static const char *hexes = "0123456789abcdef";
    1.46 +    for (i = 0; i < PGP_KEY_ID_SIZE ; i++) {
    1.47 +        uint8_t b = 0;
    1.48 +        for (n = 0; n < 2; n++) {
    1.49 +            char c = str[i * 2 + n];
    1.50 +            uint8_t q;
    1.51 +            if(c >= '0' &&  c <= '9'){
    1.52 +                q = (c - '0');
    1.53 +            }else if(c >= 'a' &&  c <= 'z'){
    1.54 +                q = (c - 'a' + 0xA);
    1.55 +            }else if(c >= 'A' &&  c <= 'Z'){
    1.56 +                q = (c - 'A' + 0xA);
    1.57 +            }else{
    1.58 +                return 0;
    1.59 +            }
    1.60 +            b |= q << (4 * (1 - n));
    1.61 +        }
    1.62 +        keyid[i] = b;
    1.63 +    }
    1.64 +    return 1;
    1.65  }
    1.66  
    1.67  // Iterate through netpgp' reported valid signatures 
    1.68 @@ -252,9 +280,9 @@
    1.69          k = *_keylist;
    1.70          for (n = 0; n < vresult->validc; ++n) {
    1.71              char id[MAX_ID_LENGTH + 1];
    1.72 -            const uint8_t *userid = vresult->valid_sigs[n].signer_id;
    1.73 +            const uint8_t *keyid = vresult->valid_sigs[n].signer_id;
    1.74  
    1.75 -            id_to_str(userid, id);
    1.76 +            id_to_str(keyid, id);
    1.77  
    1.78              k = stringlist_add(k, id);
    1.79              if(!k){
    1.80 @@ -473,11 +501,10 @@
    1.81      size_t psize, char **ctext, size_t *csize
    1.82      )
    1.83  {
    1.84 -    const pgp_key_t *keypair;
    1.85 -    const pgp_seckey_t *seckey;
    1.86 +    const pgp_key_t *signer = NULL;
    1.87 +    const pgp_seckey_t *seckey = NULL;
    1.88      pgp_memory_t *signedmem;
    1.89      pgp_memory_t *cmem;
    1.90 -    const char *userid;
    1.91      const char *hashalg;
    1.92      pgp_keyring_t *rcpts;
    1.93  
    1.94 @@ -501,16 +528,65 @@
    1.95      *ctext = NULL;
    1.96      *csize = 0;
    1.97  
    1.98 -    // Get signing details from netpgp
    1.99 -    if ((userid = netpgp_getvar(&netpgp, "userid")) == NULL || 
   1.100 -        (keypair = pgp_getkeybyname(netpgp.io, 
   1.101 -                                    netpgp.secring, 
   1.102 -                                    userid)) == NULL) {
   1.103 -        return PEP_UNKNOWN_ERROR;
   1.104 +    if ((rcpts = calloc(1, sizeof(*rcpts))) == NULL) {
   1.105 +        result = PEP_OUT_OF_MEMORY;
   1.106 +        goto free_signedmem;
   1.107 +    }
   1.108 +    for (_keylist = keylist; _keylist != NULL; _keylist = _keylist->next) {
   1.109 +        assert(_keylist->value);
   1.110 +        const pgp_key_t *key;
   1.111 +        uint8_t keyid[PGP_KEY_ID_SIZE];
   1.112 +        unsigned from = 0;
   1.113 +
   1.114 +        if(!str_to_id(keyid, _keylist->value))
   1.115 +        {
   1.116 +            result = PEP_ILLEGAL_VALUE;
   1.117 +            goto free_rcpts;
   1.118 +        }
   1.119 +
   1.120 +        key = pgp_getkeybyid(netpgp.io, netpgp.pubring, 
   1.121 +                 keyid, &from, NULL, NULL, 
   1.122 +                 1, 0); /* reject revoked, accept expired */
   1.123 +        if(key == NULL){
   1.124 +            result = PEP_KEY_NOT_FOUND;
   1.125 +            goto free_rcpts;
   1.126 +        }
   1.127 +
   1.128 +        /* Signer is the first key in the list */
   1.129 +        if(signer == NULL){
   1.130 +            from = 0;
   1.131 +            signer = pgp_getkeybyid(netpgp.io, netpgp.secring, 
   1.132 +                     keyid, &from, NULL, NULL, 
   1.133 +                     0, 0); /* accept any */
   1.134 +            if(signer == NULL){
   1.135 +                result = PEP_KEY_NOT_FOUND;
   1.136 +                goto free_rcpts;
   1.137 +            }
   1.138 +        }
   1.139 +
   1.140 +        printf("ZZ %s\n", _keylist->value);
   1.141 +        // add key to recipients/signers
   1.142 +        pgp_keyring_add(rcpts, key);
   1.143 +        if(rcpts->keys == NULL){
   1.144 +            result = PEP_OUT_OF_MEMORY;
   1.145 +            goto free_signedmem;
   1.146 +        }
   1.147 +           printf("ZZ %s\n", _keylist->value);
   1.148      }
   1.149  
   1.150 -    /* TODO select data signing subkey if defined */
   1.151 -    seckey = pgp_key_get_certkey(keypair);
   1.152 +    /* Empty keylist ?*/
   1.153 +    if(rcpts->keyc == 0){
   1.154 +        result = PEP_ILLEGAL_VALUE;
   1.155 +        goto free_signedmem;
   1.156 +    }
   1.157 +
   1.158 +    seckey = pgp_key_get_certkey(signer);
   1.159 +
   1.160 +    /* No signig key. Revoked ? */
   1.161 +    if(seckey == NULL){
   1.162 +        result = PEP_GET_KEY_FAILED;
   1.163 +        goto free_signedmem;
   1.164 +    }
   1.165  
   1.166      hashalg = netpgp_getvar(&netpgp, "hash");
   1.167  
   1.168 @@ -528,30 +604,6 @@
   1.169      }
   1.170  
   1.171      // Encrypt signed data
   1.172 -    if ((rcpts = calloc(1, sizeof(*rcpts))) == NULL) {
   1.173 -        result = PEP_OUT_OF_MEMORY;
   1.174 -        goto free_signedmem;
   1.175 -    }
   1.176 -    for (_keylist = keylist; _keylist != NULL; _keylist = _keylist->next) {
   1.177 -        assert(_keylist->value);
   1.178 -        // get key from netpgp's pubring
   1.179 -        const pgp_key_t *key;
   1.180 -        key = pgp_getkeybyname(netpgp.io,
   1.181 -                               netpgp.pubring,
   1.182 -                               _keylist->value);
   1.183 -
   1.184 -        if(key == NULL){
   1.185 -            result = PEP_KEY_NOT_FOUND;
   1.186 -            goto free_rcpts;
   1.187 -        }
   1.188 -
   1.189 -        // add key to recipients/signers
   1.190 -        pgp_keyring_add(rcpts, key);
   1.191 -        if(rcpts->keys == NULL){
   1.192 -            result = PEP_OUT_OF_MEMORY;
   1.193 -            goto free_signedmem;
   1.194 -        }
   1.195 -    }
   1.196  
   1.197      cmem = pgp_encrypt_buf(netpgp.io, pgp_mem_data(signedmem),
   1.198              pgp_mem_len(signedmem), rcpts, 1 /* armored */,
   1.199 @@ -584,10 +636,10 @@
   1.200  
   1.201  free_cmem :
   1.202      pgp_memory_free(cmem);
   1.203 +free_signedmem :
   1.204 +    pgp_memory_free(signedmem);
   1.205  free_rcpts :
   1.206      pgp_keyring_free(rcpts);
   1.207 -free_signedmem :
   1.208 -    pgp_memory_free(signedmem);
   1.209  unlock_netpgp:
   1.210      pthread_mutex_unlock(&netpgp_mutex);
   1.211  
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/test/6FF00E97_pub.asc	Thu Jun 11 00:51:49 2015 +0200
     2.3 @@ -0,0 +1,31 @@
     2.4 +-----BEGIN PGP PUBLIC KEY BLOCK-----
     2.5 +Version: GnuPG v1
     2.6 +
     2.7 +mQENBFV4PbEBCADTmjGDsoti/VPoZ3w2oCjLBNq1jWIGMkbiUgCGUQjVsNrSZ80U
     2.8 +7RmA3Pcu3hhiVQNBGA32vL6NPhSJPanVd77s6XVZg+Gq7llbGGkuIxSkJvVrWzYc
     2.9 +kjMsAInlJ8Ll0kHHbgATOlO5OtQ21bLCfWZPSq74HEVzQAPtCGYFvOgpCktKTjms
    2.10 +GXe9ysiYN8CEWMVNbDqXmvFhi4UifpITeQBVM7dtlBw5SoeLZpsHIlKF5i5WPkNw
    2.11 +7nuMag/+lRpOqvPumhOmqybWHuAR/Dq0pOOPh6BzZ4OzOBL96aWUe1dcnIZeBEm8
    2.12 +oRxYC3nN95YsjtrLK4BQZTYDTzeh8FIccsLdABEBAAG0RHBFcCBUZXN0IEFsaWNl
    2.13 +ICh0ZXN0IGtleSBkb24ndCB1c2UpIDxwZXAudGVzdC5hbGljZUBwZXAtcHJvamVj
    2.14 +dC5vcmc+iQE4BBMBAgAiBQJVeD2xAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX
    2.15 +gAAKCRCpQR0Xb/AOl5JjCADEBoordVBCmphG6EY+u5yjj/xeQN4Kc1Rl06Ii6m18
    2.16 +4hnF/osxnTicr+A6Hpwf8whXULuSwXvfuOsVOQdIc2e+1zrecTqyNUWuRs3T7uZ2
    2.17 +5dvROg1XZuajMPf3wh5lX2rPRhOt3UNXJjQfc1MSYXpmT+PoqFXBzMqJUo2DYcw6
    2.18 +MSZekoWkIzFXG2s2YNwILwPnLnMesFtzU6mn9qhfoFsQA6aku8AbG+SNehNZvGuu
    2.19 +UiBmu+4UYNoc/RJa7vNWECv9qZQsT820CuoOZS9MFV7nQlgkGoPerlGXil0vkOG1
    2.20 +gsuQD8QkuaTQpn1vYvRcC0P27qLfrqlPv2Ih2hoIV9tJuQENBFV4PbEBCADQwKB9
    2.21 +7t2B2nweprfpbH8QgLCzJYaAMrpcaUaJqm+J3C9eaepRXTXGtst1zaLbooG2b3QH
    2.22 +fDzI2CEYMxO5ynmmSBOe06VKw/PagBzK5ur/eOycl0ZPFSXdlDj30BQPvRdJvLS4
    2.23 +OTMdoKoGpsZDY4hOYj67oHo3TFtrLJCvZruPARkI/pXiOX9FqH4wquNNaYW1qwk/
    2.24 +Wq3k/gOMwp0xjvc01MbadaiiVquJk6jjPrd2wP4FYxIADAllzMpwFAJSWvgCfmqV
    2.25 +bukYOnaCp3QRQXQkc78TdqGXbD5uwJzkxxiEsMmiGT+7RDLIKwXheKmmGXSwgi8m
    2.26 ++EndUiqMTvOdjyUBABEBAAGJAR8EGAECAAkFAlV4PbECGwwACgkQqUEdF2/wDpeQ
    2.27 +VQgArnfQ7uvG0po/CPepbrdytI2n63U5dm/MFMsvXpZYVYLO/mROc+akZCPwS0yx
    2.28 +tSMKK+tYM9leQx58r89c+K1GeZoko7xziwmZbt5zEITiJp5L6gg7k6CczskPMx07
    2.29 +gY8ooscBC3cFJhz1A0o73BKPR7J0iupaNmI3sTd1/RNQm6573kGGwc4m2bcQttvN
    2.30 +5ox8yimn2QnK3D+6A+Mmzi3Rd11tF+tAWJIsfaEgDJZn9mOdUkV2ckoSk1K5Pptp
    2.31 +XSsKLOL+e2WuxSMIr8AVeRqkbYYK6UzX6qIgQIrMOuaXqtRaNxNccnzIS1YtdtYE
    2.32 +RSnTaBotNp/FF2wfI7BNFP6r0A==
    2.33 +=wSWl
    2.34 +-----END PGP PUBLIC KEY BLOCK-----
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/test/6FF00E97_sec.asc	Thu Jun 11 00:51:49 2015 +0200
     3.3 @@ -0,0 +1,58 @@
     3.4 +-----BEGIN PGP PRIVATE KEY BLOCK-----
     3.5 +Version: GnuPG v1
     3.6 +
     3.7 +lQOYBFV4PbEBCADTmjGDsoti/VPoZ3w2oCjLBNq1jWIGMkbiUgCGUQjVsNrSZ80U
     3.8 +7RmA3Pcu3hhiVQNBGA32vL6NPhSJPanVd77s6XVZg+Gq7llbGGkuIxSkJvVrWzYc
     3.9 +kjMsAInlJ8Ll0kHHbgATOlO5OtQ21bLCfWZPSq74HEVzQAPtCGYFvOgpCktKTjms
    3.10 +GXe9ysiYN8CEWMVNbDqXmvFhi4UifpITeQBVM7dtlBw5SoeLZpsHIlKF5i5WPkNw
    3.11 +7nuMag/+lRpOqvPumhOmqybWHuAR/Dq0pOOPh6BzZ4OzOBL96aWUe1dcnIZeBEm8
    3.12 +oRxYC3nN95YsjtrLK4BQZTYDTzeh8FIccsLdABEBAAEAB/sFU/ukPwoi9PwtwH/D
    3.13 +/rA8tf5GYKKgNULTKanRN/8w7LhJ0mOtKmjcvKj0z6CqDduqiS8pDL4cH4QiP/mn
    3.14 +UFjhu6iZ3oDjMc64dudANQNQZyfzHNOl5bChAEMG16cZz58oyJLCMEvuOYvaH7pV
    3.15 +w7/ZKcWc7OQzyh/ivNm0kjni2fMJbX6H11obmpnHH1iw3twoNYCP/c4k0FbYeGen
    3.16 +GAptQY8A0oZoaFtx5kCU8qdRl+SfPVfBDGecP/dtt7DiaNWYQYSwlf1PxORhDFM4
    3.17 +/bihze623Hm/BczG73H2Vv+oKaE1y/GMIqc26RIcTiVYPkdKeob1BtfhCw2xEeUm
    3.18 +BhhxBADTqchhV9Q5XEe0uDT8u/9U/ULeoF+12C0wgDkJIKkd07URubr77Cv3gHp0
    3.19 +9ZJqWP/sMcD7HgeyUIxGYP9abGQy+AsHVvignaovCwif6N7PP877kGG2K+Z0V3Os
    3.20 +TlqHkls5+rmtxyHTVNumH3DuMJ47J+7C0UL5CuPPvDRNO942bQQA/+0lLF9Nm3NQ
    3.21 +0MnUOlgQVQvfuUDmwj89LSJ1gPWVQ0RpzDLG+FSVwg4L1mtzgIZ7XTA6nFUZts4W
    3.22 +zBUCqKeC92I2WtKehhGAxfHnVlm1M9Iuv9EzRlJWhkm5wuPXEEZMyhQohFuc2k5w
    3.23 +Lq/GUcXqzzTYWDHjBecccgSXrf98uDEEAIRvSiI98caA7Bl7iaz9CcGk6FnOSis2
    3.24 +buTG7fGRFkujntOETshiMU2IJ7SDi5MySeYtvF7oQgz6qBNq8fiCHWS3Y7iIBRIR
    3.25 +XNf5lpkm43CJkXpX7ZDkG6VS3lErV6KSPIB+gy3l0+xYSJMZcfYUnTU2ZSRmdldn
    3.26 +vZfO5hHlZ1eqSt+0RHBFcCBUZXN0IEFsaWNlICh0ZXN0IGtleSBkb24ndCB1c2Up
    3.27 +IDxwZXAudGVzdC5hbGljZUBwZXAtcHJvamVjdC5vcmc+iQE4BBMBAgAiBQJVeD2x
    3.28 +AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCpQR0Xb/AOl5JjCADEBoor
    3.29 +dVBCmphG6EY+u5yjj/xeQN4Kc1Rl06Ii6m184hnF/osxnTicr+A6Hpwf8whXULuS
    3.30 +wXvfuOsVOQdIc2e+1zrecTqyNUWuRs3T7uZ25dvROg1XZuajMPf3wh5lX2rPRhOt
    3.31 +3UNXJjQfc1MSYXpmT+PoqFXBzMqJUo2DYcw6MSZekoWkIzFXG2s2YNwILwPnLnMe
    3.32 +sFtzU6mn9qhfoFsQA6aku8AbG+SNehNZvGuuUiBmu+4UYNoc/RJa7vNWECv9qZQs
    3.33 +T820CuoOZS9MFV7nQlgkGoPerlGXil0vkOG1gsuQD8QkuaTQpn1vYvRcC0P27qLf
    3.34 +rqlPv2Ih2hoIV9tJnQOYBFV4PbEBCADQwKB97t2B2nweprfpbH8QgLCzJYaAMrpc
    3.35 +aUaJqm+J3C9eaepRXTXGtst1zaLbooG2b3QHfDzI2CEYMxO5ynmmSBOe06VKw/Pa
    3.36 +gBzK5ur/eOycl0ZPFSXdlDj30BQPvRdJvLS4OTMdoKoGpsZDY4hOYj67oHo3TFtr
    3.37 +LJCvZruPARkI/pXiOX9FqH4wquNNaYW1qwk/Wq3k/gOMwp0xjvc01MbadaiiVquJ
    3.38 +k6jjPrd2wP4FYxIADAllzMpwFAJSWvgCfmqVbukYOnaCp3QRQXQkc78TdqGXbD5u
    3.39 +wJzkxxiEsMmiGT+7RDLIKwXheKmmGXSwgi8m+EndUiqMTvOdjyUBABEBAAEAB/sG
    3.40 +nGJmGT1m/k/HNY2A4ncugybQEOiJe4xy6VYVqBc8GPl1OS/gR64wlst1daT6T+iL
    3.41 +9KEKl3os0Z8QWetpCzhERkd8dInT5vCnFdQjmaxtmVX5RQynK+gntDOZfHuq08Nj
    3.42 +/0pZWbK3KzEAliw/SCyx78hPuelY7OL/Ge7okR2FjdXmtcMLw7NN+0c+hoSAuDiV
    3.43 +jbPlegga6iaGljIJCapf1YkmwuUZc2pCEfoxllRdQ8UKSLwht4LPb5jBOAiynw4W
    3.44 +lMY/5hZwRVG2NfOXbwC1kMUQcItBJviKQXaaruqXX7jnglWbCrgg/tQJ6EUkLy76
    3.45 +InM6/0NX6StNEY4vau95BADeTwBLkJqkcAxX21GoT9UjhRh9yhKgehER1cplrhE3
    3.46 +B3HuEzvCCr+mRCPyK7J0pE3LQkqccDW19noOtsjl6ODStXjk4Pp/MFftJrIx9s9u
    3.47 +JFv5RTTVBxjS8hRRHF49rMYeOKpcD02Id+u3UL1ISuX40Ljvz6oacO9XA73gkA7L
    3.48 +aQQA8GOupiWYvZwYPTJ8glUfafEtniNspTOtEDayvMAOHiWIrLzhQ0e6AS1LDB8E
    3.49 +YWu+GUI9661PRMn1SlhX9vZhGzSllGxk9CyBbeKhyuiQ34s8M0pwHLmT89bBqZhk
    3.50 +/0wsRqkrKHkcJYkcLLlYw5zAGrm3kvyQgjf6Tiq2d+rU0dkD/AxnmEWqC08ovLZo
    3.51 +vEZR+JKWlAp8l4YS5f5suPD6PiKeLinCujpq7VbsyhcZQNo1oA7qgLvUFwz2lyRi
    3.52 +eCDBCndXYLzJ1LPkHXv0ZcxrSLUSpNpWekEM5sBug8i3z4vhh4EA30gdOYqLPquu
    3.53 +BQoyFrPysylnvHTVRkA/wBy5E7Y0OnyJAR8EGAECAAkFAlV4PbECGwwACgkQqUEd
    3.54 +F2/wDpeQVQgArnfQ7uvG0po/CPepbrdytI2n63U5dm/MFMsvXpZYVYLO/mROc+ak
    3.55 +ZCPwS0yxtSMKK+tYM9leQx58r89c+K1GeZoko7xziwmZbt5zEITiJp5L6gg7k6Cc
    3.56 +zskPMx07gY8ooscBC3cFJhz1A0o73BKPR7J0iupaNmI3sTd1/RNQm6573kGGwc4m
    3.57 +2bcQttvN5ox8yimn2QnK3D+6A+Mmzi3Rd11tF+tAWJIsfaEgDJZn9mOdUkV2ckoS
    3.58 +k1K5PptpXSsKLOL+e2WuxSMIr8AVeRqkbYYK6UzX6qIgQIrMOuaXqtRaNxNccnzI
    3.59 +S1YtdtYERSnTaBotNp/FF2wfI7BNFP6r0A==
    3.60 +=kV7k
    3.61 +-----END PGP PRIVATE KEY BLOCK-----
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/test/70DCF575_pub.asc	Thu Jun 11 00:51:49 2015 +0200
     4.3 @@ -0,0 +1,31 @@
     4.4 +-----BEGIN PGP PUBLIC KEY BLOCK-----
     4.5 +Version: GnuPG v1
     4.6 +
     4.7 +mQENBFV4PvYBCADR7kaFLsLFDuGE11u3q2K6eTspAkczU1ahPnSXaVGOIbCQGuL6
     4.8 +MiDET4vXAY/y1picqJ8OuIe2k0S8eDRIYIHF8arhgTkZQny6Cfy7nheWNnxSZBIo
     4.9 +K/8Zqa9dbNBWwHp2l7LOqM3hS8a0O1mQQrrMlV55qnXWJQFaI3P/nlaGUfe+5DuD
    4.10 +tDom8xJicE8an5nhbsyKyNxlYVePVsQVFiLHMVoNZ6eyfyb/nTBdAdQ0KLZM0vDC
    4.11 +8df/VTevytf/PgunziqD67HuDx8Uxyeht5REIrcBEyrgtnvTkVjZJ2MpbXcY2kam
    4.12 +36OH8T4JoBkxlqjU6UiiqV+k04QzAvmp2/anABEBAAG0Q3BFcCBUZXN0IEpvaG4g
    4.13 +KHRlc3Qga2V5LCBkb24ndCB1c2UpIDxwZXAudGVzdC5qb2huQHBlcC1wcm9qZWN0
    4.14 +Lm9yZz6JATgEEwECACIFAlV4PvYCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA
    4.15 +AAoJEBNc1tFw3PV1rQsIAIGxmMHjAQqsZB7CQAdEdWxM+YkGZPAOqMYZrVaf+wiI
    4.16 +kMP25B9JaSYRccYbI+k+Vg19l5vqVv/ixgDLntZWJFt3LakKkTY3R8ghhKImlVVo
    4.17 +gj6ASho0rUoHLpCLuo0t+N+DGTjBOi1tu90U9L3poPsgYOij6pw226M6zXsvsk4h
    4.18 +Uuljq9ZysKbjGEoqahOLf7p7gjrtCceOQfqnXKNE9QlpQtw/pnwTa97gVR4l7DaK
    4.19 +UEXzASobjEywfCoMH9SaoVL5M/FsIkMSasg6H+J4U8YdxE5x2BRbTQe+90/RlVg5
    4.20 +bNCK9nMKBMBr0KeeJn9JZRykwKOgV5vZl0lQ5BEKEia5AQ0EVXg+9gEIAMEvDo98
    4.21 +6hv9pk4YKLLRhZVyp3KiDQ2ymjdl8v/kh2f3s2roNhF5o2pTfq51oTCIex0Wiyri
    4.22 +7o/1V21e3wYS14uRzF86a5cvmOdR/w1+NuW7hoW9RWBEaC7O4N/TtU7AAQmav8mA
    4.23 +CJBHwdoE98BKmJNAG3SOh/kSdh5HZrL5Yrx4tX7dkJOXI2Jql0IS4R37dmAX5K+9
    4.24 +MqIFDJf0I73iiBGr0v6mbOCEonBznF/6H905Ci2uPZ38DHixN2cyToZg7CkTfC7K
    4.25 +8xmHFv1lcRzlTMyNC0xOlirYPPlhnGslyiyTJqHVyrH/Z788x6wV9ifPnDZfGmRk
    4.26 +C2V8HTBRQhdIuREAEQEAAYkBHwQYAQIACQUCVXg+9gIbDAAKCRATXNbRcNz1dUKv
    4.27 +B/46nvjKNTtPJXidArkPP8rY57kEVWg8spkqBWIeV3AGMzh9qVfRRv4Pfl9IgHaO
    4.28 +vXkoKip9D4zvgpB566gIiE3B3Y4vEzToiBxqVo5L5gzmbG6J1cQdHz6rmKSHPf4z
    4.29 +rNQbCxaGXIJ697mlfKIiIBrV67sH3Xm2l6ECp8PiQGImLFaBI2SbuLSHSz1nC910
    4.30 +ln8AhSYAYlxYBdateo3IZwAZSQibCF/xChvnDcDjZa9GWo3iMlSPAoKXacbrdenj
    4.31 +F/X9yyoeTtTNTuNDGr9Sms72wU+SAYErLDcik1pRhNDmLXEjQC7eBT9WFemkfOVj
    4.32 +mDKjonb9yAz6knxC5kRE5ChX
    4.33 +=csku
    4.34 +-----END PGP PUBLIC KEY BLOCK-----
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/test/70DCF575_sec.asc	Thu Jun 11 00:51:49 2015 +0200
     5.3 @@ -0,0 +1,58 @@
     5.4 +-----BEGIN PGP PRIVATE KEY BLOCK-----
     5.5 +Version: GnuPG v1
     5.6 +
     5.7 +lQOYBFV4PvYBCADR7kaFLsLFDuGE11u3q2K6eTspAkczU1ahPnSXaVGOIbCQGuL6
     5.8 +MiDET4vXAY/y1picqJ8OuIe2k0S8eDRIYIHF8arhgTkZQny6Cfy7nheWNnxSZBIo
     5.9 +K/8Zqa9dbNBWwHp2l7LOqM3hS8a0O1mQQrrMlV55qnXWJQFaI3P/nlaGUfe+5DuD
    5.10 +tDom8xJicE8an5nhbsyKyNxlYVePVsQVFiLHMVoNZ6eyfyb/nTBdAdQ0KLZM0vDC
    5.11 +8df/VTevytf/PgunziqD67HuDx8Uxyeht5REIrcBEyrgtnvTkVjZJ2MpbXcY2kam
    5.12 +36OH8T4JoBkxlqjU6UiiqV+k04QzAvmp2/anABEBAAEAB/9oTPtKlmX8pB0V9C3E
    5.13 +fmlJ/ouPH2uiq4hCCpbA13nGpSRlJIabCibPgjoXM9aCL26Zfwmvtazv4BFplktb
    5.14 +nl87qotdCOgGjcsMX4Pq72wGnMF96ew/e0R+SpkvUK3ePDlcDJixJptLkWuDBm3E
    5.15 +R/MpTBkpV7C+GZqnXy/104RnrRB6BuE+YbcKxYAV5rF8yCeZBysiwUSefuQtOKRF
    5.16 +cx7g+SLD2V+mKSdOlTHn6CwzD9EFCKVJrGVusOvGg+t/wac8ecr7PT8Ogv7HfHO2
    5.17 +zFCU9E3JGNQAQ5a6MKIMsbA7MRHrBnX4zOYNQGjY4bjW3RhuGbwU3+mU/qwxwiap
    5.18 +kcMRBADSamYgsPpdlye9TNedF7gvLo4KCz1UfQhJs3kS7XZRuv2VpT0uMfz75a19
    5.19 +n5Ibi0J4kIVVuQQsl5H55DWVQh4g+xt/seAXmfH4xa5AF/3uh1wCcTATXy+7+kOi
    5.20 +KvRezdqd3azOTp/brDiIPWqZT0e7oATuRQ4NlTE754SR/i8DeQQA/2j8iL32XY9v
    5.21 +qyHzHXW3zvKiVTb3WYXOrLqQMtkuLJwWbXufqgXoS1KSSLG8pNhjAVbuVlQsXpdd
    5.22 +hFrRgiROefwzLbuw/zW97bylmqzsgzxxZR6crW/O6pLXCki/eaeBCjYyqL3+lLa1
    5.23 +7xxP5yQffeiCf8DZ1DxWEKioYLT5Ix8D/iPkmlrJYPVm4OSOhXma2o1x9s295YQ6
    5.24 +ZO1Afs0UI2S2wqsBa97D+ZVr/tLdDTTbV5C++UqPm2ActA84Kw6StDZFE+q9zYgz
    5.25 +0y29/eo7BdWqEGQRscJWtqYyLIuGzGsCbY95YkbVnWgG6zPSASk7K3qPX9ICR+1I
    5.26 +LU4WVMsBmNcEQE60Q3BFcCBUZXN0IEpvaG4gKHRlc3Qga2V5LCBkb24ndCB1c2Up
    5.27 +IDxwZXAudGVzdC5qb2huQHBlcC1wcm9qZWN0Lm9yZz6JATgEEwECACIFAlV4PvYC
    5.28 +GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBNc1tFw3PV1rQsIAIGxmMHj
    5.29 +AQqsZB7CQAdEdWxM+YkGZPAOqMYZrVaf+wiIkMP25B9JaSYRccYbI+k+Vg19l5vq
    5.30 +Vv/ixgDLntZWJFt3LakKkTY3R8ghhKImlVVogj6ASho0rUoHLpCLuo0t+N+DGTjB
    5.31 +Oi1tu90U9L3poPsgYOij6pw226M6zXsvsk4hUuljq9ZysKbjGEoqahOLf7p7gjrt
    5.32 +CceOQfqnXKNE9QlpQtw/pnwTa97gVR4l7DaKUEXzASobjEywfCoMH9SaoVL5M/Fs
    5.33 +IkMSasg6H+J4U8YdxE5x2BRbTQe+90/RlVg5bNCK9nMKBMBr0KeeJn9JZRykwKOg
    5.34 +V5vZl0lQ5BEKEiadA5gEVXg+9gEIAMEvDo986hv9pk4YKLLRhZVyp3KiDQ2ymjdl
    5.35 +8v/kh2f3s2roNhF5o2pTfq51oTCIex0Wiyri7o/1V21e3wYS14uRzF86a5cvmOdR
    5.36 +/w1+NuW7hoW9RWBEaC7O4N/TtU7AAQmav8mACJBHwdoE98BKmJNAG3SOh/kSdh5H
    5.37 +ZrL5Yrx4tX7dkJOXI2Jql0IS4R37dmAX5K+9MqIFDJf0I73iiBGr0v6mbOCEonBz
    5.38 +nF/6H905Ci2uPZ38DHixN2cyToZg7CkTfC7K8xmHFv1lcRzlTMyNC0xOlirYPPlh
    5.39 +nGslyiyTJqHVyrH/Z788x6wV9ifPnDZfGmRkC2V8HTBRQhdIuREAEQEAAQAH/Rpx
    5.40 +QPp1/CtxqDJXTzbOxAylQXNI6CWAVWiQzVamZrxd5NKUz1XMAwi6PgROOI6Gl+du
    5.41 +3wSzRDkzOVDQpBFWQeeqQMGmIvTyQGklSZaEuKnwZaTnt9fJ9UK28YPhnBcX4+x3
    5.42 +IJpJqqJpGAkqFeldrI23QCrPmaAHnWBeoJmN1ix60iqABA8OvPODmLQaPEMlQrlw
    5.43 +UFQSfdDwWj0RFrj54SyltX1kYHZNI5WLsen31kswFcOImuNJjl0n5uaj2pQcbodW
    5.44 +uyDRjM+F0ZfsfytgOyKQKdkVpbK6Jn5gQTt0YfMhdC9z7Hhp2NcQGIjXVxw5Hc/B
    5.45 +v7d43MGsDJIwDFJ2r3sEAMuE5bAdD3GXGSjXDVzm/uhYXztuPu6Xe+67eaayQv4j
    5.46 +eoL+YXUeHyeKbCfX7mLF6SBChMQhoMQyqwIJ8RWJNn5PKwW+eQSZV8pxP/OCfK50
    5.47 +TrSTNL3eIEl5to6sHZsJpjvP4hYKnnMskaMDOAbUNz7TNhGro/lTCYceTYk1A0cP
    5.48 +BADy/+J8ZHinnPw9Pc4K3+qfVS/FZcUoRpMg39KFF10ZGtCqKfebAX2ypGmOQPb/
    5.49 +kdCfFq+pk0nXXwe7zjcSNPFkVyAViV8OMKj0AF1k1fhkgQtYCwFO9tZ7ArUf4Eoq
    5.50 +q3uDNzOeYnNP9EGJHXoJ/lTbcXhpyY6Qn25IyGIVMIz93wP+OskBmMS7eQ94mKs6
    5.51 +iYX/2FzKBXpKtTiLssM2adpcdVyNrfKD4i8y1acYGl08QFjPURYbri1+CuKzaNbN
    5.52 +cXlE9XPI8eQ01f5+484xc0bRDDSnrbh9wD/32EJ++uImFKjKEqFok8pe6936gX+x
    5.53 +mnku9lnxjcw0iNYnS1Tks09K3Jw7oYkBHwQYAQIACQUCVXg+9gIbDAAKCRATXNbR
    5.54 +cNz1dUKvB/46nvjKNTtPJXidArkPP8rY57kEVWg8spkqBWIeV3AGMzh9qVfRRv4P
    5.55 +fl9IgHaOvXkoKip9D4zvgpB566gIiE3B3Y4vEzToiBxqVo5L5gzmbG6J1cQdHz6r
    5.56 +mKSHPf4zrNQbCxaGXIJ697mlfKIiIBrV67sH3Xm2l6ECp8PiQGImLFaBI2SbuLSH
    5.57 +Sz1nC910ln8AhSYAYlxYBdateo3IZwAZSQibCF/xChvnDcDjZa9GWo3iMlSPAoKX
    5.58 +acbrdenjF/X9yyoeTtTNTuNDGr9Sms72wU+SAYErLDcik1pRhNDmLXEjQC7eBT9W
    5.59 +FemkfOVjmDKjonb9yAz6knxC5kRE5ChX
    5.60 +=7r/5
    5.61 +-----END PGP PRIVATE KEY BLOCK-----
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/test/C9C2EE39_pub.asc	Thu Jun 11 00:51:49 2015 +0200
     6.3 @@ -0,0 +1,31 @@
     6.4 +-----BEGIN PGP PUBLIC KEY BLOCK-----
     6.5 +Version: GnuPG v1
     6.6 +
     6.7 +mQENBFV4Pl8BCACuukQLwsHftH5jkVsSL7COFhamNsEE8lZ8MG1f1Rx5ztPuZTna
     6.8 +YXyWODgpj2Bxz0TcP+Q17GbLKse7TWD1k9i1RzLWz8ZSCLYq2TtjLWPleVuGGWeq
     6.9 +Y3tTWHC/nFbivolNPA0mL2038TGdBolPaZiPZ4P8wuQVYNfDqi4utcezGDNS8OHh
    6.10 +EPhfyKKoSM79HLoUPc6xsfimxPMrylI/i8bFvfDYz5vmydefvAxNhqjLH3Gmhj1p
    6.11 +nInsraEiyh7Y2zAxCfr6hD9nky7WixBinKFFhQpcUu1o+Ie6UGwLVbTyRMOcRsob
    6.12 +yahqA/m2HfDRj1Y+n8HHqsQkB2BtmMYXla3jABEBAAG0QXBFcCBUZXN0IEJvYiAo
    6.13 +dGVzdCBrZXksIGRvbid0IHVzZSkgPHBlcC50ZXN0LmJvYkBwZXAtcHJvamVjdC5v
    6.14 +cmc+iQE4BBMBAgAiBQJVeD5fAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK
    6.15 +CRBZv/SIycLuOaR5CACj3E6ykNqjGS5PzghYfLJso6j954QzLwOozTzU/3/HWH4l
    6.16 +C3Jmfr0pGI51KZ6Xevrp3N9SxRqruJCFRtwNeH3ujIgDh/UHCUEsP/+d74SOenIB
    6.17 +YGUKE1OJmh8/LQdkNSc6JNdzJjDWdKeh6cAMFvWju/Nqtl/l0FGspQU9dmCMtzkK
    6.18 +gmwoKZW56aEVZ2lTxqNEo1aQ+lLrNueBq0/Q5kAVEzUG7Ufm19wXjWenEMeeElX3
    6.19 +UAGudLJuckx7uD8W/yBwqrRAbaCSeZf6RVBLz96ekjWrVfMnmjkPuQPPt5cs98Rx
    6.20 +QTpxk7b6xLaWXymhA6cYU+FAW4DpbjfJjMWIFDcKuQENBFV4Pl8BCADKQ2SV6gjR
    6.21 +5N69xVdiCaefjwobrXR1niuBHBNTXMJwPk2xv+e7fY28RK1BzODYCzBhpltvRoCc
    6.22 +Ji9S7Rqyz81nbxnw/1TaKtn6dDDhZPVHjN3vasDueM6xTEfEihNc0Owf4wz9SBju
    6.23 +redUVkdTxU7FxSgVP10dOxhdtkjWjGW1DF6WlYA8BAIEdbpoheJHz3NFkhPQ8Dlz
    6.24 +o7Ioe2t7vrTztcBX11o2e+FPOq1SmhEr78wbROAyCVAXK+8qDh4zDq8iAMZK/KnZ
    6.25 +rm6pP00+iBRcb+JQgn3Gn+hU0lgE3YB9kBJLeWaHxEPNnnNNvW/BMl53ctf8Ip+p
    6.26 +zpA1K/S23KU7ABEBAAGJAR8EGAECAAkFAlV4Pl8CGwwACgkQWb/0iMnC7jlqbwf/
    6.27 +dP4sXDRiR5uVMh5WhOn1S8MnHZhLWAQ6fI9/KxggCPhgY6zAgszPMutzBsQlV4P6
    6.28 +QX30d99IMJrzGYYxjN7Z6fF7us9u103+GTzGQH7/47JG0eSTSaKQvqEaN1+6M/OB
    6.29 +ZKcwNW6xHa+lhIS5nJGV3Oey/RFQwucBujQbtyjDN3aGshwqzhJXFBlF3RqFzLxu
    6.30 +AJmeOVedaKvdPjRhgFuxhkicUhVp27qXQCpDpkUkj9hb75yCE6pAzopO6s65yHsn
    6.31 +FyehwgyMrfpTPlPM86B1LH4IEwSaOrEJSdHnnFD8nnSIjRyfra3dsI/RVNmYX8Ek
    6.32 +MGICzoR4lWcYFShJQM6QQg==
    6.33 +=ugiE
    6.34 +-----END PGP PUBLIC KEY BLOCK-----
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/test/C9C2EE39_sec.asc	Thu Jun 11 00:51:49 2015 +0200
     7.3 @@ -0,0 +1,58 @@
     7.4 +-----BEGIN PGP PRIVATE KEY BLOCK-----
     7.5 +Version: GnuPG v1
     7.6 +
     7.7 +lQOYBFV4Pl8BCACuukQLwsHftH5jkVsSL7COFhamNsEE8lZ8MG1f1Rx5ztPuZTna
     7.8 +YXyWODgpj2Bxz0TcP+Q17GbLKse7TWD1k9i1RzLWz8ZSCLYq2TtjLWPleVuGGWeq
     7.9 +Y3tTWHC/nFbivolNPA0mL2038TGdBolPaZiPZ4P8wuQVYNfDqi4utcezGDNS8OHh
    7.10 +EPhfyKKoSM79HLoUPc6xsfimxPMrylI/i8bFvfDYz5vmydefvAxNhqjLH3Gmhj1p
    7.11 +nInsraEiyh7Y2zAxCfr6hD9nky7WixBinKFFhQpcUu1o+Ie6UGwLVbTyRMOcRsob
    7.12 +yahqA/m2HfDRj1Y+n8HHqsQkB2BtmMYXla3jABEBAAEAB/wKqiU2GVr1zJ5iqGZ7
    7.13 +hS9zDk3imXjAuwpK7GlfAVk9snSRpycK7IrxeX8s3J30qsOxGv5sYvOUcGK35kCs
    7.14 +eV78RyfthmM8WMcs28ATgE7WtkhyUAGmTwnuq9+Ldz9MYEUHUrEaXnTkBocFmd0I
    7.15 +Qx5qZLvHHtDtRx4HfAJZz0/5kj8KyKYB5cYsvRoLYdCWuxeIbJu5FYtHHBywNFnZ
    7.16 +Qt8STaQqZPD0gPh3ahzY8KYJFZbSFpGfaH0AX5dkFpUJdyad4R2c9ZOmnaK3W0Ba
    7.17 +cdQSdi66iiT0UG7f6ECR9HfI+nVfshOVLZA90p+LqLW51S7iBeFAoZyYfKuNrE9b
    7.18 +pV3VBADNf9Ec2CJ3jo2LrTrkN1HkcjmwdosFQWaDaXtRmV/GidWAyTS+JzaxnS1A
    7.19 +Y9klOqJktVNegrrkk+Xo6jHxkneGucDSsxpIVIcqTa2LGrt1E1eHNYwuEPIyHvl3
    7.20 +gPmfLCuetu+qp97+EOJBklSJi4ljPcAo7i+WI4Nsni6Q6eF7XQQA2aqRpIBmDdFY
    7.21 +9x3uAMDO3mSqIiEJWPiFZHs/qKGezJUgl4hrsjuiUWiD1gcPSS0zJRcZZ7GLYb9r
    7.22 +1uJOnzOtTLexEnAa0VJ9Svci+jtRX6HVETAnYqn9AQ/0sYvmTmWKge7q7BJHGnyv
    7.23 +YbyXmCwGyV8/cvSS8Mmh8iMYWg6mej8D/jN0ymPP9jGeuFav6Va/T8j+Fdl0zTVT
    7.24 +MkFPizlxJEev6PA9QKvAWo4iqRA3SIdqjrZpPcpwhalV5cK4KfHlh8/GagjU9kFS
    7.25 +JvUarmLZqoDqKT6cHb2OzcNBeCsuKGthraT1G+8NpXIgNr6a+5upo83pbL4RarPn
    7.26 +3u2JgSX0RPKDP8y0QXBFcCBUZXN0IEJvYiAodGVzdCBrZXksIGRvbid0IHVzZSkg
    7.27 +PHBlcC50ZXN0LmJvYkBwZXAtcHJvamVjdC5vcmc+iQE4BBMBAgAiBQJVeD5fAhsD
    7.28 +BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBZv/SIycLuOaR5CACj3E6ykNqj
    7.29 +GS5PzghYfLJso6j954QzLwOozTzU/3/HWH4lC3Jmfr0pGI51KZ6Xevrp3N9SxRqr
    7.30 +uJCFRtwNeH3ujIgDh/UHCUEsP/+d74SOenIBYGUKE1OJmh8/LQdkNSc6JNdzJjDW
    7.31 +dKeh6cAMFvWju/Nqtl/l0FGspQU9dmCMtzkKgmwoKZW56aEVZ2lTxqNEo1aQ+lLr
    7.32 +NueBq0/Q5kAVEzUG7Ufm19wXjWenEMeeElX3UAGudLJuckx7uD8W/yBwqrRAbaCS
    7.33 +eZf6RVBLz96ekjWrVfMnmjkPuQPPt5cs98RxQTpxk7b6xLaWXymhA6cYU+FAW4Dp
    7.34 +bjfJjMWIFDcKnQOYBFV4Pl8BCADKQ2SV6gjR5N69xVdiCaefjwobrXR1niuBHBNT
    7.35 +XMJwPk2xv+e7fY28RK1BzODYCzBhpltvRoCcJi9S7Rqyz81nbxnw/1TaKtn6dDDh
    7.36 +ZPVHjN3vasDueM6xTEfEihNc0Owf4wz9SBjuredUVkdTxU7FxSgVP10dOxhdtkjW
    7.37 +jGW1DF6WlYA8BAIEdbpoheJHz3NFkhPQ8Dlzo7Ioe2t7vrTztcBX11o2e+FPOq1S
    7.38 +mhEr78wbROAyCVAXK+8qDh4zDq8iAMZK/KnZrm6pP00+iBRcb+JQgn3Gn+hU0lgE
    7.39 +3YB9kBJLeWaHxEPNnnNNvW/BMl53ctf8Ip+pzpA1K/S23KU7ABEBAAEAB/0UO5/y
    7.40 +aSoUXl8zv5ZpWGA8E1x7qU3MPZQfgwtMhwEXplEyVelHSvIkjQAsjridPqf1KhAy
    7.41 +dkHY8kRAo4xMqoHjIMIzu+76hgKDzcoH+gfumOD97qwPDub/kGBg1j5v8KGg4knD
    7.42 +L8pNXKMWlNeSFzDf6BmFipmfb3EVYBiIMceIz97c4BGvs29TC2wIKmJBRbWu9eS7
    7.43 +vqkBj8rEGi+pEnzTFvcZTMkoU6Uj/HifpvQ7BcOzUQ/1tiGQMEPv8oPMWmKudqBw
    7.44 +53e7RoYCZmTzuzI5fNvNcNT1EcUQmAfkgT6zvQuY63DAdECVx2f0p7MlgGA9ncQb
    7.45 +IVVdBtJXfwsAFmthBADXmavPPgiC8nU1q8e2pB0pmS3/uflPdmh+xKs0MxylDgSO
    7.46 +H9Ar7g9duxsrjxxHzlkTb0Am2XeWww3fBO762VH9VCAPH3FRoHGNCnY6Ix0MyikW
    7.47 +g4Gs66QXHMTNweOa9zk+cZS6N0H6dDis6x+9M1FCeJzy3gXaq+vfV5LfGeXMYQQA
    7.48 +8CnyHE7rjoqGNPnTWetuYgo6yhYJudbhO0uDewR5MdP1gwpTUmYl5RD41LSwTSGp
    7.49 +VSbjtct5dQg2ZhjUWxXcx1OC+aMafmDPi6S32mwbgfNtfTCIygM8CPDjdWbFu1ba
    7.50 +KbPA9Lc/SHgpg0vbdiZ4PWOqsqnig834r+3VfLX/dxsEANAWGGJRNTHmIwoC4HsV
    7.51 ++KiyApbBRw2TCHxJjlzFY2OFpe8RuGKE7HpKiSYjarGxP0RlESrbie0nbJ8FooIH
    7.52 +gY2ipO3khgK4MK1Xua405mNVzge9oNJPgWEtLabubimVnTwjU6O7m79Xl+R9BYb1
    7.53 +GVZm7f/WMDL7BsNVvhMVjdgiOOOJAR8EGAECAAkFAlV4Pl8CGwwACgkQWb/0iMnC
    7.54 +7jlqbwf/dP4sXDRiR5uVMh5WhOn1S8MnHZhLWAQ6fI9/KxggCPhgY6zAgszPMutz
    7.55 +BsQlV4P6QX30d99IMJrzGYYxjN7Z6fF7us9u103+GTzGQH7/47JG0eSTSaKQvqEa
    7.56 +N1+6M/OBZKcwNW6xHa+lhIS5nJGV3Oey/RFQwucBujQbtyjDN3aGshwqzhJXFBlF
    7.57 +3RqFzLxuAJmeOVedaKvdPjRhgFuxhkicUhVp27qXQCpDpkUkj9hb75yCE6pAzopO
    7.58 +6s65yHsnFyehwgyMrfpTPlPM86B1LH4IEwSaOrEJSdHnnFD8nnSIjRyfra3dsI/R
    7.59 +VNmYX8EkMGICzoR4lWcYFShJQM6QQg==
    7.60 +=rBox
    7.61 +-----END PGP PRIVATE KEY BLOCK-----
     8.1 --- a/test/DF9B1541-sec.key	Mon Jun 08 22:08:24 2015 +0200
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,105 +0,0 @@
     8.4 ------BEGIN PGP PRIVATE KEY BLOCK-----
     8.5 -
     8.6 -lQcYBFLefd0BEADB97Pmcz0yfkOWD2978HRUCUa7H4JpuDHZs+hurMlkuE7mLGh5
     8.7 -PAQ61/nL5gppl0cHFNlO7doG2gcRixWZfeQZywkJia5xNzcdjyAiC5jZ6IQpXk2T
     8.8 -wwzBIDYrU+9DhppY5hnE90yDv0MBS2SVjDergZTPDBbIYPTtPf5h51pVULCAtiyN
     8.9 -2Htv3M3tDwJJ9IrLFpJL+ClocgrmeDANKbico63qlBl9NjiUqdnt5INoE6/SnKSu
    8.10 -zaBE37C+/10bswFpjjVffyhu+hplxp6MlalZZYJEip6rmDe0P+nMbEmNvNuUmZwc
    8.11 -sPwvr1vRwhGGpZao2j4/SnDsKNNmsLrwyVEQboHYcKIgLEuHY4WtHDUt6umu7zdt
    8.12 -I6VDUoiSuNkVB+TM51HeQOoLZJ4Evcrdh6zKB2wWMW1RJQIknlMDwnRhHj+WJD06
    8.13 -texTzvAfDdsHV6NNs2WeUKesyivCyaKMPU7o95D+ZMi22CQ2qUCSLegivpnk/gKS
    8.14 -pM+JqwyAPnzJBW43qr13zA0tWMO2nzSzcYnRhTNTGeqkxn7t2Uc0ItMk360Xy7n6
    8.15 -yI2AL79daP0NGM9P0F4wD44FCnrvcDO0gbk3zJJnynnfFSF6Dk4/2sRUPsp2gm9B
    8.16 -hiHFt4w13mySETjd0sbcQYbpHZbJEPm2YY/q7rTCCCA106vg1S2IduY2GwARAQAB
    8.17 -AA//QydAc/UKx2v6dz4B0W2GwL9zav52NqbML3x/aK3Ojd3Xhw3x36M9Lagvdf2/
    8.18 -Nh5nO1bnA1IKrVuXneXCxSDWM23dQ52UtOKyZLv0GoVcVnkPJIlfH1ykkkpWJrsI
    8.19 -955m2odTfaNGrMgvaQfSm4nvjiOvQt2DF72lnmtbokaoOihU60Lm+vbriWdvLfcH
    8.20 -ylXtJXG7laylnWD6UB9lN3Ft1mE+qZu7lWOLxEBn0FpQelxyf163D0PmjGHLfdzI
    8.21 -PfpD72kKJnVOKNnTANB6fN6lwmsH5jX9yBfLlU6ZYapN7tHnTbO+3hoSPWofRmhD
    8.22 -jBPRLMVeTqg1nzVlN0TRe+Ke+xAMkrlAcC2xJyU4vi9VgGJNeXZk0m0aDpxGaHwS
    8.23 -p1lskMQoKO9cswCeBGUbWmuhC6MXPwUpN3s1r7GSwQGB8O1xQbSghTqozgIwlu/H
    8.24 -JRfC8yvQJpxK9UtFJ1t41vq/urxxlL2BC67ms9u1W+/yY/bgrKPAlP7QcYJqXFQa
    8.25 -b+1xmL2gG0avgGISzu86hN3VLFZ6xKyIfgrAP4N44ZrJ2dvgR6jCpU6qg4Mzkiuf
    8.26 -j7dnLRfRcjRT3K+a62Ma1cd0DqeFdYHyOO6u/68I50doj5X8NDJQLy6zwOtzmbKz
    8.27 -5l7DLZbX9hnhvrk0mMOflLq0+adr5KloGGYcQHtpfF8VKy0IAM0wqLeGWmkSMQeA
    8.28 -jj77lpF3JR1OObw7Od8GewMuGBOZjdc5EC2CvLwM040dT2a93QJb5qF08AHKi8g/
    8.29 -GKGnSZ3YqfSuHOxqtAycURUWsR/5qVc2aEcueimq9RvKPOH+jihhcJofgYS85xuD
    8.30 -pIZRCpHITiWaWeE2FxlATzOAldReThNm1W6uaQ/A0VFZ4It1jvHeHtiL1v9KHwH+
    8.31 -7MQCK0hQ0MxrK5RudPFLTky4FAfIXSOTUZBzzrL5kiFxEcLARj1UVZjD7BvwZOQT
    8.32 -gNVYOA7BfsqfH17NEnkaZTFUUVb1+nggzl4/Csv+1ZPkHnfzv3KpTRE1Mh7oXs1B
    8.33 -cvo/Ds0IAPH/obEvqL3sSJtxDWuPd6iKhcJ5EbbrFi4XQNjFy/sJTVmX9HWfwDF3
    8.34 -WU9qPfKuF5f9EN/VH/ge7amlnJvHMRBfnvk8ViAiitucZAc4HzFIIyLB2SWRE6RX
    8.35 -AUplhRKn/9LAz8Q+VgHDSlvk3KuwE1CYQXg2qNHjw2xeWepDHgshGBFlnmx69Lcv
    8.36 -atiqwKlvFCJND9eu022ViDJ4gYxH2S9DpBuVqhAaZLa4jWssOGn28vUEv9gD7zAA
    8.37 -02ja08cO8Zkf9+aawN+XiYYKuSaPwg4K31SFP/VTkJv0sA9YBaqLOqjnvjjZ0igO
    8.38 -4gmP3zR65gpWLn6liZig4sGRp7XrCIcIAMxGghMsK6NNb7prVTJ7GiOnsgAmIiNf
    8.39 -BqmkcESNJBRSglKPW2fQ5D6TY0IUrNDZyf8lyO/5whnEVdzzapMr/jzcdX2lCByo
    8.40 -tTtxkU6UivAS3AXwSkqH+CG4WdrkkLziCMTH/pGmOH/BiVdkvEyAlSzt1ECpHKP1
    8.41 -hWIrJfBC6xc9c1c5wySqX6422fBG6G79soLaAxpITl+VQ0VyRG+RG6V0OrafGfnR
    8.42 -glZB58jUjBVW6Cs8AvIW1D3BXL1zb2M+Bwa2pgaoopp4ZX7/aqmfFpUhlYFXud2r
    8.43 -K/z0Ua7wHi1bEHbWxMdPLCfTWGv0AJJItQfY9n+GR+awzoMyVwS0TV542bQ/Vm9s
    8.44 -a2VyIEJpcmsgKFRlc3RrZXkgLSBkb24ndCB1c2UpIDx2b2xrZXIuYmlya0BkaWdp
    8.45 -dGFsZWtoby5jb20+iQI5BBMBCgAjAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC
    8.46 -F4AFAlTGNOwACgkQ3VW/Kd+bFUH65A//T0I+c5QpIFj3EWq3qLsQt/kg/6Ae8Ct0
    8.47 -A10kzXPxUm8a+JKG8KeAjZeW7YK9zFfB7Lt62E5POYP0K4wX8JChfDFlr2eGUW+E
    8.48 -xi0XfT/8viybhogoMlo8rSOtEZKdv8mka6lOVHmDoy8T2W/lZJPw5me4sXJzxzAK
    8.49 -NOCOsiycGhNZFjXxILsUgQrT5qY0gslxzGBY+jza4Lq1UD6wXO0KFdy3Ucsr394Y
    8.50 -i28OIyRexVX/I1GNg3jaP5lmmAag1W1maI4MuMFwephqF2q0brtapoaAS/n71cfo
    8.51 -xgTxqRwzV1LsnRRDxisxc3EtWHD09HpTaxDddvjeoamY3+1Tu/4N3naSkYuqMqKa
    8.52 -1d0dbrvqh+jOHIIO16P+oArHb3SmmDQqpluzVF1j5tquVsyFRSS7dc6LYe2CbYTx
    8.53 -UQSRaGNDyt41eXUTU8Va0WCAAht9n32vWbxHsFOP0QXGZfGZF8V4ukOOvL/PDnFi
    8.54 -9EkEbmvM9BaSkPTuiXgrta+dos7b7JhbrGdN26R5LxhsO2835KrghLIDqjkOiYom
    8.55 -GLNCGoQWUimeu4r0znevmJVq1w6T8MneWJTXhZsVHNvcUB6drVf18i7pRxx92zio
    8.56 -HxylmwrTkp1ntwbg21Pq997YKmfgEap1kwCHHTosjgDftcNcrcqlOHAMYCeeK847
    8.57 -XQoSJjpTvQydBxgEUt593QEQALwSjvQuRsVyI8p2DS8NdGTOEe+11NJr1pIWy0JR
    8.58 -YVW+zhAhXZwKhdueCTW+zcrB/ygKokCj2/Kh7GgnyJf7SGpBGnoMTGHtM7WjiZr7
    8.59 -E26FvQIVUMfE+P4h1lVDrHX4Ah3zJRasGQRlVHvJiC5875X0f3wNqPmNLDYf8IG9
    8.60 -kEaL3n6H0tG8p+VZAELZxgbdt0LMBa/TK/hp8OtaDmO4ME7+Nudg5Uth7zHhmBwh
    8.61 -ij4bSre37+HM9u12RnYf1SCbManmR51OtbjmNWA4H+Tb8sa22zgxNmhzCQ3bggXe
    8.62 -MLIP9lpVNC9rk3uH0Adb7rjpbh0y0lzzUmfKO6yasoC9zznzdiHhsKAhmfn4F+Gl
    8.63 -cMjUhgGtnHKbq81RVfS8cT/XIWdCLT/nogJ3xiv7G/uDNjq1A/X2Vah0T8eMvvBO
    8.64 -mnRdwQtblK3CfpMsFzqDZht9C/c6py/wPuHQZti4G2K4zFwP4nN0vTEv3EkZ3+wC
    8.65 -K7Lw8nWu+d2DzzXl3r3+l6wqQ3DdGv8JyL6tnSlR+D2kgDeLYqpbaMHr+LJsZN8d
    8.66 -5Lf/ilJqxaeiEB0tYg11yi64D9AbjwURV7BnuDbh2eNeIg0wQ63dLjQ8aZF4Y/rx
    8.67 -gWvOAo2/lveUOUMcPcuOBFN+pFchKqosALwQ75JYib5gYo0tgtUkhpJMjnJFMUqu
    8.68 -LOxbABEBAAEAD/4tXma41d8Bq26h3QeCJcNBvApMorcDybrZxADlbx9FYYFxF7Nu
    8.69 -vIUc/QsouW4IbvL/9Ey+viiFZ/VRDOPRce8+npTmA0h7yQ5Tz28XAWFnJID7WywA
    8.70 -/O251GzRZcFZNepA0lJMnVhtnIocUHn3CPF84Z3NTbhI9vrG1b6ddZ6zvfL+4AIF
    8.71 -0XZJF8a92a3xIxQd23y1tQHi65+QDsnw2VJiA+Y3u8KkhCwBAvRAOQERyWClYAxQ
    8.72 -krKwhvspbLVrp7R70U7OTln9EB+pJfDfswVmVV8dt5Vx7eotuxmrE7X4hmw9z1cG
    8.73 -53MM9i7DT7SPS9Rh28wuWw4ydnEdyrWr4930qVLoXnP5zvA9rVfVg9OuEvPRT2B7
    8.74 -Ht9ygyuc+RnzLKdLgt1/riJQHMDrTlyKV4MZR31Pkwofc1AusVptfnm/B3X6moxV
    8.75 -dhHKc+r/uAVGuUFdyBfyPql5oyLCkqSnW7DCroxbAbGoT2kgzW7DIM+vqSttqdD7
    8.76 -TCY6Os7nL5dmkHDyfP53xgkcn1gMEsthnMuu1q40DGFHqEOHhOGw+14P3NH0/cA3
    8.77 -QnU3h/4vWXnich+0BmvsXJyQh04qR9g9yf8vP8k5EiPkL1sKtX8B2zAjYrXEqpWK
    8.78 -u4YXJo3SBFQN+r7l/kZKm7cnRRdGU8p7sUkoqKgnXZM+H522H535u0jZnQgAz02b
    8.79 -JQddSQFdTsARz91JJthExBnphzZnLNTLulRN5rVotsXX7vffsZdTQABljuRfe/S/
    8.80 -TlurC4NtaEXsZpmkTb3Mzg/Q4tC9bLpfbd00F9B76rpvxbXo8roZpdNMQnNy0CaB
    8.81 -htAH5TjeKtnNcF3hYHf9esaDTQBTrERUDJCX9ERls9VSOyb13SLENgPmqXmuuooR
    8.82 -FRt1/gbmq62JEpqREVgdTxqGqjQWwQwWXLbRYWC7KKTrG87KSGny0LRiUfY5yPyz
    8.83 -wRSe8R6hv+XpeBz4017CHzHn2mWY7ENqbyYI30NaYroK66+1e1uToXzGydOxiJ7b
    8.84 -wBDIGuCrXqH22XcsVwgA6EB/Iv56xO/yKHjz5J254ZxXtk228LY+se4tBUWb20hc
    8.85 -AbuNH6H2a8cyD98WEBVQmmBtbDCE754IU+poZGiVjfwBT6vvk/cuCx8aNAzY0DVm
    8.86 -k/aXI9PiHP2DPZf5kZsgIzW/ESjGZqtIsWrYgIujnI6I/euE8dvbKAHvOnkKlCpP
    8.87 -2AquKtPXhreY0s3iJY0WF5FECM3yoCCEAQOr0P6wnqTSt6BDZCpVaILD4KXnDuYa
    8.88 -QABH6/txyYmWOJFH+vNZdLnPfhdcCEqWU+Y5A4qS6ekBY5ZjPTnjGDtV670I29hA
    8.89 -Xsz4szuHr3xhDYXzrmmVQ93Hs3y/35mnTZv11eo9nQf+K9W58hNpV9mxTOK2LOWN
    8.90 -uFwkEakhP6VxtyHR1swpJV+krabNxLEprMBQLwX0gj2gPKhF2q9joZGhGPwHjshD
    8.91 -Qd2znU05zm7b444RU0f+hdAAy15nAJaZ5VyRt3frrpSOq4/FlNrjXycO2oLsMbcA
    8.92 -bHrWa7bYAkNFTLePgE6LCuIL8fGXT6w/dJwkIHTFKFpKL1zcr/SC/tS8Yt0Sph2G
    8.93 -xFu4/5hOmtuUXf16vX9TrgVP1s9crOKA9V77piXJvzx84/nNl9ykO6Uwp+rm26TZ
    8.94 -ku19/5SQL+EqhmykqZ9an0+1hZH2F3gp3NZ7dEiaQ7lNVWT85/Ki0g/4yio8jnNt
    8.95 -H5sBiQIfBBgBCgAJAhsMBQJUxjT8AAoJEN1VvynfmxVBKUwQAICLBFwL1MJHQCcd
    8.96 -cUWIGcjemnNcXB6gJ7woa/qlcacNJwcIuwmqYflr1wh7YCttxbyUHQm0vHHXbJ5F
    8.97 -q0qGZsjkkRbt+GGi65AUYv9SaW8/7GcdiF8+/zLY8QbTSOS6S0prdpcXQ1tNsd4q
    8.98 -bvJN6oJAcJKMKa5BIeWmM6Tf1SDzpmr9cNSqOH66ZML4QSkd36A6qWExj1TBQC/I
    8.99 -7JBovzUJZJyJqGGn3Z0o9HsOOxBOP/x5r5iocBkgSXG/lrcGOAwPzzKJasmOxtOV
   8.100 -TXTFSory++SkgbexYYz7sd52p3PzVAf2Yueup2krBl/zSOcVfgPke5lDtZENqkBc
   8.101 -BewebdigBRUzPHGeiUV+yh+T5d7opvPcavCPabff5vwRJpc18nYmavtXXKL/Zm5a
   8.102 -XF1HGCUh2EEl9ZM03KJeX6biC+n3uqpI6vZ3eGvv7q/td5Hlr+qJ4gtLQ0vqUaY8
   8.103 -QCgi17ssHOkh3nWJTM4GoocoX4zQVo28hN5dEi0voU2ShIjEafha3fFzkxniSavw
   8.104 -zh/s4f1rpbQXO+ueWPlsLWVTIOEfsqMO3O1HpdZyHIsAvDeMWkPbEWoYsvPlItnb
   8.105 -n7MzXc4oJ1F+R1tsgGVvgu/Q45MtNxZ8CXftS95a/J61MVY103yI5gpGgNLj+X0U
   8.106 -+N3C7yIoyB94aBWuQF/F53IQVNIo
   8.107 -=Onin
   8.108 ------END PGP PRIVATE KEY BLOCK-----
     9.1 --- a/test/DF9B1541.key	Mon Jun 08 22:08:24 2015 +0200
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,65 +0,0 @@
     9.4 ------BEGIN PGP PUBLIC KEY BLOCK-----
     9.5 -
     9.6 -mQINBFLefd0BEADB97Pmcz0yfkOWD2978HRUCUa7H4JpuDHZs+hurMlkuE7mLGh5
     9.7 -PAQ61/nL5gppl0cHFNlO7doG2gcRixWZfeQZywkJia5xNzcdjyAiC5jZ6IQpXk2T
     9.8 -wwzBIDYrU+9DhppY5hnE90yDv0MBS2SVjDergZTPDBbIYPTtPf5h51pVULCAtiyN
     9.9 -2Htv3M3tDwJJ9IrLFpJL+ClocgrmeDANKbico63qlBl9NjiUqdnt5INoE6/SnKSu
    9.10 -zaBE37C+/10bswFpjjVffyhu+hplxp6MlalZZYJEip6rmDe0P+nMbEmNvNuUmZwc
    9.11 -sPwvr1vRwhGGpZao2j4/SnDsKNNmsLrwyVEQboHYcKIgLEuHY4WtHDUt6umu7zdt
    9.12 -I6VDUoiSuNkVB+TM51HeQOoLZJ4Evcrdh6zKB2wWMW1RJQIknlMDwnRhHj+WJD06
    9.13 -texTzvAfDdsHV6NNs2WeUKesyivCyaKMPU7o95D+ZMi22CQ2qUCSLegivpnk/gKS
    9.14 -pM+JqwyAPnzJBW43qr13zA0tWMO2nzSzcYnRhTNTGeqkxn7t2Uc0ItMk360Xy7n6
    9.15 -yI2AL79daP0NGM9P0F4wD44FCnrvcDO0gbk3zJJnynnfFSF6Dk4/2sRUPsp2gm9B
    9.16 -hiHFt4w13mySETjd0sbcQYbpHZbJEPm2YY/q7rTCCCA106vg1S2IduY2GwARAQAB
    9.17 -tCVPdXRsb29rdGVzdCA8b3V0bG9va3Rlc3RAZGluZ2Vucy5vcmc+iQI5BBMBCgAj
    9.18 -AhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AFAlTGNOwACgkQ3VW/Kd+bFUH6
    9.19 -5A//T0I+c5QpIFj3EWq3qLsQt/kg/6Ae8Ct0A10kzXPxUm8a+JKG8KeAjZeW7YK9
    9.20 -zFfB7Lt62E5POYP0K4wX8JChfDFlr2eGUW+Exi0XfT/8viybhogoMlo8rSOtEZKd
    9.21 -v8mka6lOVHmDoy8T2W/lZJPw5me4sXJzxzAKNOCOsiycGhNZFjXxILsUgQrT5qY0
    9.22 -gslxzGBY+jza4Lq1UD6wXO0KFdy3Ucsr394Yi28OIyRexVX/I1GNg3jaP5lmmAag
    9.23 -1W1maI4MuMFwephqF2q0brtapoaAS/n71cfoxgTxqRwzV1LsnRRDxisxc3EtWHD0
    9.24 -9HpTaxDddvjeoamY3+1Tu/4N3naSkYuqMqKa1d0dbrvqh+jOHIIO16P+oArHb3Sm
    9.25 -mDQqpluzVF1j5tquVsyFRSS7dc6LYe2CbYTxUQSRaGNDyt41eXUTU8Va0WCAAht9
    9.26 -n32vWbxHsFOP0QXGZfGZF8V4ukOOvL/PDnFi9EkEbmvM9BaSkPTuiXgrta+dos7b
    9.27 -7JhbrGdN26R5LxhsO2835KrghLIDqjkOiYomGLNCGoQWUimeu4r0znevmJVq1w6T
    9.28 -8MneWJTXhZsVHNvcUB6drVf18i7pRxx92zioHxylmwrTkp1ntwbg21Pq997YKmfg
    9.29 -Eap1kwCHHTosjgDftcNcrcqlOHAMYCeeK847XQoSJjpTvQy0P1ZvbGtlciBCaXJr
    9.30 -IChUZXN0a2V5IC0gZG9uJ3QgdXNlKSA8dm9sa2VyLmJpcmtAZGlnaXRhbGVraG8u
    9.31 -Y29tPokCOQQTAQoAIwIbAwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheABQJUxjTs
    9.32 -AAoJEN1VvynfmxVBRI8P/0hUFq6YqbYbcCi2sJ+LN6K3T6wSL203p50qO8PS2QDz
    9.33 -5U/5TzTPnmGcRvVlXZrX18QQJZYv1HJkysvKCPOnUHj/AC2zXxQNw1dSgEqMmPg0
    9.34 -WmSW4+PsGE1ZK6A13TW+psb4rtGC2htdSfspo9eKDDd6ekLYA22xMWS2zBKiEdwe
    9.35 -VQekp2pt7sN52H0obtxDEES9ZdIYoaI6AO/l/9e5O0Oci3uwdPZLNPbwsBXctGSC
    9.36 -dDMJ/cP+GHiCVVT+HrqjwQcDmD5l+S8h1rDbfYtL2JgQaABAVScIWqJc7LG9QUQA
    9.37 -6iEBlXVK8u4LTIUX1o/fqpah/a2iM21VZ4Uov0nhJo2xrS+TSf9kv1VrWS0wIPIM
    9.38 -iMYdNs/GU4t1BrbPLG9eCj7Ql48V+//sftFWfePbPrspVg/3KH2ADZv39JrmNWjc
    9.39 -AYN0E5ucOzTiJbDlFxk5nXmnXMGtVcQwaaWhzg8SCYnHEvw9NT7gjs/Gz/49R5a/
    9.40 -AXv1GfRhv7CgTn7oz3Brh9cspdnx/McfpSJAmTbaTzjKxB3C17HeC4iX+m2AqulH
    9.41 -owGZEeJQKEFkBcNL+Oe7WWM87cZNRCIKrb+aPDEvhEENbykZKg+Ge5wYNVKpyJGF
    9.42 -0tGQbmh1rCN2sHrC3EeigEIQUXDYTxHfrkgAHEtDo8LBqOS3G3TVkXw5dplLJghN
    9.43 -iEYEEBECAAYFAlMWAIEACgkQDHsQm/pyYfec4ACg72MDXTSipGZ1/dCZ/qiPEM4r
    9.44 -HyoAn3P2pW/JkUuBG8qcN489LXKvQU3XuQINBFLefd0BEAC8Eo70LkbFciPKdg0v
    9.45 -DXRkzhHvtdTSa9aSFstCUWFVvs4QIV2cCoXbngk1vs3Kwf8oCqJAo9vyoexoJ8iX
    9.46 -+0hqQRp6DExh7TO1o4ma+xNuhb0CFVDHxPj+IdZVQ6x1+AId8yUWrBkEZVR7yYgu
    9.47 -fO+V9H98Daj5jSw2H/CBvZBGi95+h9LRvKflWQBC2cYG3bdCzAWv0yv4afDrWg5j
    9.48 -uDBO/jbnYOVLYe8x4ZgcIYo+G0q3t+/hzPbtdkZ2H9UgmzGp5kedTrW45jVgOB/k
    9.49 -2/LGtts4MTZocwkN24IF3jCyD/ZaVTQva5N7h9AHW+646W4dMtJc81JnyjusmrKA
    9.50 -vc8583Yh4bCgIZn5+BfhpXDI1IYBrZxym6vNUVX0vHE/1yFnQi0/56ICd8Yr+xv7
    9.51 -gzY6tQP19lWodE/HjL7wTpp0XcELW5Stwn6TLBc6g2YbfQv3Oqcv8D7h0GbYuBti
    9.52 -uMxcD+JzdL0xL9xJGd/sAiuy8PJ1rvndg8815d69/pesKkNw3Rr/Cci+rZ0pUfg9
    9.53 -pIA3i2KqW2jB6/iybGTfHeS3/4pSasWnohAdLWINdcouuA/QG48FEVewZ7g24dnj
    9.54 -XiINMEOt3S40PGmReGP68YFrzgKNv5b3lDlDHD3LjgRTfqRXISqqLAC8EO+SWIm+
    9.55 -YGKNLYLVJIaSTI5yRTFKrizsWwARAQABiQIfBBgBCgAJAhsMBQJUxjT8AAoJEN1V
    9.56 -vynfmxVBKUwQAICLBFwL1MJHQCcdcUWIGcjemnNcXB6gJ7woa/qlcacNJwcIuwmq
    9.57 -Yflr1wh7YCttxbyUHQm0vHHXbJ5Fq0qGZsjkkRbt+GGi65AUYv9SaW8/7GcdiF8+
    9.58 -/zLY8QbTSOS6S0prdpcXQ1tNsd4qbvJN6oJAcJKMKa5BIeWmM6Tf1SDzpmr9cNSq
    9.59 -OH66ZML4QSkd36A6qWExj1TBQC/I7JBovzUJZJyJqGGn3Z0o9HsOOxBOP/x5r5io
    9.60 -cBkgSXG/lrcGOAwPzzKJasmOxtOVTXTFSory++SkgbexYYz7sd52p3PzVAf2Yueu
    9.61 -p2krBl/zSOcVfgPke5lDtZENqkBcBewebdigBRUzPHGeiUV+yh+T5d7opvPcavCP
    9.62 -abff5vwRJpc18nYmavtXXKL/Zm5aXF1HGCUh2EEl9ZM03KJeX6biC+n3uqpI6vZ3
    9.63 -eGvv7q/td5Hlr+qJ4gtLQ0vqUaY8QCgi17ssHOkh3nWJTM4GoocoX4zQVo28hN5d
    9.64 -Ei0voU2ShIjEafha3fFzkxniSavwzh/s4f1rpbQXO+ueWPlsLWVTIOEfsqMO3O1H
    9.65 -pdZyHIsAvDeMWkPbEWoYsvPlItnbn7MzXc4oJ1F+R1tsgGVvgu/Q45MtNxZ8CXft
    9.66 -S95a/J61MVY103yI5gpGgNLj+X0U+N3C7yIoyB94aBWuQF/F53IQVNIo
    9.67 -=6vQn
    9.68 ------END PGP PUBLIC KEY BLOCK-----
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/test/gen_pgp_samples.sh	Thu Jun 11 00:51:49 2015 +0200
    10.3 @@ -0,0 +1,23 @@
    10.4 +#!/bin/bash
    10.5 +
    10.6 +# Use this to generate test msg.asc and signature.asc
    10.7 +
    10.8 +# Keys pair are : 
    10.9 +#
   10.10 +# pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
   10.11 +# 6FF00E97
   10.12 +# 
   10.13 +# pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
   10.14 +# C9C2EE39
   10.15 +# 
   10.16 +# pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
   10.17 +# 70DCF575
   10.18 +
   10.19 +# msg.asc from msg.c
   10.20 +# Bob sends a message to Alice and John
   10.21 +gpg -u C9C2EE39 -s -e -r 6FF00E97 -r 70DCF575 --armor msg
   10.22 +
   10.23 +# signature.asc from t1.txt
   10.24 +# Bob signs the message
   10.25 +gpg --output signature.asc -u C9C2EE39 -sb --armor t1.txt
   10.26 +
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/test/msg	Thu Jun 11 00:51:49 2015 +0200
    11.3 @@ -0,0 +1,22 @@
    11.4 +GPG(1)                         GNU Privacy Guard                        GPG(1)
    11.5 +
    11.6 +NAME
    11.7 +       gpg - OpenPGP encryption and signing tool
    11.8 +
    11.9 +SYNOPSIS
   11.10 +       gpg [--homedir dir] [--options file] [options] command [args]
   11.11 +
   11.12 +DESCRIPTION
   11.13 +       gpg  is the OpenPGP part of the GNU Privacy Guard (GnuPG). It is a tool
   11.14 +       to provide digital encryption and signing services  using  the  OpenPGP
   11.15 +       standard.  gpg features complete key management and all bells and whis‐
   11.16 +       tles you can expect from a decent OpenPGP implementation.
   11.17 +
   11.18 +       This is the standalone version of gpg.  For desktop use you should con‐
   11.19 +       sider  using gpg2  ([On some platforms gpg2 is installed under the name
   11.20 +       gpg]).
   11.21 +
   11.22 +RETURN VALUE
   11.23 +       The program returns 0 if everything was fine, 1 if at least a signature
   11.24 +       was bad, and other error codes for fatal errors.
   11.25 +
    12.1 --- a/test/msg.asc	Mon Jun 08 22:08:24 2015 +0200
    12.2 +++ b/test/msg.asc	Thu Jun 11 00:51:49 2015 +0200
    12.3 @@ -1,38 +1,36 @@
    12.4 -
    12.5 ------BEGIN PGP MESSAGE-----
    12.6 -Version: GnuPG v1
    12.7 -Comment: GPGTools - http://gpgtools.org
    12.8 -
    12.9 -hQIMA0v8ThRgMMUcAQ//f+r+No4dufsFipIKAH0aIQ7/t970jM9h+iRVbI6hapvi
   12.10 -+w9alPbjraH24lDme7MGMOSnxMBXmZG/U/LUTaqUkIG+vUEeO7CHUQ24Y2hOW0H7
   12.11 -6WCsFLBPRhLuT8sZzFTMRZgwwBxtfzeDhMZtmQlXYMxbPS5tHuOG6eEqZzY2WtZc
   12.12 -tpasfiUmfDAOPVuGC+D5S/oA5Idb7dyuqTYhlIq35sKV3zmx4dz7M8sV+G34l8+1
   12.13 -83X2kT6GUqoN/Fbq4Jo7LGB59uPcjc9+P0QNo45pkN/BAIa83dHxkSH6ktMKEDaW
   12.14 -DX3+gVgz+ErAeXvlkKoxWUHdSyzVOXQh0oIaMN/7Fy8472vHl6QLJ8mHwaeCP6ZP
   12.15 -MXY7/Me3dgCBokd4ov5us8pSoNehQIMT4iyYyS0LMxGIC8YSoLYrBYRqVWxlukty
   12.16 -GYegJQ2RMKw9dRnG16NZVHlmWaFELhMt8zZYV8g+3qePnUNPGTpqnz8DUrlvATEN
   12.17 -s1zFhduI+a6appcxy1f8vWvV4nwpZGOM73yRywpJxfLSn86eU2Fs4pMIHX/79nQ0
   12.18 -0LZeebhrZrD/PoAmMdiiiY7ypViOpO7TdahmETK65q7KDreg4ba8PwE8dEZZabww
   12.19 -osMGFkNuMwNgDeRl9idLvC5sw6BfxlEQz9JdOI5AMUjQUUp8cF/EK5HYFqqhob6F
   12.20 -Ag4DeHVCKO8HDkcQB/42VLRXAOBeZi2Q2KlK5k0gdC09Dn7plP3VxAZYilvcWOfv
   12.21 -XnwvYp3uxspgrcbGl+LcdYKX9k1QBzW2J+jJEc8E22yoqeGO1wAG6w5nMvD0ZP2C
   12.22 -pbHSegHAsaa8QktR79T7+/qaLxsk5BPMyvTUslHIB/YgWE9yz/I1LItbyfE7VnjW
   12.23 -EBTGchV/so9kQdS2as4LyjubzwmQ8A+ri8au7E33LuORKfr2vPYVKa25yq8/oA18
   12.24 -oGQPn+/4fYJthnxGUPxz7VmRbs3g1vbta8rk7CDafak9tArXPipaSP85y5EfrbAh
   12.25 -cbZBYwrb6n8wyl+scaaFeOFwvGoAlJ55ll2RqgE1B/4or/DLhAczyGiQ485ZYuMi
   12.26 -xLFx+e5RuOn5s0wVUIq+2VarayvfEbY+5NNz3j+1Q1As/+S0L7bY+8TKTQovvc4Q
   12.27 -FCQrsSViu6J1wRIfNLLFSW6xHW0pcnIUHKJuOopqlYFzBruUQnbObB0HO5Wznwjb
   12.28 -rQ9olCYJyKIrlDdzYO5FDiOTXNlY45WNUmUTpmuNZKUZ2+3TCyPRbm7zRsbFWUmP
   12.29 -ZuBerHzbko6uNqKuQNf6D0aqb8SnhCdhFcxfKq2LeAWymPuXabWC3b6k3N4TBct9
   12.30 -VnJ1iJ6Fig4KA9MdBqiIX7gRhK5q6wuxyu0su7zzgnC9wveMR5/EQajNjAGnGUe5
   12.31 -0sDCAeeKIgN0L2zeoffRoID7FNajQs7rHxGrVccY+NslOIulgMEBHKYSCMwp7FbF
   12.32 -MpSWyhpv43hhBKoGkUK6nKb7BbCSV89DyXPmAqnhl/Hb4YjQoVhNgprwL7JDThIT
   12.33 -8FWrpQdTFqttU1rhIt1T1htmjdoFTZ1n4CtBAmlvwE+fFXeq0r9Oi8UBynVM2sLW
   12.34 -kPAEScxSEdykxKuR5jj2uZWviOf2RZKQ61OutyMuWjqgH07pZBxM2NGMtQIufL9J
   12.35 -a2uO1291DZTlUnJQ0p5JkF4l2zmKxynsgi5YJM5j1L63j9LaDgWKJZPVI6T5zClG
   12.36 -GQGYIFB5+6mHCQLG1bY7+fKK+qrZUv1BGx+CoYl1pyf7nxIAhEPArSFXrEFVHgHB
   12.37 -sCT2cBlyuquSnUQs0z0sPlLmHlZ98VonFwf2f3nVuCq+0WHRnQ9Xe//c4UBbMoWA
   12.38 -a9zqyamBQ+vvwzFSVkg6//R6Grsa9jHcwBogxCHg2C9tOm+dgANVzvtKha8GCNem
   12.39 -9TFmu2s=
   12.40 -=CwSp
   12.41 ------END PGP MESSAGE-----
   12.42 +-----BEGIN PGP MESSAGE-----
   12.43 +Version: GnuPG v1
   12.44 +
   12.45 +hQEMA1oCBdlzCD9NAQf+NM15QA1chVbHLibULsUvJRvvlDlkYFC39pqOhHda41nw
   12.46 ++il9vvsHYYyY6igm5Hffv6TkvbONyCcimH14Qmh4N8RFJgw6qbh5k4HxRRKLd4on
   12.47 +fmXTBiN3X+exz0yEuQIqD5cZBfAUx1OKIPQlB+AcAxfx9uHfR8nWTrLkZrk7hZKG
   12.48 +P4ABgkhXEOxIMw/xliYb5NKg7ImY3IWV6FAk5mtklc9xmbW2GLG5R8NPHdbj9wgZ
   12.49 +wmEFcz3xnIU66ZimUzvVj2tIYGNpbRo9YGfbvAdf+1KDEZvrZO7ZdEYJwJTjnxCw
   12.50 +bqmk7NvOmuI9xlpyr/LEjAI+dUEkp1cfL9VU0bvtUIUBDAOYPRmfc6cbjgEH/Rxt
   12.51 +vK/fHPA/nOyJJlzEoeIA72sA292aeM/wOrlzn0CgJjC3DzVFX1R0Rr9xJRQrHAt7
   12.52 +prFBQM2MbXMYM4m81tQSndye6pyvR3KFVveVSs0dO4pGHJnyL6GnFbHKFiyI3w9Q
   12.53 +WdfGzbz2MoNV4IIXFc6sTN85nf3n56h/ZiYFYjFt2FISoG0XL8s8YcQayCBeNT06
   12.54 +WVTLzsrRMPFlZLjSQDrNdArdQN6AMERW7j5sWJens5xszq4egVpFAWpCs2tAgtKt
   12.55 +W9u9/coJ2k0EEVLkEQuafy52Ht5Tq3VHoYsqOAAcDLD7XSeX5PB1dw/9atHAePiG
   12.56 +RZC5bXMRe8HuDbzMF5jS6QFi2DL5sD8cGMCnHBs00hCT+JAOG4fuGJBZdx5R1JWr
   12.57 +7TKRTxoWSiezB8VfKpRC9haDc7q2xkaJ7bsTlljIJWJEbA71ZusVBeOTgsYBfXjh
   12.58 +8IdQBCIQXim7VliOfYn8hHd+5XdUY/TAmk1Niw6Zpxw8LvnVdHjji3CkPRLG91uM
   12.59 +cL0zl7LddKGWZ75QgrBGCMMT0ZXsOMqKw2e9QprX/JFj+W6drHIQ75F/Xl8i8168
   12.60 ++04nXdypQrHpi21D6DaKE0p/3RpYeDTlou8ttwDGZmsPbHOSdwgIkonESMTgByOV
   12.61 +0l0fu3tgVTqKakpwGD06iQXLDPp375NrSnlpB/sL3YL9rU6xI2Q9/qdrMdBuw1gR
   12.62 +0yHTVP/Q7utprycy+FGL6m0nAg63cKlbJcf6WCNLiHTaDf6a9GlC6t7kGrS6TeNQ
   12.63 +5KiKK7oHgua7e6psHhdqx5o8qzjWQ92KK3mdqUxsla9e0Kgcxypiw/cGFnRf7GzZ
   12.64 +68RL1pJp0p9cfqxyZ1zz81EGcXEqtezVDPdFCqLedfYlq4DqR+PQURyaCK8FvB1g
   12.65 +84sddc784GzxfnsYm8UvrKfaBkiSD+nw/cIzFJH7bassw7tRiwt8TyqE8HRfl0wh
   12.66 +NP0hpkid4BIIJGa9GtCHwGh1JO/iARxRGuUn4+mbYDdjWOTR/R9os5XuzPIO3im0
   12.67 +wM5t1l/aHV1vgmZby2PZjc+C4+PL7Ei6odVAakbm+6Wqr9ccDbl1kS1vPKVo/j7i
   12.68 +avP1gw3OjyCRo6Jp09dsOZxtpyi0w3+IHmvg2qrjqZJvoofBYKapWTo7q6Y8VX66
   12.69 +97ZF1ainjVViIS5Di5cAkv6opOxQ0Y3gkuvVZvkO20L60/xU2iq0lfPUYKebZTfM
   12.70 +WlnHFfczz3qEV4t5gkwj1D4DvWHNUtbW7Ijxi602HxLMR/qIZSz03tNMOuvht021
   12.71 +RsY+9HwLrnRz/loA2dcMZE1SeqmJKqpnxSu5sna0E9Rr+kscyTCRERZOAiRLO2Yb
   12.72 +8rJZltyq9yjjEzkXKqYnzl9C5i+wH06HK5UK9egZJpjfb1DxSMsTuJ8l4uvd3rVj
   12.73 +63QYjqMxQbPwCew6vNOpsVJ8r0VlRjCjKVBGe/Dt0MrFili+HDIsmoMyWR5tcH9y
   12.74 +OTMDD0uBhXVA5rTIAzHYpx1rghp/9i4hoJa7ZzgkJMAEexpK7TwkEjijMdSsvgFV
   12.75 +6KTzmuhXr9NKsXNu35YAmQ==
   12.76 +=/Ljx
   12.77 +-----END PGP MESSAGE-----
    13.1 --- a/test/pEpEngineTest.cc	Mon Jun 08 22:08:24 2015 +0200
    13.2 +++ b/test/pEpEngineTest.cc	Thu Jun 11 00:51:49 2015 +0200
    13.3 @@ -62,6 +62,39 @@
    13.4  	cout << "logging test\n";
    13.5  	log_event(session, "log test", "pEp Enginge Test", "This is a logging test sample.", "please ignore this line");
    13.6  
    13.7 +    // Our test user :
    13.8 +    // pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
    13.9 +    //         6FF00E97
   13.10 +    // A9411D176FF00E97
   13.11 +    // 
   13.12 +    // Other peers :
   13.13 +    // pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
   13.14 +    //         C9C2EE39
   13.15 +    // 59BFF488C9C2EE39
   13.16 +    // 
   13.17 +    // pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
   13.18 +    //         70DCF575
   13.19 +    // 135CD6D170DCF575
   13.20 +
   13.21 +    const char *kflist[] = {
   13.22 +        "6FF00E97_sec.asc",
   13.23 +        "C9C2EE39_pub.asc",
   13.24 +        "70DCF575_pub.asc",
   13.25 +        NULL
   13.26 +    };
   13.27 +    const char** kf = kflist;
   13.28 +    while(*kf){
   13.29 +        char * k_user_buffer = NULL;
   13.30 +        size_t k_user_length = 0;
   13.31 +        ReadFileIntoMem(*kf, k_user_buffer, k_user_length);
   13.32 +        cout << "import_key(" << *kf << ")\n";
   13.33 +        PEP_STATUS import_status = import_key(session, k_user_buffer, k_user_length);
   13.34 +        assert(import_status == PEP_STATUS_OK);
   13.35 +        cout << "successfully imported key\n";
   13.36 +        delete[] k_user_buffer;
   13.37 +        kf++;
   13.38 +    }
   13.39 +
   13.40      char * cipher_buffer = NULL;
   13.41      size_t cipher_length = 0;
   13.42      ReadFileIntoMem("msg.asc", cipher_buffer, cipher_length);
   13.43 @@ -116,10 +149,9 @@
   13.44      assert(verify_result == PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH);
   13.45      free_stringlist(keylist);
   13.46  
   13.47 -    keylist = new_stringlist("DD55BF29DF9B1541");
   13.48 -    //keylist = new_stringlist("49422235FC99585B891C66530C7B109BFA7261F7");
   13.49 -    // stringlist_add(keylist, "C6FAA231A2B43252B9526D119550C6B6B8B0FCD6");
   13.50 -    // stringlist_add(keylist, "5DC8CAC595EDAD6598DD4732DD55BF29DF9B1541");
   13.51 +    keylist = new_stringlist("A9411D176FF00E97");
   13.52 +    stringlist_add(keylist, "59BFF488C9C2EE39");
   13.53 +    stringlist_add(keylist, "135CD6D170DCF575");
   13.54  
   13.55  	buf_text = NULL;
   13.56  	buf_size = 0;
    14.1 --- a/test/signature.asc	Mon Jun 08 22:08:24 2015 +0200
    14.2 +++ b/test/signature.asc	Thu Jun 11 00:51:49 2015 +0200
    14.3 @@ -1,7 +1,11 @@
    14.4  -----BEGIN PGP SIGNATURE-----
    14.5 -Version: GnuPG v1.4.10 (GNU/Linux)
    14.6 +Version: GnuPG v1
    14.7  
    14.8 -iEYEARECAAYFAlNs9EQACgkQb7KfG+Kr+JAXrwCdEkuVvInUBktNmYBdPm8iJlUD
    14.9 -cA8An0N+j49d4GSUYLyf6CfA8FItdCPl
   14.10 -=A3cw
   14.11 +iQEcBAABAgAGBQJVeFSyAAoJEFm/9IjJwu45iQ8IAKRtGx+AcQZV7ZwGIIGRRRFS
   14.12 +Ac6D50AKrbORg4vaAen8qa3ULU74rJvsMmMNSCSReLlYv31qgTkk5LEXDNvKPwG4
   14.13 +sGhjGxQCQogn0iocLgyUb6QMLQGwcmnT3lvyC9iUB+nr5GyKWwKfaxgvTIZquPNB
   14.14 +31ymL1Z8rP8X4rVJK3cJzgAPUOQ52yMIJ2UQqQ3F6PccgejNq0kS8Q4B5kO5UIcC
   14.15 +9tUVW8PHEgS8ldT9edIYxvNgJnmimqhb+znlXJoSv2WsniuNVMUJlKOgbeTQ1ej4
   14.16 +Oy1tHog4b9ZvOtyGytuyerCKbSaDJCi2SizGI9gYFu7HqbVWAkehgfnxE51MiNk=
   14.17 +=9xNW
   14.18  -----END PGP SIGNATURE-----