tests ENGINE-559
authorKrista 'DarthMama' Bennett <krista@pep.foundation>
Mon, 17 Jun 2019 15:31:28 +0200
branchENGINE-559
changeset 38551d92379b4f78
parent 3830 2fbdb002d301
child 3880 1642cd731c9f
tests
test/include/test_util.h
test/src/engine_tests/Message2_1Tests.cc
test/src/util/test_util.cc
test/test_keys/priv/pep-test-alice-0x6FF00E97_priv.asc
test/test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc
     1.1 --- a/test/include/test_util.h	Tue Jun 04 15:09:49 2019 +0200
     1.2 +++ b/test/include/test_util.h	Mon Jun 17 15:31:28 2019 +0200
     1.3 @@ -14,6 +14,34 @@
     1.4  
     1.5  bool file_exists(std::string filename);
     1.6  
     1.7 +typedef enum _pEp_test_ident_preset {
     1.8 +    ALICE,
     1.9 +    APPLE,
    1.10 +    BOB,
    1.11 +    CAROL,
    1.12 +    DAVE,
    1.13 +    ERIN,
    1.14 +    FRANK,
    1.15 +    GABRIELLE,
    1.16 +    JOHN,
    1.17 +    ALEX,
    1.18 +    ALEX_0,
    1.19 +    ALEX_1,
    1.20 +    ALEX_2,
    1.21 +    ALEX_3,
    1.22 +    ALEX_4,
    1.23 +    ALEX_5,
    1.24 +    ALEX_6A,
    1.25 +    ALEX_6B,
    1.26 +    ALEX_6C,
    1.27 +    ALEX_6D,
    1.28 +    BELLA,
    1.29 +    FENRIS,
    1.30 +    SERCULLEN,
    1.31 +    INQUISITOR,
    1.32 +    BERND
    1.33 +} pEp_test_ident_preset;
    1.34 +
    1.35  PEP_STATUS read_file_and_import_key(PEP_SESSION session, const char* fname);
    1.36  PEP_STATUS set_up_ident_from_scratch(PEP_SESSION session, 
    1.37                                       const char* key_fname,
     2.1 --- a/test/src/engine_tests/Message2_1Tests.cc	Tue Jun 04 15:09:49 2019 +0200
     2.2 +++ b/test/src/engine_tests/Message2_1Tests.cc	Mon Jun 17 15:31:28 2019 +0200
     2.3 @@ -21,7 +21,157 @@
     2.4                                                                        static_cast<Func>(&Message2_1Tests::check_message2_1)));
     2.5  }
     2.6  
     2.7 -void Message2_1Tests::check_message2_1() {
     2.8 +static bool verify_message_version_produced(message* enc_msg, unsigned int* maj_inout, unsigned it* min_inout) {
     2.9 +    if (!maj_inout || !min_inout)
    2.10 +        return false;
    2.11 +    int major = *maj_inout;
    2.12 +    int minor = *min_inout;
    2.13 +    
    2.14 +    char* ptext = NULL;
    2.15 +    size_t psize = 0;
    2.16 +    stringlist_t* keylist = NULL;
    2.17 +    
    2.18 +    PEP_STATUS status = cryptotech[crypto].decrypt_and_verify(session, enc_msg->attachments->next->value,
    2.19 +                                                              enc_msg->attachments->next->size, NULL, 0,
    2.20 +                                                              &ptext, &psize, &_keylist,
    2.21 +                                                              NULL);
    2.22 +
    2.23 +    // fixme, check status
    2.24 +    if (strstr(ptext, "pEp-Wrapped-Message-Info: OUTER") != NULL && strstr(ptext, "pEp-Wrapped-Message-Info: OUTER") != NULL) {
    2.25 +        *maj_inout = 2;
    2.26 +        *min_inout = 1;
    2.27 +    }
    2.28 +    else if (strstr(ptext, "X-pEp-Wrapped-Message-Info: INNER") != NULL && strstr(ptext, "forwarded=no") != NULL) {
    2.29 +        *maj_inout = 2;
    2.30 +        *min_inout = 1;
    2.31 +    }
    2.32 +    else {
    2.33 +        *maj_inout = 1;
    2.34 +        *min_inout = 0;
    2.35 +    }    
    2.36 +    
    2.37 +    switch (major) {
    2.38 +        case 1:
    2.39 +            if (*maj_inout == 1)
    2.40 +                return true;
    2.41 +            return false;    
    2.42 +        case 2:
    2.43 +            if (*maj_inout != 2)
    2.44 +                return false;
    2.45 +            if (*min_inout == minor)
    2.46 +                return true;
    2.47 +            return false;    
    2.48 +        default:
    2.49 +            *maj_inout = 0;
    2.50 +            *min_inout = 0;
    2.51 +            return false;
    2.52 +    }
    2.53 +}
    2.54 +
    2.55 +void Message2_1Tests::check_message2_1_recip_2_0() {
    2.56 +    TEST_ASSERT(slurp_and_import_key(session, "test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc"));
    2.57 +    TEST_ASSERT(slurp_and_import_key(session, "test_keys/priv/pep-test-alice-0x6FF00E97_priv.asc"));    
    2.58 +
    2.59 +    // default should be 2.0 after setting pep status
    2.60 +    
    2.61 +    // generate message
    2.62 +    
    2.63 +    // ensure sent message is in 2.0 format
    2.64      TEST_ASSERT(true);
    2.65  }
    2.66  
    2.67 +void Message2_1Tests::check_message2_1_recip_1_0() {
    2.68 +    // set recip to 1.0
    2.69 +    
    2.70 +    // generate message
    2.71 +    
    2.72 +    // ensure sent message is in 1.0 format
    2.73 +    
    2.74 +    TEST_ASSERT(true);
    2.75 +}
    2.76 +
    2.77 +void Message2_1Tests::check_message2_1_recip_1_0_OpenPGP() {
    2.78 +    // set recip to 1.0
    2.79 +    
    2.80 +    // generate message
    2.81 +    
    2.82 +    // ensure sent message is in 1.0 format
    2.83 +    
    2.84 +    TEST_ASSERT(true);
    2.85 +}
    2.86 +
    2.87 +void Message2_1Tests::check_message2_1_recip_2_1() {
    2.88 +    // set recip to 2.1
    2.89 +    
    2.90 +    // generate message
    2.91 +    
    2.92 +    // ensure sent message is in 2.1 format
    2.93 +    
    2.94 +    
    2.95 +    TEST_ASSERT(true);
    2.96 +}
    2.97 +
    2.98 +void Message2_1Tests::check_message2_1_recip_1_0_from_msg() {
    2.99 +    // receive 1.0 message
   2.100 +
   2.101 +    // generate message
   2.102 +    
   2.103 +    // ensure sent message is in 1.0 format
   2.104 +
   2.105 +    TEST_ASSERT(true);
   2.106 +}
   2.107 +
   2.108 +void Message2_1Tests::check_message2_1_recip_1_0_from_msg_OpenPGP() {
   2.109 +    // receive 1.0 message from OpenPGP
   2.110 +
   2.111 +    // generate message
   2.112 +    
   2.113 +    // ensure sent message is in 1.0 format
   2.114 +
   2.115 +    TEST_ASSERT(true);
   2.116 +}
   2.117 +
   2.118 +void Message2_1Tests::check_message2_1_recip_2_0_from_msg() {
   2.119 +    // receive 2.0 message
   2.120 +    TEST_ASSERT(true);
   2.121 +}
   2.122 +
   2.123 +void Message2_1Tests::check_message2_1_recip_2_1_from_msg() {
   2.124 +    // receive 2.1 message
   2.125 +
   2.126 +    // generate message
   2.127 +    
   2.128 +    // ensure sent message is in 2.1 format
   2.129 +
   2.130 +    TEST_ASSERT(true);
   2.131 +}
   2.132 +
   2.133 +void Message2_1Tests::check_message2_1_recip_mixed_2_0() {
   2.134 +    // Set mixed recipient values
   2.135 +
   2.136 +    // generate message
   2.137 +    
   2.138 +    // ensure sent message is in 2.0 format
   2.139 +
   2.140 +    TEST_ASSERT(true);
   2.141 +}
   2.142 +
   2.143 +void Message2_1Tests::check_message2_1_recip_mixed_1_0() {
   2.144 +    // Set mixed recipient values
   2.145 +
   2.146 +    // generate message
   2.147 +    
   2.148 +    // ensure sent message is in 1.0 format
   2.149 +
   2.150 +    TEST_ASSERT(true);
   2.151 +}
   2.152 +
   2.153 +void Message2_1Tests::check_message2_1_recip_mixed_1_0_OpenPGP() {
   2.154 +    // Set mixed recipient values
   2.155 +
   2.156 +    // generate message
   2.157 +    
   2.158 +    // ensure sent message is in 1.0 format
   2.159 +
   2.160 +    TEST_ASSERT(true);
   2.161 +}
     3.1 --- a/test/src/util/test_util.cc	Tue Jun 04 15:09:49 2019 +0200
     3.2 +++ b/test/src/util/test_util.cc	Mon Jun 17 15:31:28 2019 +0200
     3.3 @@ -692,4 +692,201 @@
     3.4      return status;
     3.5  }
     3.6  
     3.7 +PEP_STATUS set_up_preset(pEp_test_ident_preset preset_name,
     3.8 +                         bool set_identity, 
     3.9 +                         bool set_pep,
    3.10 +                         bool trust,
    3.11 +                         bool set_own, 
    3.12 +                         bool private, 
    3.13 +                         pEp_identity** ident) {
    3.14 +    if (set_own && !set_identity)
    3.15 +        return PEP_ILLEGAL_VALUE;
    3.16 +        
    3.17 +    const char* name = NULL;
    3.18 +    const char* user_id = NULL;
    3.19 +    const char* email = NULL;
    3.20 +    const char* key_prefix = NULL;
    3.21 +    string pubkey_dir = "test_keys/pub/";
    3.22 +    string privkey_dir = "test_keys/priv";
    3.23 +    if (ident)
    3.24 +        *ident = NULL;
    3.25 +
    3.26 +    pEp_identity* retval = NULL;
    3.27 +        
    3.28 +    switch (preset_name) {
    3.29 +        case ALICE:
    3.30 +            name = "Alice Spivak Hyatt";
    3.31 +            user_id = "ALICE";
    3.32 +            email = "pep.test.alice@pep-project.org";
    3.33 +            key_prefix = "pep-test-alice-0x6FF00E97";
    3.34 +            break;
    3.35 +        case APPLE:
    3.36 +            name = "Apple of my Computer";
    3.37 +            user_id = "APPLE";
    3.38 +            email = "pep.test.apple@pep-project.org";
    3.39 +            key_prefix = "pep-test-apple-0x1CCBC7D7";
    3.40 +            break;
    3.41 +        case BOB:
    3.42 +            name = "Bob Dog";
    3.43 +            user_id = "BOB";
    3.44 +            email = "pep.test.bob@pep-project.org";
    3.45 +            key_prefix = "pep-test-bob-0xC9C2EE39";
    3.46 +            break;
    3.47 +        case CAROL:
    3.48 +            name = "Carol Burnett";
    3.49 +            user_id = "CAROL";
    3.50 +            email = "pep-test-carol@pep-project.org";
    3.51 +            key_prefix = "pep-test-carol-0x42A85A42";
    3.52 +            break;
    3.53 +        case DAVE:
    3.54 +            name = "Dave Brown";
    3.55 +            user_id = "DAVE";
    3.56 +            email = "pep-test-dave@pep-project.org";
    3.57 +            key_prefix = "pep-test-dave-0xBB5BCCF6";
    3.58 +            break;
    3.59 +        case ERIN:
    3.60 +            name = "Erin Ireland";
    3.61 +            user_id = "ERIN";
    3.62 +            email = "pep-test-erin@pep-project.org";
    3.63 +            key_prefix = "pep-test-erin-0x9F8D7CBA";
    3.64 +            break;
    3.65 +        case FRANK:
    3.66 +            name = "Frank N. Furter";
    3.67 +            user_id = "FRANK";
    3.68 +            email = "pep-test-frank@pep-project.org";
    3.69 +            key_prefix = "pep-test-frank-0x9A7FC670";
    3.70 +            break;
    3.71 +        case GABRIELLE:
    3.72 +            name = "Gabrielle Gonzales";
    3.73 +            user_id = "GABI";
    3.74 +            email = "pep-test-gabrielle@pep-project.org";
    3.75 +            key_prefix = "pep-test-gabrielle-0xE203586C";
    3.76 +            break;
    3.77 +        case JOHN:
    3.78 +            name = "John Denver";
    3.79 +            user_id = "JOHN";
    3.80 +            email = "pep.test.john@pep-project.org";
    3.81 +            key_prefix = "pep-test-john-0x70DCF575";
    3.82 +            break;
    3.83 +        case ALEX:
    3.84 +            name = "Alex Braithwaite";
    3.85 +            user_id = "ALEX";
    3.86 +            email = "pep.test.alexander@peptest.ch";
    3.87 +            key_prefix = "pep.test.alexander-0x26B54E4E";
    3.88 +            break;
    3.89 +        case ALEX_0:
    3.90 +            name = "ALEX";
    3.91 +            user_id = "pep.test.alexander0-0x3B7302DB";
    3.92 +            email = "pep.test.alexander0@darthmama.org";
    3.93 +            key_prefix = "";
    3.94 +            break;
    3.95 +        case ALEX_1:
    3.96 +            name = "Alex Braithwaite";
    3.97 +            user_id = "ALEX";
    3.98 +            email = "pep.test.alexander1@darthmama.org";
    3.99 +            key_prefix = "pep.test.alexander1-0x541260F6";
   3.100 +            break;
   3.101 +        case ALEX_2:
   3.102 +            name = "Alex Braithwaite";
   3.103 +            user_id = "ALEX";
   3.104 +            email = "pep.test.alexander2@darthmama.org";
   3.105 +            key_prefix = "pep.test.alexander2-0xA6512F30";
   3.106 +            break;
   3.107 +        case ALEX_3:
   3.108 +            name = "Alex Braithwaite";
   3.109 +            user_id = "ALEX";
   3.110 +            email = "pep.test.alexander3@darthmama.org";
   3.111 +            key_prefix = "pep.test.alexander3-0x724B3975";
   3.112 +            break;
   3.113 +        case ALEX_4:
   3.114 +            name = "Alex Braithwaite";
   3.115 +            user_id = "ALEX";
   3.116 +            email = "pep.test.alexander4@darthmama.org";
   3.117 +            key_prefix = "pep.test.alexander4-0x844B9DCF";
   3.118 +            break;
   3.119 +        case ALEX_5:
   3.120 +            name = "Alex Braithwaite";
   3.121 +            user_id = "ALEX";
   3.122 +            email = "pep.test.alexander5@darthmama.org";
   3.123 +            key_prefix = "pep.test.alexander5-0x0773CD29";
   3.124 +            break;
   3.125 +        case ALEX_6A:
   3.126 +            name = "Alex Braithwaite";
   3.127 +            user_id = "ALEX";
   3.128 +            email = "pep.test.alexander6@darthmama.org";
   3.129 +            key_prefix = "pep.test.alexander6-0x0019697D";
   3.130 +            break;
   3.131 +        case ALEX_6B:
   3.132 +            name = "Alex Braithwaite";
   3.133 +            user_id = "ALEX";
   3.134 +            email = "pep.test.alexander6@darthmama.org";
   3.135 +            key_prefix = "pep.test.alexander6-0x503B14D8";
   3.136 +            break;
   3.137 +        case ALEX_6C:
   3.138 +            name = "Alex Braithwaite";
   3.139 +            user_id = "ALEX";
   3.140 +            email = "pep.test.alexander6@darthmama.org";
   3.141 +            key_prefix = "pep.test.alexander6-0xA216E95A";
   3.142 +            break;
   3.143 +        case ALEX_6D:
   3.144 +            name = "Alex Braithwaite";
   3.145 +            user_id = "ALEX";
   3.146 +            email = "pep.test.alexander6@darthmama.org";
   3.147 +            key_prefix = "pep.test.alexander6-0xBDA17020";
   3.148 +            break;
   3.149 +        case BELLA:
   3.150 +            name = "Bella Cat";
   3.151 +            user_id = "BELLA";
   3.152 +            email = "pep.test.bella@peptest.ch";
   3.153 +            key_prefix = "pep.test.bella-0xAF516AAE";
   3.154 +            break;
   3.155 +        case FENRIS:
   3.156 +            name = "Fenris Leto Hawke";
   3.157 +            user_id = "FENRIS";
   3.158 +            email = "pep.test.fenris@thisstilldoesntwork.lu";
   3.159 +            key_prefix = "pep.test.fenris-0x4F3D2900";
   3.160 +            break;
   3.161 +        case SERCULLEN:
   3.162 +            name = "Cullen Rutherford";
   3.163 +            user_id = "CULLEN";
   3.164 +            email = "sercullen-test@darthmama.org";
   3.165 +            key_prefix = "sercullen-0x3CEAADED4"; // NB expired
   3.166 +            break;
   3.167 +        case INQUISITOR:
   3.168 +            name = "Inquisitor Claire Trevelyan";
   3.169 +            user_id = "INQUISITOR";
   3.170 +            email = "inquisitor@darthmama.org";
   3.171 +            key_prefix = "inquisitor-0xA4728718_renewed";
   3.172 +            break;
   3.173 +        case BERND:
   3.174 +            name = "Bernd das Brot";
   3.175 +            user_id = "BERNDI";
   3.176 +            email = "bernd.das.brot@darthmama.org";
   3.177 +            key_prefix = "bernd.das.brot-0xCAFAA422";
   3.178 +            break;
   3.179 +        default:
   3.180 +            return PEP_CANNOT_SET_IDENTITY;
   3.181 +    }
   3.182 +    
   3.183 +    string pubkey_file = pubkey_dir + key_prefix + "_pub.asc";
   3.184 +    string privkey_file = privkey_dir + key_prefix + "_priv.asc";
   3.185 +    
   3.186 +    if (!slurp_and_import_key(session, pubkey_file.c_str())
   3.187 +        return PEP_KEY_NOT_FOUND;
   3.188 +
   3.189 +    if (private) {    
   3.190 +        if (!slurp_and_import_key(session, privkey_file.c_str())
   3.191 +            return PEP_KEY_NOT_FOUND;
   3.192 +    }
   3.193 +
   3.194 +    retval = new_identity(email, NULL, user_id, name);
   3.195 +    if (!retval)
   3.196 +        return PEP_OUT_OF_MEMORY;
   3.197 +    
   3.198 +    retval->me = set_own;
   3.199 +    
   3.200 +    
   3.201 +    
   3.202 +}
   3.203 +
   3.204  #endif
     4.1 --- a/test/test_keys/priv/pep-test-alice-0x6FF00E97_priv.asc	Tue Jun 04 15:09:49 2019 +0200
     4.2 +++ b/test/test_keys/priv/pep-test-alice-0x6FF00E97_priv.asc	Mon Jun 17 15:31:28 2019 +0200
     4.3 @@ -20,38 +20,117 @@
     4.4  buTG7fGRFkujntOETshiMU2IJ7SDi5MySeYtvF7oQgz6qBNq8fiCHWS3Y7iIBRIR
     4.5  XNf5lpkm43CJkXpX7ZDkG6VS3lErV6KSPIB+gy3l0+xYSJMZcfYUnTU2ZSRmdldn
     4.6  vZfO5hHlZ1eqSt+0RHBFcCBUZXN0IEFsaWNlICh0ZXN0IGtleSBkb24ndCB1c2Up
     4.7 -IDxwZXAudGVzdC5hbGljZUBwZXAtcHJvamVjdC5vcmc+iQE4BBMBCAAiAhsDBgsJ
     4.8 -CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCWV9iIwAKCRCpQR0Xb/AOl4oaCACZrLPy
     4.9 -c/lGHNJ8TT3KxIls/Ss62nWq4wB7dura+IUPVqLMNefJamQqG4BSGDR+WhC6Luf4
    4.10 -K5JgauVbHbIUm3y9LLqAJunePoOAQEQmGAIcuJzHM/IKXJoTdudjT7FJ+dxjOHLh
    4.11 -zYOIJw6I301sJUx25LxxTihj3ClUzL1uH1IrH3ctD1yL9lPIixQ3JocGUYZsZ9sw
    4.12 -CWlFzhYelAUmJuINJtKMeWkFvkVQ9xMU4ZGU4RGFdYcXVmSii47dNQEiW8XzcQ6D
    4.13 -TFCuaS0WWy2tJfRQSlaOCBs/DYtlrWWWBApinb35QVWNyAmTwCm8FlvjFA6kr/UE
    4.14 -9VMfP8bhbhspQLihnQOYBFV4PbEBCADQwKB97t2B2nweprfpbH8QgLCzJYaAMrpc
    4.15 -aUaJqm+J3C9eaepRXTXGtst1zaLbooG2b3QHfDzI2CEYMxO5ynmmSBOe06VKw/Pa
    4.16 -gBzK5ur/eOycl0ZPFSXdlDj30BQPvRdJvLS4OTMdoKoGpsZDY4hOYj67oHo3TFtr
    4.17 -LJCvZruPARkI/pXiOX9FqH4wquNNaYW1qwk/Wq3k/gOMwp0xjvc01MbadaiiVquJ
    4.18 -k6jjPrd2wP4FYxIADAllzMpwFAJSWvgCfmqVbukYOnaCp3QRQXQkc78TdqGXbD5u
    4.19 -wJzkxxiEsMmiGT+7RDLIKwXheKmmGXSwgi8m+EndUiqMTvOdjyUBABEBAAEAB/sG
    4.20 -nGJmGT1m/k/HNY2A4ncugybQEOiJe4xy6VYVqBc8GPl1OS/gR64wlst1daT6T+iL
    4.21 -9KEKl3os0Z8QWetpCzhERkd8dInT5vCnFdQjmaxtmVX5RQynK+gntDOZfHuq08Nj
    4.22 -/0pZWbK3KzEAliw/SCyx78hPuelY7OL/Ge7okR2FjdXmtcMLw7NN+0c+hoSAuDiV
    4.23 -jbPlegga6iaGljIJCapf1YkmwuUZc2pCEfoxllRdQ8UKSLwht4LPb5jBOAiynw4W
    4.24 -lMY/5hZwRVG2NfOXbwC1kMUQcItBJviKQXaaruqXX7jnglWbCrgg/tQJ6EUkLy76
    4.25 -InM6/0NX6StNEY4vau95BADeTwBLkJqkcAxX21GoT9UjhRh9yhKgehER1cplrhE3
    4.26 -B3HuEzvCCr+mRCPyK7J0pE3LQkqccDW19noOtsjl6ODStXjk4Pp/MFftJrIx9s9u
    4.27 -JFv5RTTVBxjS8hRRHF49rMYeOKpcD02Id+u3UL1ISuX40Ljvz6oacO9XA73gkA7L
    4.28 -aQQA8GOupiWYvZwYPTJ8glUfafEtniNspTOtEDayvMAOHiWIrLzhQ0e6AS1LDB8E
    4.29 -YWu+GUI9661PRMn1SlhX9vZhGzSllGxk9CyBbeKhyuiQ34s8M0pwHLmT89bBqZhk
    4.30 -/0wsRqkrKHkcJYkcLLlYw5zAGrm3kvyQgjf6Tiq2d+rU0dkD/AxnmEWqC08ovLZo
    4.31 -vEZR+JKWlAp8l4YS5f5suPD6PiKeLinCujpq7VbsyhcZQNo1oA7qgLvUFwz2lyRi
    4.32 -eCDBCndXYLzJ1LPkHXv0ZcxrSLUSpNpWekEM5sBug8i3z4vhh4EA30gdOYqLPquu
    4.33 -BQoyFrPysylnvHTVRkA/wBy5E7Y0OnyJAR8EGAEIAAkCGwwFAllfYjkACgkQqUEd
    4.34 -F2/wDpeXJAf/VAcHYShK6NnUpBNtymOuCP3TV5Y53SzhyvHwEXdQdS1ofWBzlx7W
    4.35 -OPodEwvDy9CLCuI+TyvB+dV6oTCilWA1RpYS1EKeKnAzXLjuHVunUvx6gHwEaS0i
    4.36 -oMBBFltWxcw5ojmBp0I8bhLBT5VwAxU8LGKlV95b2Tvd51NH2uUESuuZ1ojKJgtG
    4.37 -JtPYWbs575NO5MmbagJUjYD1EDQA6UyVR7Xg21aP6HLfKEaqO2ozvqbDlU2kB3xH
    4.38 -h4hbz6NPzFFhngYS/eqURyHjvN3EoqY4eKuOmxHHJUv4Exh7RcHlToqkZ0eB+WBI
    4.39 -7qwnfOIfMxfDAAK4cQYQLW4NZ2IHh45Clw==
    4.40 -=Rqz7
    4.41 +IDxwZXAudGVzdC5hbGljZUBwZXAtcHJvamVjdC5vcmc+iQE4BBMBAgAiBQJVeD2x
    4.42 +AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCpQR0Xb/AOl5JjCADEBoor
    4.43 +dVBCmphG6EY+u5yjj/xeQN4Kc1Rl06Ii6m184hnF/osxnTicr+A6Hpwf8whXULuS
    4.44 +wXvfuOsVOQdIc2e+1zrecTqyNUWuRs3T7uZ25dvROg1XZuajMPf3wh5lX2rPRhOt
    4.45 +3UNXJjQfc1MSYXpmT+PoqFXBzMqJUo2DYcw6MSZekoWkIzFXG2s2YNwILwPnLnMe
    4.46 +sFtzU6mn9qhfoFsQA6aku8AbG+SNehNZvGuuUiBmu+4UYNoc/RJa7vNWECv9qZQs
    4.47 +T820CuoOZS9MFV7nQlgkGoPerlGXil0vkOG1gsuQD8QkuaTQpn1vYvRcC0P27qLf
    4.48 +rqlPv2Ih2hoIV9tJiQE+BBMBCAAoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX
    4.49 +gAUCV2gAcAUJA9C0bwAKCRCpQR0Xb/AOlzmOCACWoOZiXmOOG63vYbQqw/vBZONG
    4.50 +kGJ/OtWQ6ii04RdICf3yLrsbVmhrtQYol9pC4RLToSqo4xv3uNmr42dx4E2wXv44
    4.51 +g2RtF2VAth8ajQLpyV1QECEg71eebjgMhr4xZHLXDq5EVuHYqpeQvvMW2TyAwMJa
    4.52 +Pe4kgEQUPx0MCZpWqKKQ8GtEZCKV7mBh/2Q+bEo/CAWm0JCYybl2TfjE0GO+xOq/
    4.53 +Zy60WUXfyh049J5bMWt1sSjT3u/LqbKxE21MBNjDCCzyHjnicISsyLbnGVIvDiVX
    4.54 +LA3cU5mgEYf9Ntd2yrJ8ybneSm/cjpoeIHMXVJ8PGGMUit+woQ/pwcWxLWXyiQE4
    4.55 +BBMBCAAiAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCWV9iIwAKCRCpQR0X
    4.56 +b/AOl4oaCACZrLPyc/lGHNJ8TT3KxIls/Ss62nWq4wB7dura+IUPVqLMNefJamQq
    4.57 +G4BSGDR+WhC6Luf4K5JgauVbHbIUm3y9LLqAJunePoOAQEQmGAIcuJzHM/IKXJoT
    4.58 +dudjT7FJ+dxjOHLhzYOIJw6I301sJUx25LxxTihj3ClUzL1uH1IrH3ctD1yL9lPI
    4.59 +ixQ3JocGUYZsZ9swCWlFzhYelAUmJuINJtKMeWkFvkVQ9xMU4ZGU4RGFdYcXVmSi
    4.60 +i47dNQEiW8XzcQ6DTFCuaS0WWy2tJfRQSlaOCBs/DYtlrWWWBApinb35QVWNyAmT
    4.61 +wCm8FlvjFA6kr/UE9VMfP8bhbhspQLihnQOYBFV4PbEBCADQwKB97t2B2nweprfp
    4.62 +bH8QgLCzJYaAMrpcaUaJqm+J3C9eaepRXTXGtst1zaLbooG2b3QHfDzI2CEYMxO5
    4.63 +ynmmSBOe06VKw/PagBzK5ur/eOycl0ZPFSXdlDj30BQPvRdJvLS4OTMdoKoGpsZD
    4.64 +Y4hOYj67oHo3TFtrLJCvZruPARkI/pXiOX9FqH4wquNNaYW1qwk/Wq3k/gOMwp0x
    4.65 +jvc01MbadaiiVquJk6jjPrd2wP4FYxIADAllzMpwFAJSWvgCfmqVbukYOnaCp3QR
    4.66 +QXQkc78TdqGXbD5uwJzkxxiEsMmiGT+7RDLIKwXheKmmGXSwgi8m+EndUiqMTvOd
    4.67 +jyUBABEBAAEAB/sGnGJmGT1m/k/HNY2A4ncugybQEOiJe4xy6VYVqBc8GPl1OS/g
    4.68 +R64wlst1daT6T+iL9KEKl3os0Z8QWetpCzhERkd8dInT5vCnFdQjmaxtmVX5RQyn
    4.69 +K+gntDOZfHuq08Nj/0pZWbK3KzEAliw/SCyx78hPuelY7OL/Ge7okR2FjdXmtcML
    4.70 +w7NN+0c+hoSAuDiVjbPlegga6iaGljIJCapf1YkmwuUZc2pCEfoxllRdQ8UKSLwh
    4.71 +t4LPb5jBOAiynw4WlMY/5hZwRVG2NfOXbwC1kMUQcItBJviKQXaaruqXX7jnglWb
    4.72 +Crgg/tQJ6EUkLy76InM6/0NX6StNEY4vau95BADeTwBLkJqkcAxX21GoT9UjhRh9
    4.73 +yhKgehER1cplrhE3B3HuEzvCCr+mRCPyK7J0pE3LQkqccDW19noOtsjl6ODStXjk
    4.74 +4Pp/MFftJrIx9s9uJFv5RTTVBxjS8hRRHF49rMYeOKpcD02Id+u3UL1ISuX40Ljv
    4.75 +z6oacO9XA73gkA7LaQQA8GOupiWYvZwYPTJ8glUfafEtniNspTOtEDayvMAOHiWI
    4.76 +rLzhQ0e6AS1LDB8EYWu+GUI9661PRMn1SlhX9vZhGzSllGxk9CyBbeKhyuiQ34s8
    4.77 +M0pwHLmT89bBqZhk/0wsRqkrKHkcJYkcLLlYw5zAGrm3kvyQgjf6Tiq2d+rU0dkD
    4.78 +/AxnmEWqC08ovLZovEZR+JKWlAp8l4YS5f5suPD6PiKeLinCujpq7VbsyhcZQNo1
    4.79 +oA7qgLvUFwz2lyRieCDBCndXYLzJ1LPkHXv0ZcxrSLUSpNpWekEM5sBug8i3z4vh
    4.80 +h4EA30gdOYqLPquuBQoyFrPysylnvHTVRkA/wBy5E7Y0OnyJAR8EGAECAAkFAlV4
    4.81 +PbECGwwACgkQqUEdF2/wDpeQVQgArnfQ7uvG0po/CPepbrdytI2n63U5dm/MFMsv
    4.82 +XpZYVYLO/mROc+akZCPwS0yxtSMKK+tYM9leQx58r89c+K1GeZoko7xziwmZbt5z
    4.83 +EITiJp5L6gg7k6CczskPMx07gY8ooscBC3cFJhz1A0o73BKPR7J0iupaNmI3sTd1
    4.84 +/RNQm6573kGGwc4m2bcQttvN5ox8yimn2QnK3D+6A+Mmzi3Rd11tF+tAWJIsfaEg
    4.85 +DJZn9mOdUkV2ckoSk1K5PptpXSsKLOL+e2WuxSMIr8AVeRqkbYYK6UzX6qIgQIrM
    4.86 +OuaXqtRaNxNccnzIS1YtdtYERSnTaBotNp/FF2wfI7BNFP6r0IkBJQQYAQgADwIb
    4.87 +DAUCV2gAcAUJA9C0bwAKCRCpQR0Xb/AOl8EMB/9uvIP5Ab3QTlciaSYRsFO3iHuz
    4.88 +DNHn9TQeDUhSWb2UQCBGjZ4PpaMJ3h4n2hDK2nJExli+BvYZvV3UAMQFnJJ9I5vr
    4.89 +LlPE/5DpkHjIMc/ENebYvGafzdzwI82hNqGUAsdAOT7sfwOMakpOKLpYnMotV9r/
    4.90 +xyk2oFG9MgCGRT4mDoz4QyQvkbCKZGvCYi52BB+CecR0/G1payiLwa8T+4psurPu
    4.91 +KWjpI3TbzIW+82LcFLzK7vRtDsUjaOGT3QqXFZVMw6hEF0F6m1U+WKWvvKwYSrGW
    4.92 +Opub3j03yNN6+u4BS8BsngFnVvtPrQYBF7CIfEXEFRv+goM9BPM7uDmJnebEiQEf
    4.93 +BBgBCAAJAhsMBQJZX2I5AAoJEKlBHRdv8A6XlyQH/1QHB2EoSujZ1KQTbcpjrgj9
    4.94 +01eWOd0s4crx8BF3UHUtaH1gc5ce1jj6HRMLw8vQiwriPk8rwfnVeqEwopVgNUaW
    4.95 +EtRCnipwM1y47h1bp1L8eoB8BGktIqDAQRZbVsXMOaI5gadCPG4SwU+VcAMVPCxi
    4.96 +pVfeW9k73edTR9rlBErrmdaIyiYLRibT2Fm7Oe+TTuTJm2oCVI2A9RA0AOlMlUe1
    4.97 +4NtWj+hy3yhGqjtqM76mw5VNpAd8R4eIW8+jT8xRYZ4GEv3qlEch47zdxKKmOHir
    4.98 +jpsRxyVL+BMYe0XB5U6KpGdHgflgSO6sJ3ziHzMXwwACuHEGEC1uDWdiB4eOQpeV
    4.99 +A5gEWqIlyAEIAM2yObAmtRkcXI0+9kKS6d4ZvUVizZNWLuJ5ts4uXa6I2t4wR82M
   4.100 +eX6CZzLVirdsqsRk5YweKZ2ls1ECfB91ndHrVpzYCqE1VGYgyxEC4evv425POL9I
   4.101 +y+Oj1IeS81vvJbw3Ov48tr5iv9wDZvWnn5eSTD4LCDvWXqTxzWhQoqW0Lb3mikt6
   4.102 +hxrcZT77myUywbpaaoDhPsRyyucVD9W//lu3bRKFQ/a6QSe/f1Y7Ia+paqn16HKF
   4.103 +YbB3UhAsW2L0WihFKu9BE0ZOQW/0x9ht5ok68Rnzd3171uZWlMKM1iEfQuqZHJup
   4.104 +TR7L6A4hDJrJalO/UV+YqyMhB3UFBtFi0X0AEQEAAQAH/AmSCYuX3XS35FmBDLGv
   4.105 +xrhZ/7uu+2wnxiIs8hO5RgwVG4PbgLfAWbXIaPdNRrk+kdp17FU+4QZP+54hDLfk
   4.106 +/80Q01SUW7hA9DaVP4WA2hShcnZDMtt5jlz+1ihhrreAEsQlWLYUCpeknhMlSGDV
   4.107 +JgCGIsx/NGieUoR/qKQ6Hjsx58X9pqJWtlwh1nBwsKJX/sviQkwAyOSAoW8nMnrL
   4.108 +TcssOguTA95mjg6D3Tx+ZJEttk5++koShkc6yHsVpZ0El00CcBKWcUeCbbvNGXl6
   4.109 +T5aNmOfnScZ0cDl1zyZ7bIaB5HvRtRZ4bo9VWtUQGaw8CZci+3Uh/8ZPDyJYS2qk
   4.110 +rJkEANToMweYMzjALNRVkEVG4Hdb4WpYSffW+O6+euEDoeKqbjGSf8W8BZI/M/tT
   4.111 +KiUJJYtyZSIA4N39eC/30rZEYeaiXlaq3zA0gvHUzqPcHC0+oDMl2PAG7bUGIE6T
   4.112 +vfcbIVCd/rNnsQonAoAQo5gxlNnCuSiIU62qN2GQll2oyaqlBAD3VGVRIC5gL89m
   4.113 +aD5ZqiHrrYhexmCsTN42ba+va3AP21iJMjtlozccbAEYOcCS5y3XGRDjPH5j8V69
   4.114 +hy5e2y5UPckEqkK1dwbLMIpBPMszhTtEfdDNNZkYKqKmn212MLYEyyY+9WvtmvXo
   4.115 +039ILjWQ3eD7A0P9jSjptw9/Kk/L+QP+LGXleuWytZP0rBKbXFKFx9rlbZbXAnnV
   4.116 +hMHGb/pJElL08KcAKOjiIwCuxerwjtQ96zdIEAWhLaJagl0ZCLKltHMOIdf1xXta
   4.117 +GPxlA8kYRikn/Ct0P8YrybROde6VeCELXOajYmSKopgCQQfmiLRKvLWkeWOIR1HP
   4.118 +MXSAeFyh5Zo5jbQrQWxpY2UgVGVzdCA8cGVwLnRlc3QuYWxpY2VAcGVwLXByb2pl
   4.119 +Y3Qub3JnPokBVAQTAQgAPgIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgBYhBBBe
   4.120 +V+b9MI8SGmYuyRY2xR2t476gBQJc9m59BQkVIEu1AAoJEBY2xR2t476ggXsH/3fv
   4.121 +99xaaxSSs3+QBawo29ZzQO8QTlYw4MCjdP1uZ0hR/6qcI7EYyeXa3tAAY5/BArV4
   4.122 +Wc6rPGOEVkz8uRfnekqmrTsTKumE5Ps/m4uUEe1z4y3ws9RJZ5xRncFa8rFQWS42
   4.123 +IYrM222c7Ix4RUbdl9XDwRDmD/IACLIxohiL/zJRvhQllRa81rRfk1DPhXpkfQYZ
   4.124 +Wo/F8RV3p5l8/QsA/51bs6aqjYkYhp0s+mjwy6S93FHnaBh5kjoElnhcudArSZ0Q
   4.125 +h5skpSUtIammByUoR7gRIBpawM53ehPrTVlNGohbVPgZvufBddJcR6SWIyArA9f3
   4.126 +Qp+aDNmYlgSk0h26M9mdA5gEWqIlyQEIANzOLHVY0FK+TqykL0B+JtnbQTxfW1Sg
   4.127 +V/wUhX5i8xowfuW0KlcoKZarJeDobBEjVrWflJjlXwxNAIYErQavBZw5ZPuZNe68
   4.128 +CX79cusTgkn6VHI5qD/FyhRnDBy2sNXAJeROh7DWUyDQSvnU0+CzsspTtlSLkcqT
   4.129 +43QFqsJj6lfHI8LQCpM3D0FyVfmz9g0oyf1bmnBtw1a6M3oIeIFEqtO9c84KedXS
   4.130 +b42t8RB/XKgWGkX1GBgPV6hzz6dyaC9zLm/rirxn2J4JhXpy2e/z8va0VKQFjQ+L
   4.131 +wdyH5R6hKVGMemPUEOsZS+p9qSXGiK9Twjz9kRJx2XwkYbUzA4Lv3hMAEQEAAQAH
   4.132 +/AkWnWLZHH4DYkad3WoIpz25VhaPkDlL/kMcbyA0H3B5BYgb4dBDkW6nrb/zoRsV
   4.133 +esiwAFRIwKBHfRmHEL4hLxhujlcCx+MDL1rgQL4nR+oWmSo4cFHrqLUtRqTZ6i5q
   4.134 +IcUjbFddgv9rQ2LEHVJ24wmL54nUUtRlQOvyHcSxiyBAuQgIuC/95YfZduDCJYpv
   4.135 +M8qDluqokgogNazdpYjk03CrJsSCXaPJZfXEI9QnwS3Oh3K3Vi1frBSO26v40rRH
   4.136 +V0vSxdyp21RbKjJSimEj35/9t1pejKTQ6otpJpyopXMR6Y9/ibsgGczrSZQ8QcQM
   4.137 +zk3MYSel7irqnfBxn2M4LAkEAOwkIbFP11+JRm5tqh24/ye7afMOjAdPgaG2w8Mj
   4.138 +cE6Mlpp0QExnaURzuz8GJEk0gwKpL6niPKLweXJD6QjSkysRC2B+Wo7PhoSPqgwI
   4.139 +IMcQYmFghSq0hJAf8JrOJf80nQEX6b/ymZuwxsWQYZMDF7Syg6CtF8013dpMIZSy
   4.140 +3bJ5BADvX+ENmw5OIte0R0d0uH/IuFitYphC0Z/v8k9AiZfH5epOop1qrS9xsX+F
   4.141 +pTqijxOdHgBsMoQJNSkVIvSw07yDMF3ku3Hu6ssTwatFOoIxv8Ha9eFfnb0u9Bcr
   4.142 +ZOh7bJJoyr5OoUyXHy5G2YCrzzMNDnfzVdO7DWbbZL6BAGsR6wP/aMoDPqB8MUJv
   4.143 +mIO6ncvvBLLOqXY9NzBed0KkdgWnMHDhcwnkbdPpQveIbxUlmWK5GD2M2IZpIMUf
   4.144 +p82iBstkkLggp0RFdlPBS2W3Z3rcIIMP/Db+Rze2UTsY+QNQbCtfyCWgQkuu1xO/
   4.145 +8qU5pjpCSvrVkTTgkjbmCT3PahncoPU5CokBPAQYAQgAJgIbDBYhBBBeV+b9MI8S
   4.146 +GmYuyRY2xR2t476gBQJc9m59BQkVIEu0AAoJEBY2xR2t476g3/QH/1b+W7ptXZ5o
   4.147 +TN4nGOV0h7TaTLjAZ+2FYeSJDjjPRZBUs39Q42IAT93TBkbrwZH2dMlrWBIFUXYs
   4.148 +KyRp4Tf+eXChSxHkZcrd4Bfb3F0rOYYFPbOSVcs5xNHAm43/g81dPAMGDP/gB+V6
   4.149 +scm4GzAADP2rNzMpBFT9fqAg+iE5cIAoqDnlkdGceoZhdJeuEFXNQfc/Sp9nm5P4
   4.150 +4zK2TI1VwFiW15k8uD/gFPC86fHsNf4Cm/NQ2oA3dvV8OaGKuA995ZFQJfHGYMRw
   4.151 +h1ZtVpHjGjemlXrGcpwXyNfxhw/htWpG2UduPhGZmuWrv86EDVd5zFlauFSu0viW
   4.152 +fLjFBZBL5pQ=
   4.153 +=b05L
   4.154  -----END PGP PRIVATE KEY BLOCK-----
     5.1 --- a/test/test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc	Tue Jun 04 15:09:49 2019 +0200
     5.2 +++ b/test/test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc	Mon Jun 17 15:31:28 2019 +0200
     5.3 @@ -1,42 +1,31 @@
     5.4  -----BEGIN PGP PUBLIC KEY BLOCK-----
     5.5  
     5.6 -mQENBFV4PbEBCADTmjGDsoti/VPoZ3w2oCjLBNq1jWIGMkbiUgCGUQjVsNrSZ80U
     5.7 -7RmA3Pcu3hhiVQNBGA32vL6NPhSJPanVd77s6XVZg+Gq7llbGGkuIxSkJvVrWzYc
     5.8 -kjMsAInlJ8Ll0kHHbgATOlO5OtQ21bLCfWZPSq74HEVzQAPtCGYFvOgpCktKTjms
     5.9 -GXe9ysiYN8CEWMVNbDqXmvFhi4UifpITeQBVM7dtlBw5SoeLZpsHIlKF5i5WPkNw
    5.10 -7nuMag/+lRpOqvPumhOmqybWHuAR/Dq0pOOPh6BzZ4OzOBL96aWUe1dcnIZeBEm8
    5.11 -oRxYC3nN95YsjtrLK4BQZTYDTzeh8FIccsLdABEBAAG0RHBFcCBUZXN0IEFsaWNl
    5.12 -ICh0ZXN0IGtleSBkb24ndCB1c2UpIDxwZXAudGVzdC5hbGljZUBwZXAtcHJvamVj
    5.13 -dC5vcmc+iQE4BBMBAgAiBQJVeD2xAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX
    5.14 -gAAKCRCpQR0Xb/AOl5JjCADEBoordVBCmphG6EY+u5yjj/xeQN4Kc1Rl06Ii6m18
    5.15 -4hnF/osxnTicr+A6Hpwf8whXULuSwXvfuOsVOQdIc2e+1zrecTqyNUWuRs3T7uZ2
    5.16 -5dvROg1XZuajMPf3wh5lX2rPRhOt3UNXJjQfc1MSYXpmT+PoqFXBzMqJUo2DYcw6
    5.17 -MSZekoWkIzFXG2s2YNwILwPnLnMesFtzU6mn9qhfoFsQA6aku8AbG+SNehNZvGuu
    5.18 -UiBmu+4UYNoc/RJa7vNWECv9qZQsT820CuoOZS9MFV7nQlgkGoPerlGXil0vkOG1
    5.19 -gsuQD8QkuaTQpn1vYvRcC0P27qLfrqlPv2Ih2hoIV9tJiQE4BBMBCAAiAhsDBgsJ
    5.20 -CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCWV9iIwAKCRCpQR0Xb/AOl4oaCACZrLPy
    5.21 -c/lGHNJ8TT3KxIls/Ss62nWq4wB7dura+IUPVqLMNefJamQqG4BSGDR+WhC6Luf4
    5.22 -K5JgauVbHbIUm3y9LLqAJunePoOAQEQmGAIcuJzHM/IKXJoTdudjT7FJ+dxjOHLh
    5.23 -zYOIJw6I301sJUx25LxxTihj3ClUzL1uH1IrH3ctD1yL9lPIixQ3JocGUYZsZ9sw
    5.24 -CWlFzhYelAUmJuINJtKMeWkFvkVQ9xMU4ZGU4RGFdYcXVmSii47dNQEiW8XzcQ6D
    5.25 -TFCuaS0WWy2tJfRQSlaOCBs/DYtlrWWWBApinb35QVWNyAmTwCm8FlvjFA6kr/UE
    5.26 -9VMfP8bhbhspQLihuQENBFV4PbEBCADQwKB97t2B2nweprfpbH8QgLCzJYaAMrpc
    5.27 -aUaJqm+J3C9eaepRXTXGtst1zaLbooG2b3QHfDzI2CEYMxO5ynmmSBOe06VKw/Pa
    5.28 -gBzK5ur/eOycl0ZPFSXdlDj30BQPvRdJvLS4OTMdoKoGpsZDY4hOYj67oHo3TFtr
    5.29 -LJCvZruPARkI/pXiOX9FqH4wquNNaYW1qwk/Wq3k/gOMwp0xjvc01MbadaiiVquJ
    5.30 -k6jjPrd2wP4FYxIADAllzMpwFAJSWvgCfmqVbukYOnaCp3QRQXQkc78TdqGXbD5u
    5.31 -wJzkxxiEsMmiGT+7RDLIKwXheKmmGXSwgi8m+EndUiqMTvOdjyUBABEBAAGJAR8E
    5.32 -GAECAAkFAlV4PbECGwwACgkQqUEdF2/wDpeQVQgArnfQ7uvG0po/CPepbrdytI2n
    5.33 -63U5dm/MFMsvXpZYVYLO/mROc+akZCPwS0yxtSMKK+tYM9leQx58r89c+K1GeZok
    5.34 -o7xziwmZbt5zEITiJp5L6gg7k6CczskPMx07gY8ooscBC3cFJhz1A0o73BKPR7J0
    5.35 -iupaNmI3sTd1/RNQm6573kGGwc4m2bcQttvN5ox8yimn2QnK3D+6A+Mmzi3Rd11t
    5.36 -F+tAWJIsfaEgDJZn9mOdUkV2ckoSk1K5PptpXSsKLOL+e2WuxSMIr8AVeRqkbYYK
    5.37 -6UzX6qIgQIrMOuaXqtRaNxNccnzIS1YtdtYERSnTaBotNp/FF2wfI7BNFP6r0IkB
    5.38 -HwQYAQgACQIbDAUCWV9iOQAKCRCpQR0Xb/AOl5ckB/9UBwdhKEro2dSkE23KY64I
    5.39 -/dNXljndLOHK8fARd1B1LWh9YHOXHtY4+h0TC8PL0IsK4j5PK8H51XqhMKKVYDVG
    5.40 -lhLUQp4qcDNcuO4dW6dS/HqAfARpLSKgwEEWW1bFzDmiOYGnQjxuEsFPlXADFTws
    5.41 -YqVX3lvZO93nU0fa5QRK65nWiMomC0Ym09hZuznvk07kyZtqAlSNgPUQNADpTJVH
    5.42 -teDbVo/oct8oRqo7ajO+psOVTaQHfEeHiFvPo0/MUWGeBhL96pRHIeO83cSipjh4
    5.43 -q46bEcclS/gTGHtFweVOiqRnR4H5YEjurCd84h8zF8MAArhxBhAtbg1nYgeHjkKX
    5.44 -=8Dao
    5.45 +mQENBFqiJcgBCADNsjmwJrUZHFyNPvZCkuneGb1FYs2TVi7iebbOLl2uiNreMEfN
    5.46 +jHl+gmcy1Yq3bKrEZOWMHimdpbNRAnwfdZ3R61ac2AqhNVRmIMsRAuHr7+NuTzi/
    5.47 +SMvjo9SHkvNb7yW8Nzr+PLa+Yr/cA2b1p5+Xkkw+Cwg71l6k8c1oUKKltC295opL
    5.48 +eoca3GU++5slMsG6WmqA4T7EcsrnFQ/Vv/5bt20ShUP2ukEnv39WOyGvqWqp9ehy
    5.49 +hWGwd1IQLFti9FooRSrvQRNGTkFv9MfYbeaJOvEZ83d9e9bmVpTCjNYhH0LqmRyb
    5.50 +qU0ey+gOIQyayWpTv1FfmKsjIQd1BQbRYtF9ABEBAAG0K0FsaWNlIFRlc3QgPHBl
    5.51 +cC50ZXN0LmFsaWNlQHBlcC1wcm9qZWN0Lm9yZz6JAVQEEwEIAD4CGwMFCwkIBwIG
    5.52 +FQgJCgsCBBYCAwECHgECF4AWIQQQXlfm/TCPEhpmLskWNsUdreO+oAUCXPZufQUJ
    5.53 +FSBLtQAKCRAWNsUdreO+oIF7B/937/fcWmsUkrN/kAWsKNvWc0DvEE5WMODAo3T9
    5.54 +bmdIUf+qnCOxGMnl2t7QAGOfwQK1eFnOqzxjhFZM/LkX53pKpq07EyrphOT7P5uL
    5.55 +lBHtc+Mt8LPUSWecUZ3BWvKxUFkuNiGKzNttnOyMeEVG3ZfVw8EQ5g/yAAiyMaIY
    5.56 +i/8yUb4UJZUWvNa0X5NQz4V6ZH0GGVqPxfEVd6eZfP0LAP+dW7Omqo2JGIadLPpo
    5.57 +8MukvdxR52gYeZI6BJZ4XLnQK0mdEIebJKUlLSGppgclKEe4ESAaWsDOd3oT601Z
    5.58 +TRqIW1T4Gb7nwXXSXEekliMgKwPX90KfmgzZmJYEpNIdujPZuQENBFqiJckBCADc
    5.59 +zix1WNBSvk6spC9AfibZ20E8X1tUoFf8FIV+YvMaMH7ltCpXKCmWqyXg6GwRI1a1
    5.60 +n5SY5V8MTQCGBK0GrwWcOWT7mTXuvAl+/XLrE4JJ+lRyOag/xcoUZwwctrDVwCXk
    5.61 +Toew1lMg0Er51NPgs7LKU7ZUi5HKk+N0BarCY+pXxyPC0AqTNw9BclX5s/YNKMn9
    5.62 +W5pwbcNWujN6CHiBRKrTvXPOCnnV0m+NrfEQf1yoFhpF9RgYD1eoc8+ncmgvcy5v
    5.63 +64q8Z9ieCYV6ctnv8/L2tFSkBY0Pi8Hch+UeoSlRjHpj1BDrGUvqfaklxoivU8I8
    5.64 +/ZEScdl8JGG1MwOC794TABEBAAGJATwEGAEIACYCGwwWIQQQXlfm/TCPEhpmLskW
    5.65 +NsUdreO+oAUCXPZufQUJFSBLtAAKCRAWNsUdreO+oN/0B/9W/lu6bV2eaEzeJxjl
    5.66 +dIe02ky4wGfthWHkiQ44z0WQVLN/UONiAE/d0wZG68GR9nTJa1gSBVF2LCskaeE3
    5.67 +/nlwoUsR5GXK3eAX29xdKzmGBT2zklXLOcTRwJuN/4PNXTwDBgz/4AflerHJuBsw
    5.68 +AAz9qzczKQRU/X6gIPohOXCAKKg55ZHRnHqGYXSXrhBVzUH3P0qfZ5uT+OMytkyN
    5.69 +VcBYlteZPLg/4BTwvOnx7DX+ApvzUNqAN3b1fDmhirgPfeWRUCXxxmDEcIdWbVaR
    5.70 +4xo3ppV6xnKcF8jX8YcP4bVqRtlHbj4RmZrlq7/OhA1XecxZWrhUrtL4lny4xQWQ
    5.71 +S+aU
    5.72 +=cQMy
    5.73  -----END PGP PUBLIC KEY BLOCK-----