Merge default into JNI-26 JNI-26
authorHussein Kasem <huss@pep-project.org>
Wed, 18 Jan 2017 15:02:25 +0100
branchJNI-26
changeset 1548a525079dc92e
parent 1529 35a3ea999345
parent 1542 0717f7ac7b24
child 1550 19aa77ace10b
Merge default into JNI-26
     1.1 --- a/src/keymanagement.c	Thu Jan 12 18:51:14 2017 +0100
     1.2 +++ b/src/keymanagement.c	Wed Jan 18 15:02:25 2017 +0100
     1.3 @@ -263,7 +263,6 @@
     1.4      status = PEP_STATUS_OK;
     1.5  
     1.6      if (temp_id->comm_type != PEP_ct_unknown && !EMPTYSTR(temp_id->user_id)) {
     1.7 -        assert(!EMPTYSTR(temp_id->username)); // this should not happen
     1.8  
     1.9          if (EMPTYSTR(temp_id->username)) { // mitigate
    1.10              free(temp_id->username);
     2.1 --- a/src/message_api.c	Thu Jan 12 18:51:14 2017 +0100
     2.2 +++ b/src/message_api.c	Wed Jan 18 15:02:25 2017 +0100
     2.3 @@ -1214,8 +1214,15 @@
     2.4              goto enomem;
     2.5      }
     2.6  
     2.7 -    if (msg)
     2.8 +    if (msg) {
     2.9          decorate_message(msg, PEP_rating_undefined, NULL);
    2.10 +        if (src->id) {
    2.11 +            msg->id = strdup(src->id);
    2.12 +            assert(msg->id);
    2.13 +            if (msg->id == NULL)
    2.14 +                goto enomem;
    2.15 +        }
    2.16 +    }
    2.17  
    2.18      *dst = msg;
    2.19      return status;
    2.20 @@ -1314,6 +1321,15 @@
    2.21               goto enomem;
    2.22       }
    2.23  
    2.24 +     if (msg) {
    2.25 +         if (src->id) {
    2.26 +             msg->id = strdup(src->id);
    2.27 +             assert(msg->id);
    2.28 +             if (msg->id == NULL)
    2.29 +                 goto enomem;
    2.30 +         }
    2.31 +     }
    2.32 +
    2.33      *dst = msg;
    2.34      return status;
    2.35  
    2.36 @@ -1949,6 +1965,12 @@
    2.37                  goto pep_error;
    2.38              }
    2.39          }
    2.40 +        if (src->id) {
    2.41 +            msg->id = strdup(src->id);
    2.42 +            assert(msg->id);
    2.43 +            if (msg->id == NULL)
    2.44 +                goto enomem;
    2.45 +        }
    2.46      }
    2.47  
    2.48      *dst = msg;
     3.1 --- a/src/mime.c	Thu Jan 12 18:51:14 2017 +0100
     3.2 +++ b/src/mime.c	Wed Jan 18 15:02:25 2017 +0100
     3.3 @@ -1205,11 +1205,12 @@
     3.4                  }
     3.5                  free(_longmsg);
     3.6                  _longmsg = _text;
     3.7 -                // FIXME: KG - This is where we have the text we want to deal with.
     3.8 -                // Now we need to strip sigs and process them.
     3.9              }
    3.10          }
    3.11      }
    3.12 +    // FIXME: KG - we now have the text we want.
    3.13 +    // Now we need to strip sigs and process them if they are there..
    3.14 +    
    3.15  
    3.16      *longmsg = _longmsg;
    3.17      if (size)
    3.18 @@ -1438,4 +1439,3 @@
    3.19  
    3.20      return status;
    3.21  }
    3.22 -
     4.1 --- a/src/pgp_gpg.c	Thu Jan 12 18:51:14 2017 +0100
     4.2 +++ b/src/pgp_gpg.c	Wed Jan 18 15:02:25 2017 +0100
     4.3 @@ -479,7 +479,6 @@
     4.4  
     4.5                  if (dsigtext) {  // Is this safe to do?
     4.6                      gpgme_data_t sigdata;
     4.7 -                    // FIXME: replace with verify_text?
     4.8                      gpg.gpgme_data_new_from_mem(&sigdata, dsigtext,
     4.9                                                  dsigsize, 0);
    4.10                      gpg.gpgme_op_verify(session->ctx, sigdata, plain, NULL);
    4.11 @@ -491,16 +490,14 @@
    4.12                  assert(gpgme_verify_result);
    4.13                  gpgme_signature = gpgme_verify_result->signatures;
    4.14  
    4.15 -                // if (!gpgme_signature && dsigtext) {
    4.16 -                //     gpgme_data_t sigdata;
    4.17 -                //     gpg.gpgme_data_new_from_mem(&sigdata, dsigtext,
    4.18 -                //                                 dsigsize, 0);
    4.19 -                //     gpgme_op_verify(session->ctx, sigdata, plain, NULL);
    4.20 -                //     gpgme_verify_result_t result2 =
    4.21 -                //         gpg.gpgme_op_verify_result(session->ctx);
    4.22 -                //     assert(result2);
    4.23 -                //     gpgme_signature = result2->signatures;
    4.24 -                // }
    4.25 +                if (!gpgme_signature) {
    4.26 +                    // try cleartext sig verification
    4.27 +                    gpg.gpgme_op_verify(session->ctx, plain, NULL, plain);
    4.28 +                    gpgme_verify_result =
    4.29 +                        gpg.gpgme_op_verify_result(session->ctx);
    4.30 +                    assert(gpgme_verify_result);
    4.31 +                    gpgme_signature = gpgme_verify_result->signatures;                    
    4.32 +                }
    4.33  
    4.34                  if (gpgme_signature) {
    4.35                      stringlist_t *k;
     5.1 --- a/src/sync.h	Thu Jan 12 18:51:14 2017 +0100
     5.2 +++ b/src/sync.h	Wed Jan 18 15:02:25 2017 +0100
     5.3 @@ -6,34 +6,120 @@
     5.4  Engine/adapter/app KeySync interface 
     5.5  ====================================
     5.6  
     5.7 -In the engine, KeySync is implemented through a state machine [1]. KeySync
     5.8 -state machine is driven [2] by events, triggering actions [3] and transitions
     5.9 -to new states. Events happen on decryption of email messages, on key
    5.10 -generation, on user interaction through the app and in case of timeout when
    5.11 -staying too long in some particular states.
    5.12 +
    5.13 +         Engine         |          Adapter            |          App
    5.14 +                        |                             |
    5.15 + . . . . . . . . . . . .|. . . . . . . . . . . . . . .|. . Attached session .  
    5.16 +     ,---------,        |                             |
    5.17 +   ,-| decrypt |<--------------------------------------- Incomming message 
    5.18 +   | | message |        |                             |
    5.19 +   | '---------'        |                             |
    5.20 +   | ,----------,       |                             |
    5.21 +   |-| myself   |<-------------------------------------- Create new account
    5.22 +   | | (keygen) |       |                             |
    5.23 +   | '----------'       |                             |
    5.24 +   | ,-----------,      |                             |
    5.25 +   |-| deliver   |<------------------------------------------- Accept/reject
    5.26 +   | | handshake |      |                     KeySync |            handshake
    5.27 +   | | result    |      |                     Message |
    5.28 +   | '-----------'      |                      Queue  |
    5.29 +   |                    |                      ,---,  |
    5.30 +   '-----------------------inject_sync_msg---->|   |  |
    5.31 + . . . . . . . . . . . .|. . . . . . . . . . . |---| .|. . . . Sync session .  
    5.32 + *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *|   |* | 
    5.33 +                        |                      |---|  | 
    5.34 + *   ,------------------retrieve_next_sync_msg-|   |* | 
    5.35 +   ,-v--------,         |                      '---'  | 
    5.36 + * | Driver   |         |                           * |
    5.37 +   '----------'         |                             |
    5.38 + *  ||'-event-----,     |                           * |
    5.39 +    |'--partner--,|     |                             |
    5.40 + *  '---extra---,||     |           SYNC THREAD     *<-------------- Start Sync
    5.41 +            ,---vvv---, |                             |
    5.42 + *     ,----|   FSM   | |                           * |
    5.43 +       |    '---------' |                             |
    5.44 + *     |  ,-------,     |                           * |
    5.45 +       '->|actions|---------messageToSend-------------------> Send mail to self
    5.46 + *        '-------'     |                           * |
    5.47 +              '-------------notifyHandshake-----------------> Ask for handshake
    5.48 + *                      |                           * |    display group status
    5.49 +                        |                             |
    5.50 + *  *  *  *  *  *  *  * |*  *  *  *  *  *  *  *  *  * |
    5.51 +                        |                             |
    5.52 +
    5.53 +Emails to self
    5.54 +--------------
    5.55 +
    5.56 +With e-mail as a transport KeySync message handling is done when an incoming 
    5.57 +email to self is passed to decrypt_message(), assuming that all incoming email
    5.58 +messages are passed to decrypt_massage(). 
    5.59 +
    5.60 +In case of an email containing a KeySync paload, KeySync may consume or ignore
    5.61 +the message. decrypt_message() signals this to the app with decrypt flags
    5.62 +PEP_decrypt_flag_consume and PEP_decrypt_flag_ignore.
    5.63 +
    5.64 +In case of PEP_decrypt_flag_consume, app should delete the message.
    5.65 +In case of PEP_decrypt_flag_ignore, app should ignore message.
    5.66 +In both cases, message should be hidden.
    5.67 +
    5.68 +States, events, actions
    5.69 +-----------------------
    5.70 +
    5.71 +In the engine, KeySync is implemented through a finite state machine (FSM) [1].
    5.72 +KeySync state machine is driven [2] by events, triggering actions [3] and
    5.73 +transitions to new states.
    5.74 +
    5.75 +Events happen on :
    5.76 +
    5.77 + - decryption of email messages
    5.78 +
    5.79 + - key generation
    5.80 +
    5.81 + - user interaction through the app 
    5.82 +
    5.83 + - timeout when staying too long in some particular states.
    5.84 +
    5.85 +[1] sync/devicegroup.fsm , src/sync_fsm.c (generated)
    5.86 +[2] src/sync_driver.c (generated)
    5.87 +[3] src/sync_actions.c , src/sync_send_actions.c (generated)
    5.88 +
    5.89 +Sync session, attached sessions
    5.90 +-------------------------------
    5.91  
    5.92  To use KeySync, the adapter has to create a session dedicated to handle the
    5.93  protocol, register some callbacks [4] to the engine, and then call protocol's
    5.94 -event consumer loop [5] in a dedicated thread. KeySync actions are executed
    5.95 -as callback invoked from that loop : send pEp messages through app's transport
    5.96 -and display KeySync status and handshake to the user.
    5.97 +event consumer loop [5] in a dedicated thread. KeySync actions are executed as
    5.98 +callback invoked from that thread.
    5.99  
   5.100 -When a session is attached [6] to a KeySync session, decryption of pEp (email)
   5.101 -messages in that session may trigger operations in attached KeySync session. In
   5.102 +When a session is attached [6] to a KeySync session, decryption of pEp email
   5.103 +messages in the attached session may trigger operations in KeySync session. In
   5.104  case of an adapter capable to serve multiple apps, each app is associated to a
   5.105  different KeySync session, and sessions created for use in that app are
   5.106  attached to that session.
   5.107  
   5.108 +Adapters present different approaches regarding session and client abstraction,
   5.109 +and may not propose to explicitely create or attach session or sync session.
   5.110 +
   5.111 +[4] register_sync_callbacks()
   5.112 +[5] do_sync_protocol()
   5.113 +[6] attach_sync_session()
   5.114 +
   5.115 +KeySync Messages and queue
   5.116 +--------------------------
   5.117 +
   5.118  KeySync messages [7], not to be confused with pEp (email) messages, are either
   5.119 -directly events to be processed by the state machine or KeySync payloads
   5.120 -collected from decrypted messages. They are jobs to be processed by the state
   5.121 -machine.
   5.122 +directly events to be processed by the state machine, or KeySync payloads
   5.123 +collected from decrypted messages. 
   5.124  
   5.125 -KeySync messages can be emitted by multiple sessions, and could naturally come
   5.126 -from different threads. They must be serialized in a locked queue. Attached
   5.127 -sessions inject [8] KeySync messages in the queue. Protocol loop retrieves [9]
   5.128 -them from the queue. KeySync message is received [10] by the state machine,
   5.129 -where event eventually deduced from payload.
   5.130 +KeySync messages can be emitted by different sessions, and could naturally come
   5.131 +from different threads. They must be serialized in a locked queue. 
   5.132 +KeySync messages queue is implemented by adapter, along with thread handling
   5.133 +KeySync protocol. 
   5.134 +
   5.135 +Attached sessions inject [8] KeySync messages in the queue. Protocol loop
   5.136 +retrieves [9] them from the queue. KeySync message is received [10] by the
   5.137 +state machine, where event, partner and extra parameters are eventually deduced
   5.138 +from payload.
   5.139  
   5.140  A state timeout event is a particular case. It doesn't traverse the queue, and
   5.141  isn't emitted by a session. It is triggered by a timeout on the retrieve
   5.142 @@ -41,17 +127,65 @@
   5.143  passed as a parameter of the call to the blocking queue retrieve operation on 
   5.144  next protocol loop iteraton.
   5.145  
   5.146 -[1] sync/devicegroup.fsm , src/sync_fsm.c (generated)
   5.147 -[2] src/sync_driver.c (generated)
   5.148 -[3] src/sync_actions.c , src/sync_send_actions.c (generated)
   5.149 -[4] register_sync_callbacks()
   5.150 -[5] do_sync_protocol()
   5.151 -[6] attach_sync_session()
   5.152  [7] type sync_msg_t
   5.153  [8] callback inject_sync_msg
   5.154  [9] callback retrieve_next_sync_msg
   5.155  [10] receive_sync_msg() (src/sync_impl.c)
   5.156  
   5.157 +Application callbacks
   5.158 +---------------------
   5.159 +
   5.160 +Some Keysync actions require the application to act, through callbacks :
   5.161 +
   5.162 + - messageToSend : send pEp messages through app's transport. 
   5.163 +   Messages are already encrypted and just need to be passed as-is to
   5.164 +   transport for transmission, as for messages returned by encrypt_message().
   5.165 +
   5.166 + - notifyHandshake : display KeySync status and handshake to the user.
   5.167 +   notifyHandshake callback receives 2 identities, 'me' and 'partner', together
   5.168 +   with a sync_handshake_signal enum :
   5.169 +
   5.170 +    SYNC_NOTIFY_INIT_ADD_OUR_DEVICE :
   5.171 +        Device (me) is sole, about to enter a group (partner).
   5.172 +        App displays trustwords, and requests user accept or reject
   5.173 +        App calls deliverHandshakeResult with user's answer
   5.174 +
   5.175 +    SYNC_NOTIFY_INIT_ADD_OTHER_DEVICE :
   5.176 +        Device (me) is grouped, another device (partner) wants to join group.
   5.177 +        App displays trustwords, and requests user accept or reject
   5.178 +        App calls deliverHandshakeResult with user's answer
   5.179 +
   5.180 +    SYNC_NOTIFY_INIT_FORM_GROUP :
   5.181 +        Device (me) is forming a group, including another device (partner)
   5.182 +        App displays trustwords, and requests user accept or reject
   5.183 +        App calls deliverHandshakeResult with user's answer
   5.184 +
   5.185 +    SYNC_NOTIFY_TIMEOUT :
   5.186 +        KeySync operation timed out.
   5.187 +        Identities are set reflecting peers involved in aborted operation.
   5.188 +        App displays error message. No feedback to engine.
   5.189 +
   5.190 +    SYNC_NOTIFY_ACCEPTED_DEVICE_ADDED,
   5.191 +        New device was added to group.
   5.192 +        App displays message. No feedback to engine.
   5.193 +
   5.194 +    SYNC_NOTIFY_ACCEPTED_GROUP_CREATED
   5.195 +        New group created.
   5.196 +        App displays message. No feedback to engine.
   5.197 +
   5.198 +   To deliver handshake result back to engine once user reacted,
   5.199 +   deliver_handshake_result is used. Result can be :
   5.200 +
   5.201 +    SYNC_HANDSHAKE_CANCEL
   5.202 +        Gives no answer. User doesn't know id TrustWord are good or bad.
   5.203 +        For example in case peering device is away.
   5.204 +        Handshake will re-appear later.
   5.205 +
   5.206 +    SYNC_HANDSHAKE_ACCEPTED
   5.207 +        Trustwords match with other device and user accepts handshake.
   5.208 +
   5.209 +    SYNC_HANDSHAKE_REJECTED
   5.210 +        Trustwords do not match with any device and user rejects handshake.
   5.211  */
   5.212  
   5.213  #pragma once
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/test/test_keys/priv/pep-test-apple-0x1CCBC7D7_priv.asc	Wed Jan 18 15:02:25 2017 +0100
     6.3 @@ -0,0 +1,105 @@
     6.4 +-----BEGIN PGP PRIVATE KEY BLOCK-----
     6.5 +
     6.6 +lQcYBFh7zckBEADIBrJVrvyjnLme7xPd45q3iShb+XZO3lYmLyaIyK5vg1xaxFv2
     6.7 +sXS7NN2q5/CUmM+Ab2+6OSOzgxvMpJ+HTSn2F6Hv7X7LWSlF+gn+wz4YlUwh17fv
     6.8 +I5UVtMSxiMyB3/t900g4LXOfOOFixpcQz9R2bsSFqBJt7aqkA5YlZxtBsCZ4UEZa
     6.9 +3b2YnTPDbwYdA1HRb1f9jEEMSpAxqmK3DF9zlSKqeJz6JX6qguUlTcOIMOyWVtKl
    6.10 +9RTl3UZrfg/qPcgilh6pK+MvuStdRdLQ5e4RPFH8G1X399RG7Ce7hQMysajBWv+8
    6.11 +ek0kARqSh6DvgUIHkEePxHQ9sKZi+R72i8A9PG512veYCRw11DzpuBbtwBvN48nz
    6.12 +g46d7+qtN8tYeylGTNtRQ+epbfotTYSPqjgkpGOTr6L36ushKM2MLDOhqjoJF+eP
    6.13 +5nbjbnaZGniEZym8I9X4iTm3/WOKyqhe2lp7UnZYzDAbkNz64miC4CIwomysZy/G
    6.14 +1VOGzeyo5SAx96VXeaHtnPIVzZqGS5VaGP39cl9R2oYW0Ur2dwHrcy2gH4abyXVA
    6.15 +hQfbNOrB0HI49cKR7xo5amMqS+SxnDS9CvEjAKi9hIHAUTRKj6m3C2o5t2ROYZZ9
    6.16 +lWTBIts1cGwMu1kVQgGYnnifHpuF2WUWVShQjSzBnW/OJUl63gW/1JoxRwARAQAB
    6.17 +AA//UiJBzyIr1gjwRV05RKcFbDCzNFUSad8s87/vrEHvMpX3ccPoWTtTyd0y2k8j
    6.18 +//hhWAUqFQcKbFc9LoI4iUe7n7PjiE/2fQxPAM9jlEtab6C6Yrkf61+qg3+3NokM
    6.19 +JJYyv99ma77qF6q1Daiq9jnIrZrdMl6ptp7dLzzTxeb5D7eDjGq2APDFPenrC+hG
    6.20 +U9p9maiFMnUJbsEdRW+H2k8H0L+fvO0K1EJaKSzXZ8JvNDiWpULge0nP+3UpSdE5
    6.21 +Or+EswL+cwu03W9E6adWofWQFF628XTOD6Shcz/cLsk233WI7GBv21ZC37JeVWXA
    6.22 +xSfH07BAWj3aV0x2ffR6bNVEqYZBHj3KXp85dCJOk7+000+in1VJasVx5h84+J3O
    6.23 +I9MBuj7ClvDR9nsGMwWNGGI1iJwGE7AyTd+mJhchPmdw/XMpWxGfxiwlk7F7ox53
    6.24 +4AKasN1WMusOB57CiUBo+VhgCc66WxOwKJP41ONaWHwevcGLnsQOQk1JDvmy1vUo
    6.25 +Ke/7llWyuC2uSd/GXX360bo4viSaFrC9rGbkMmzLRimt7nT1ATaXLzpRaZtaH7LV
    6.26 +t6x9f6cwaSQ9FvVn+XV+vqRwmhfK5h112uu6g9s8L/nW2rOlOwkrocSytL468p92
    6.27 +fMLnajFtmmNL8QzIBIKyLtO/rUi7VQOZakw1Lmgdm4FW0ZkIANVA6HdtDEFDgRbP
    6.28 +H4JaYTwx20PHXu7xvpp0+TyPk3PBrm4IT/UFtg6ZaxFNFXwcqOXBWEXSXFbbe4gt
    6.29 +q4JCyIgvXeuI/N4pos1LK04zUeQAbYa332loGqNToB0DiFGrr6T/5HrjzY7ouicc
    6.30 +qSaSidzacWoD22O1XDrNVrRY5jt6lXilYw8lk2WIZjOt61VdRSZvkU62K0+YSEzq
    6.31 +XH1CdeWE3Jv1abErLQStzXSPTUFL8mp/K6TUvTUDwLo70dqWS+bVAWH+KtZej9pw
    6.32 +B0XTXSawMGmVrdwO3jsiT4lv4NBRw6l1/G2md8nPVRIm+LyqNNUYKR9p16deY/l8
    6.33 +UmBHE48IAPAfBqW44UcpyWs0s6WoDFUhJbcucIl55uQJA30Qjjfh6zC1hvFtfBbI
    6.34 +TX5uUgcMNkLUXlBhxCM2d6JVbHSxVed8dNXNb6sl3/Zl+wSEHKHyxO59xdq9lB3d
    6.35 ++ShZop0CKntVEzaKXD9UBFdcHomePt9lPYvY97I3oLbiLyY93rNAyq1QcntvLnLk
    6.36 +80T/XY4DQwMbgSS9bhdXbbCm2AkIvB+/G0NHx9vcc+xnQighs6gzD3EL2yHrt+jG
    6.37 +RIpbA/9AR5MDcsRb9WTdfIOiMdCDCTvOKXdXwZbYpx8Iq7xdnbHc+uou6FQ+hwGb
    6.38 +DFxFjfgEe+uY2lBAiRTdxSY5XDBTyskIAOhhQoadFcUWI7Vne05k2ywqzgPEoZD0
    6.39 +YgnmHURbqseHjCfzM9umCZN7HbmBnmYd1ulXjq35WH/NPBmOf7kduLp0BmIUxJ5X
    6.40 +DBm8kQr3T9IOY8bL/MNsA7ByXjVd/+ZizqWYgdNZgopFBLOmLaQs0aF2TRtFkcfC
    6.41 +K9qsQPFSiyfE4f+6b8HJ8FoIZO0R8lFQ8L2wZ/ffwSmXtCfLpxyoa2z318gavzyp
    6.42 +9I1q5KVcK5jeFgiFhDcjnj6XcSX2LNBF2EEgzmp3Hd6Y1QkEZrQ6yq92usNnmcxD
    6.43 +VrgJC2Fz4aAsWhEaHu0Wgf1LxmKcUCu3icUk0mZKjewaL9McnFVjyMN4qrQ0cEVw
    6.44 +IEFwcGxlIE1haWwgVGVzdCA8cGVwLnRlc3QuYXBwbGVAcGVwLXByb2plY3Qub3Jn
    6.45 +PokCPQQTAQoAJwUCWHvNyQIbAwUJB4YfgAULCQgHAwUVCgkICwUWAgMBAAIeAQIX
    6.46 +gAAKCRADE9lKHMvH1y5cEACE7yagcRkU7blNBYBSzL6uDmWT4bplBo4YtUwpcT0E
    6.47 +/PrhdUpf6Z+v8YFtE7MIcfV5oc6CoqRZq9rtDfbtq3EuTLqaA2q2UHu8/AGsXcDJ
    6.48 +p6A5UnbbU7BOJ4/LaseM3+2COK0iamOvIlQ9m+uKTsZMYECAYXNvLfW0W/0TS2mo
    6.49 +7U8C5cNU1Tucx+7CinD3oR11+Wr6Jiw7eUCqTf8FeH/RfKVH6CMNavb4y//X1EJl
    6.50 +py7JzX1VcgeoKuew+Tyw2vn+dMAwMqKc4HWNTRtty/uBwm+BFI1LUFwaW4w+UMrU
    6.51 +gs09mtDX5qY/XumJpY3MnibKFr7+JONDm/EPmVggXNMeko2AB249T4woVnxh5dBz
    6.52 +4al3C/eR4OKvE01zLa5j2d8ETlMQg5+vzujWGwoHm05hHICsPw8XU3iha9CS6ke6
    6.53 +kadVdIfgwA47vAbr+7YnCcOGjMvnVGYMDYXsjGFmDwro2P2Id9s/tPKYNF3AKigk
    6.54 +AvShpYZ2rpTyj3UN6AZj1hSH5Q/oBuQeqTa5UFpuz+p71QrJX9aC3riFDHvdGwZp
    6.55 +rof29Pcxv8MjPL5A8aKUGpEp/BcD9DMnzq5pPDGFxXxdvfMacy79rTav+QUTlaL+
    6.56 +heXsBHRtjEPxvN6cM8Gc6zsJfMFJzyjPJzKCJ1F4tOy53dcqazlqYv0zoztz8r62
    6.57 +3Z0HGARYe83JARAA1wjleOvHwfQjSmUof0ArV+etLzgikRzCLceaL8e0C04tk4MK
    6.58 +DuysocIB05tUgEboPsPf48mElNDTXVzrSp6yo6/IsCHxN0QC/OBGUg7yv81yafLt
    6.59 +YJoAJbswAB5NjXxV+FhbQErJne99cDQG/NlEW0IOAG1RJnDCPf1l7rF0L+1W7eJc
    6.60 +NPiUAriOwe3KJsKXTHKazkFbd1ivos56dUiVmebMc2Hq8zDvCXcd+JjuaFIrHkql
    6.61 +e9CiIg0cJ+GF9w2iCDazb5P345iMgxEHOn/81QJ0ip497Ujk0QoChForKeg+Rp/G
    6.62 +NPN2FvuXIFyQGs47gdmR3ZwBFyazSDlf7351PhjjI2tS4xFbez19KQM6Q0RP244A
    6.63 +chwJKcOJ58HJSe8cJ73Bwq13FtDnmh74KmOw9Yt2/TXlWzNK3162XLT7qjhEkyW0
    6.64 +/ic+2SeaHg0c4KieOAc060P8kZHh1BfXTftem4zTmZYtuAveXxd4yLYW7fIDhYCV
    6.65 +uTmRFc+sOgGlNaZYRiwwWYfHKgrmEasovIwwnnuEjawZcHCzM8w7Sj4LoYHUM5Xh
    6.66 +vJR8V6lWPPBzWA04YXtWVqCpJ3D9jtLL9FhYbtcu6pPASsGp4PVFsI8PwtzEb895
    6.67 +87bQucXEyzGQdViz0KxOxow09s5r70xDTV/1U51XrtyRy9smACX6IgoAYMEAEQEA
    6.68 +AQAP+gLfb/+creaFAOkHTysyRLdOJ0hiNreQssr5x7EdgB64UuHGhJ6MpZOOUxYl
    6.69 +FRsIuwiw9wE2uch/obbSC2uS5sAR+D8T7eXzj/3Eb4FnXipsfgLRrrFKzzBchhFs
    6.70 +HVQ8yzsDeknyfPKgGj3Nglwq3LGX3agFlPf2gMx/qNMvifQPTB51CJ1wG9hUknAf
    6.71 +fgodovfTYeqE1so11f9O0uBxzga9q/SwcjQBGZP+y2bSZDlwkV2Ryp7aLV6P+rhR
    6.72 +O+SALMri2t2B260RZnK50Up15fELeD3I9okOygboBuJcAECDhViVFk/rO2tRaERa
    6.73 +28dVO8nYUPDJcFMt92c0Ds3VMAEbcD5wcF3rZSnoAGFMYrwOV+r/4Uq5e8SdkfZZ
    6.74 +Ob6YQVZR6zSDfo5eHXJhU8v5X7jVCWdgFsOG8hVTNxyLr19esr6K23WN0hERKdbW
    6.75 +ApYBMn4rBeH2Ob6pLqWBoGAPnkIFtljBWU8MWznCDAzNLHLoBcbHhOUYD4u9USvZ
    6.76 +ewzw/NSq/u1Q0Ix1SYIqWZc74PYonGzjxsvN8qtAVHzmEYW+rphFMtDHdbVHyADe
    6.77 +x04smmpSYbiRjXHDv1qC5ONRxqpDviT+x+fXMYy1YmT/KVORxzfQcec6HP4+dkvQ
    6.78 +e+CD4VLxPx6j0ZyZK2OQ81ZdiQUnv3wRYRxTOqyXMZr/xPShCADkEfYqyCf8FwZp
    6.79 +02rLymK+UI4s000zvRPMbISh5/3+146pmZo6ubHSqY0+Y28pGlj74mEIPaNHlO8Q
    6.80 +vxWzh0H5smCNqZEt3KMMedcytqzIR/yfwzWZsCjdMsGuMZQV5ru16Du0/23243wf
    6.81 +gQTxAOJqT6vgWrVcSYRYQg9aojuZbPtuoigJiYf6eudHXP2EyW2LFbaRl6ylQAlr
    6.82 +e+6s4lMl4K2NT44x1dgaFYtjQPrb/O5iId7optmckg92NXcIXO9CfPDtLe9ikCnD
    6.83 +rEgwwNXKsgTL4t8+yBWsulS+gnfqszTKHqNMQTZiACm6P+cpRh3iV+xnNriigqIe
    6.84 +/G5PrOcbCADxXkW+KX0qt5nIFC5mFEN9TFv+MyPWBngTVvp+Mi13LNgPz/2vcC4W
    6.85 +mN62wCTLkhFsXDi4dxmIWTSrAwruYEgPsOSLw5LOF20KKaIfHdEMX8Yi8jON7OWk
    6.86 +DtaOZISefNpCq1wmOuiF5AwM4X1/2PINWcF3ZEolu+5jRCPmOolfkYhjGWhoQQeJ
    6.87 +myWfg40WrhFKpFSTUlNuVS+9FnRKJqG6EK26epoZBYjey88ELcwQ1RqhP9H8bGmM
    6.88 +4XsQ34YFEjpDfL15N0aVRcwJk8X/J+wpr/h/UchxmhRnPgljjQxQnawGfZ7hy5r2
    6.89 +81qF29W2/njR0B8/3Kfp6+6BJqUIDIlTCACeheTl1N2X4j3GiEQUyggX+ii98sVg
    6.90 +2eHeYtzHU7MS6zPN2LoC8ejC3QzD2IodgtV6adYa92mta9ZRryY5aKlwkyL8HtwL
    6.91 +uJMz6s3/DN3LM5QnAQkMcIo9IW3mKzOo1bOZ6IKhIwevm993Uf4begK/Tt3N9PyO
    6.92 +Ir3n5314pkVtnZWGHbr8rU3wjfmiI8jeTyaJztLn2blgm2qzyJQPGShjk/ccNuP6
    6.93 +T3nGyX0oYJIgymbpzOsPI0hvxadJF9gGqkS3aiGcIlsOy8b3TtePEWsVQQPoOVcS
    6.94 +/ytGD4N0Pr7iKK+QRBfDch8Fmwdj9f+oZEBtxTvQbtcZ4e8tvNcdtSUmiCaJAiUE
    6.95 +GAEKAA8FAlh7zckCGwwFCQeGH4AACgkQAxPZShzLx9fmUhAAnVtqXes2BMng+xeJ
    6.96 +4XKJVcpuj4O64Ox1gFWpVcW/Aca/863PJae/oMJ4FUCxAsrq6uBrSyxm4dhUAPgQ
    6.97 +JhjsQsOIVGfwg1g0qHVtm+rD6sfpAkZtmc7Ugv0XNp5ADDXdYGYkVvfDiekRW4jR
    6.98 +kOZ89gCrMUjcAITCWsRhsZrYgYA343P5ntrXT48mTzrB3L5uA9CoAwBHGj6HN4t8
    6.99 +VvRY/cRU6RaL+Z4w3I4rX0r9OWn16f5IU+9MN4aK7Q9BVMfhs6yrsfHbTMgUDHi0
   6.100 +4ZmiBNZN86ERz04BfGBpsE+OLMd6pT0lRkl7Q5YYcNgvB/LZeUqiPsFVLv3ZCZyI
   6.101 +1qbIFfPC1l1NrLEfXpBKEcqjHs3+YyG2BG9NsgADG2r80spvLIReeUoS4HwGbLIV
   6.102 +WDGfgPaZHcogeR9DW5RiUhKQpzhZfQgFBrdRmccClTF7AQoyfmIXnevVPgax/+3G
   6.103 +tGz4SXnSFSErvIua25z98GxwXP8t9RmD6LACc+UZ1dJP1y8/1YMx9Xfz0pktdJKx
   6.104 +nSVdNzUWPMS4Ct5lW0geL7u9NKrpBo40XrrmdlF90a5T54FTFmmMZ68ZF1+QSOe4
   6.105 +hczbKo+ja3i9XkB8Y+d5UoLN1OtjjymyK5HIWkiUyzcPsF9wr1rHvsCGJF/AvNLY
   6.106 +H5Qmyd9R7Wp5qwXlP8lYRrOjYJI=
   6.107 +=cYDm
   6.108 +-----END PGP PRIVATE KEY BLOCK-----
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/test/test_keys/priv/pep-test-recip-0x08DB0AEE_priv.asc	Wed Jan 18 15:02:25 2017 +0100
     7.3 @@ -0,0 +1,58 @@
     7.4 +-----BEGIN PGP PRIVATE KEY BLOCK-----
     7.5 +
     7.6 +lQOYBFh711YBCADSDpaYLPthsvsq1ERK+OiZh9REfdEQ5KO1M9GUG3jfbhr+6yam
     7.7 +i5PfFYxoa8FiFwE1TSNMdw8y9CNasBwJQIhL+ihlQxUXcMJLs+q3kDbq03zZd3i0
     7.8 +f/oi9thTitpfhWflCqIjRRCaVtQo5ooxmeXk+CBWyyFK3Q4M8ssLYZMrIDkT3OVt
     7.9 +/m0qcoj1K7f+5iS9lwCcVADU8gACtpeVTphIeiSgHG4PMj3aFgsSHrdag3eRVF3t
    7.10 +8+q/vMDEtkThR+JIn2IeX0U8c/Trq5ek6M88ST63sU1c1Lbw1TENhch7UJl85MxQ
    7.11 +zyZ/FRWlj4zoPfEwdVolLaS+hlGMH5tsNk1/ABEBAAEAB/4jAKdQ3ait/mMiyehE
    7.12 +uKFvJAEtFezGlzLoY6V4EUkyV2ihiJG84uQAd9jDywuYdXjlZuCLl14DAZz6jv9n
    7.13 +qJyNpzZ1WUOkek0GIbQ/uQT4WxwiKL8GZOT2T+fQVAJQ3ywRheoVXSbdG7w9bIfO
    7.14 +qB8fk8aKb/gw6hEIpf9LpYtz00cnXhnFuX1a/C0rwDOconlEUtMeUC4j4GS6OJZ5
    7.15 +SyFtSEdl5pTvhayau0lGFs3KMEu9zko6IvfuUevwlewQka0S9l8DMNwfQTYxnTL2
    7.16 +zrO5OX1j5rnTPiY7KDhwCPW5S87mK27QRNzbiW6t4gnjZeq98YKlU6tJMMV8ABuO
    7.17 +kyiRBADTYQSAbo0aLe1rq3Dr/IrNASw1i4BzP9w+UxeEX8nDX1NrS/cjEwJPm7eF
    7.18 +xigH+BechUZE0uAbjIvOMCnRlCNjjvmbmrtCayhUjCOCePm89MKghFGHQoyaAD68
    7.19 +bbWDthBL8DolhegMmGrKzKYKlzdKHSO1TkGGPAOHUdBEnQmgjQQA/mYhRZMEq2nR
    7.20 +C+laC0xOS7cR/kBl/boASQ5HnvDH+7x+ZVshvczyDpVzQjyRf143JP7pSy7dkECC
    7.21 +dNecbCXcNXpiI36gisb7I+i+KDzJ3Vl8LgXE8Hx03jHOzbJ0we2VAFkuPw/URkJY
    7.22 +2bu31VxMWYCFP7ko1a3we1H65YHEwTsEAODUj0IdtUltyq4floFpbLdkU0MS3uYC
    7.23 +XeWbq47FY0FJF5CtRUKASlCmsFxGFAN6Eq7LBxy7LZx4oRm/4M3DK8gREpmT3qYs
    7.24 +W5pPkaJqREs2JRmWh9FtglhnqzjfZwW9KaMcYgORPvK4pXMD1gHNewJl9LHvKLIr
    7.25 +g1MlsNmpcOUhNKS0Z3BFcCBUZXN0IFJlY2lwaWVudCAoS2V5cGFpciBmb3IgS3Jp
    7.26 +c3RhIHRlc3RzIC0gbm90IHNlY3JldCBpbiBhbnl3YXkhISEhKSA8cGVwLnRlc3Qu
    7.27 +cmVjaXBAa2dyb3Rob2ZmLm9yZz6JAT8EEwEIACkFAlh711YCGwMFCQHhM4AHCwkI
    7.28 +BwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCE2SF5CNsK7p1nCACNWH+sADtb9OKO
    7.29 +oiZX3JXbO66D7YaCsuIJfh1ZtViessDl6uuCKULkyZOhRGkMMwrlMetfSz4/N6Hx
    7.30 +iPPNKfdDnJnP0gX45KOsVKB34VdgvYN4kUKL4hvAAxfJC5nI+JXuOwUbxs6FRYkQ
    7.31 +rYYv1I+qufdaCzAWc9KLeyBpp7uYNBHOOELrWxvAFMDPMBSioCwGYU04cJsBLXQC
    7.32 +bsxdyFiZSgAS1A/oIEQ87fZtPYuq6SHrZB2/bsDiEIFKDmK91zY6phZtgzVi77pC
    7.33 +K6YL/GZBi5ZSBXuzVFMjeVwJr3ajsVDs78FCmKT+lcmAvZleEhMKpovs1Ng7H1v3
    7.34 +EQU2jhOpnQOYBFh711YBCADZlca5RzMLUOX42+krKFcK9KGjanackuKlU0DbDh/F
    7.35 +8x3ouVDV3+Nu4Ti6/fxtnuaSW7ZmssOTYGJKaGqRjpNwe6HjY1giMr5KO2J8TsOJ
    7.36 +aKhPyrgCzgeX+a4nAIE8P8CeEiYOEG10wyZ1i3PH+JdeAmDR2/YoRAB5XXaKAR+z
    7.37 +1Aa1i+tgdw+nyZSN9hFvOjruyoMdvkcEo94x3Ylw4fVkzTl5zlyss3CgRzJa9EW0
    7.38 +BnpH2OVTi6S39o/YzUidWzysu2I2/DhUcGuWDoDOXD1ILULhUIC4UF12t0coBtRP
    7.39 +IG4MoKya5UkiVK0j6q2PD0yj5EJkvyn77NSAHM4Fih3NABEBAAEAB/wJIOEA9e08
    7.40 +zMyRJ7y9DEi2k3PSlM1cHUd38ym15v5LQjtff6LWDjoO9VD5e11jRfbbbhCVd2uA
    7.41 +G9uTzpSl/arO3cj5broMWT+lgp9LosxOT/87tcAJkhY8eIOnbDx/yBbvKsjA70yA
    7.42 +SQ2sgci+O34yOfxQ4Z8Oqmewr8yg1pI7a5Zz54oB/6y+VBjqPXSbW3V1Kb99xEfD
    7.43 +E5XWxPag8uPn1anExmvU4IfIlzNOpUMcfYbevhVOkhpFxwXtsh95SeGRDKwsniUa
    7.44 +Jq4XashfRq75HueUJnDV73zkPc0YZYUMzybKlF0+tOT49dIBJR4wk7JXDePF59nu
    7.45 +GpvnXL6FtoEBBADebS+XVp3g5QSsctyBoH4sA7C5RSlHUf2kKILRF7DYdyJMgEji
    7.46 +iD3BM++PPnW2Gime43je8LDJOsqKCncMw/sn9Lpdyz1JJkNlgF3PGVHzomrSafNv
    7.47 +9gv8SqbGI8niiWVZH34NAr7XrRUUZE0Ggzc7ehiyOjWRG87ees0w45enTQQA+m2C
    7.48 +7f0fRTMScVyo6l9TMITZY9hS76Zre8jBhUl0cYrftU1M/04vU8s4gIk85WBbE+Ir
    7.49 +Cr91hiqyi1lLpndAz2gMct3F8YbtjFZRmqhTZpNh0kVc4WzPf7Ctu1SIac3nz4oZ
    7.50 +v3ooDk/Ks/xbd9526q+1mxQuFmOU59MQxtlSEIEEAKJgb1Ri6oFPn4dSJUYv1HuV
    7.51 +nUgkmnJtrf7jDOPPu2PmPSiWu8/QGzmHwbjO2erV2Wa46wlJ9GYifCzo545d92Yl
    7.52 +IkpNok7Btkz9AQjkJ/QKPgA/0K5cKVpSnIF16fcddSK3uc2rG5fRypfVbONvQ17f
    7.53 +VrU8gWYvCLZE91X5tXM3SoGJASUEGAEIAA8FAlh711YCGwwFCQHhM4AACgkQhNkh
    7.54 +eQjbCu6LMgf/Vbtpj0Y3swMYWDahLZjjPKPzvaBnLHnmlZJS0culFItLbWTZB7Wu
    7.55 +Hn/pv1pXsKF4XNnl/zK8HPEEJiVuA2eWGsA9XgqBGYCwYs8zhJFkeQ55iGGuMhGy
    7.56 +PT3ie153vqjbDXGC7ajlksEwP3ESrkLjIuHWov8karzIXKiz4M9qnrJY6OmNfO79
    7.57 +qxigEs5BuIZNWS/Dy1de5RAfQgSVvD3uXX5cLUAO/FxKfHVoHdL7JEcrJGf91T+u
    7.58 +c9LDOtccvZRAZt/l3M7qRNudRF3HnvunsfNMi1xLzz340lVKO564mYT38yAX9zhk
    7.59 +fkPQwHlDzt8ruC4IUKQljSKCwngrpl+qyQ==
    7.60 +=V/XN
    7.61 +-----END PGP PRIVATE KEY BLOCK-----
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/test/test_keys/pub/pep-test-apple-0x1CCBC7D7_pub.asc	Wed Jan 18 15:02:25 2017 +0100
     8.3 @@ -0,0 +1,51 @@
     8.4 +-----BEGIN PGP PUBLIC KEY BLOCK-----
     8.5 +
     8.6 +mQINBFh7zckBEADIBrJVrvyjnLme7xPd45q3iShb+XZO3lYmLyaIyK5vg1xaxFv2
     8.7 +sXS7NN2q5/CUmM+Ab2+6OSOzgxvMpJ+HTSn2F6Hv7X7LWSlF+gn+wz4YlUwh17fv
     8.8 +I5UVtMSxiMyB3/t900g4LXOfOOFixpcQz9R2bsSFqBJt7aqkA5YlZxtBsCZ4UEZa
     8.9 +3b2YnTPDbwYdA1HRb1f9jEEMSpAxqmK3DF9zlSKqeJz6JX6qguUlTcOIMOyWVtKl
    8.10 +9RTl3UZrfg/qPcgilh6pK+MvuStdRdLQ5e4RPFH8G1X399RG7Ce7hQMysajBWv+8
    8.11 +ek0kARqSh6DvgUIHkEePxHQ9sKZi+R72i8A9PG512veYCRw11DzpuBbtwBvN48nz
    8.12 +g46d7+qtN8tYeylGTNtRQ+epbfotTYSPqjgkpGOTr6L36ushKM2MLDOhqjoJF+eP
    8.13 +5nbjbnaZGniEZym8I9X4iTm3/WOKyqhe2lp7UnZYzDAbkNz64miC4CIwomysZy/G
    8.14 +1VOGzeyo5SAx96VXeaHtnPIVzZqGS5VaGP39cl9R2oYW0Ur2dwHrcy2gH4abyXVA
    8.15 +hQfbNOrB0HI49cKR7xo5amMqS+SxnDS9CvEjAKi9hIHAUTRKj6m3C2o5t2ROYZZ9
    8.16 +lWTBIts1cGwMu1kVQgGYnnifHpuF2WUWVShQjSzBnW/OJUl63gW/1JoxRwARAQAB
    8.17 +tDRwRXAgQXBwbGUgTWFpbCBUZXN0IDxwZXAudGVzdC5hcHBsZUBwZXAtcHJvamVj
    8.18 +dC5vcmc+iQI9BBMBCgAnBQJYe83JAhsDBQkHhh+ABQsJCAcDBRUKCQgLBRYCAwEA
    8.19 +Ah4BAheAAAoJEAMT2Uocy8fXLlwQAITvJqBxGRTtuU0FgFLMvq4OZZPhumUGjhi1
    8.20 +TClxPQT8+uF1Sl/pn6/xgW0Tswhx9XmhzoKipFmr2u0N9u2rcS5MupoDarZQe7z8
    8.21 +AaxdwMmnoDlSdttTsE4nj8tqx4zf7YI4rSJqY68iVD2b64pOxkxgQIBhc28t9bRb
    8.22 +/RNLaajtTwLlw1TVO5zH7sKKcPehHXX5avomLDt5QKpN/wV4f9F8pUfoIw1q9vjL
    8.23 +/9fUQmWnLsnNfVVyB6gq57D5PLDa+f50wDAyopzgdY1NG23L+4HCb4EUjUtQXBpb
    8.24 +jD5QytSCzT2a0Nfmpj9e6YmljcyeJsoWvv4k40Ob8Q+ZWCBc0x6SjYAHbj1PjChW
    8.25 +fGHl0HPhqXcL95Hg4q8TTXMtrmPZ3wROUxCDn6/O6NYbCgebTmEcgKw/DxdTeKFr
    8.26 +0JLqR7qRp1V0h+DADju8Buv7ticJw4aMy+dUZgwNheyMYWYPCujY/Yh32z+08pg0
    8.27 +XcAqKCQC9KGlhnaulPKPdQ3oBmPWFIflD+gG5B6pNrlQWm7P6nvVCslf1oLeuIUM
    8.28 +e90bBmmuh/b09zG/wyM8vkDxopQakSn8FwP0MyfOrmk8MYXFfF298xpzLv2tNq/5
    8.29 +BROVov6F5ewEdG2MQ/G83pwzwZzrOwl8wUnPKM8nMoInUXi07Lnd1yprOWpi/TOj
    8.30 +O3PyvrbduQINBFh7zckBEADXCOV468fB9CNKZSh/QCtX560vOCKRHMItx5ovx7QL
    8.31 +Ti2TgwoO7KyhwgHTm1SARug+w9/jyYSU0NNdXOtKnrKjr8iwIfE3RAL84EZSDvK/
    8.32 +zXJp8u1gmgAluzAAHk2NfFX4WFtASsmd731wNAb82URbQg4AbVEmcMI9/WXusXQv
    8.33 +7Vbt4lw0+JQCuI7B7comwpdMcprOQVt3WK+iznp1SJWZ5sxzYerzMO8Jdx34mO5o
    8.34 +UiseSqV70KIiDRwn4YX3DaIINrNvk/fjmIyDEQc6f/zVAnSKnj3tSOTRCgKEWisp
    8.35 +6D5Gn8Y083YW+5cgXJAazjuB2ZHdnAEXJrNIOV/vfnU+GOMja1LjEVt7PX0pAzpD
    8.36 +RE/bjgByHAkpw4nnwclJ7xwnvcHCrXcW0OeaHvgqY7D1i3b9NeVbM0rfXrZctPuq
    8.37 +OESTJbT+Jz7ZJ5oeDRzgqJ44BzTrQ/yRkeHUF9dN+16bjNOZli24C95fF3jIthbt
    8.38 +8gOFgJW5OZEVz6w6AaU1plhGLDBZh8cqCuYRqyi8jDCee4SNrBlwcLMzzDtKPguh
    8.39 +gdQzleG8lHxXqVY88HNYDThhe1ZWoKkncP2O0sv0WFhu1y7qk8BKwang9UWwjw/C
    8.40 +3MRvz3nzttC5xcTLMZB1WLPQrE7GjDT2zmvvTENNX/VTnVeu3JHL2yYAJfoiCgBg
    8.41 +wQARAQABiQIlBBgBCgAPBQJYe83JAhsMBQkHhh+AAAoJEAMT2Uocy8fX5lIQAJ1b
    8.42 +al3rNgTJ4PsXieFyiVXKbo+DuuDsdYBVqVXFvwHGv/OtzyWnv6DCeBVAsQLK6urg
    8.43 +a0ssZuHYVAD4ECYY7ELDiFRn8INYNKh1bZvqw+rH6QJGbZnO1IL9FzaeQAw13WBm
    8.44 +JFb3w4npEVuI0ZDmfPYAqzFI3ACEwlrEYbGa2IGAN+Nz+Z7a10+PJk86wdy+bgPQ
    8.45 +qAMARxo+hzeLfFb0WP3EVOkWi/meMNyOK19K/Tlp9en+SFPvTDeGiu0PQVTH4bOs
    8.46 +q7Hx20zIFAx4tOGZogTWTfOhEc9OAXxgabBPjizHeqU9JUZJe0OWGHDYLwfy2XlK
    8.47 +oj7BVS792QmciNamyBXzwtZdTayxH16QShHKox7N/mMhtgRvTbIAAxtq/NLKbyyE
    8.48 +XnlKEuB8BmyyFVgxn4D2mR3KIHkfQ1uUYlISkKc4WX0IBQa3UZnHApUxewEKMn5i
    8.49 +F53r1T4Gsf/txrRs+El50hUhK7yLmtuc/fBscFz/LfUZg+iwAnPlGdXST9cvP9WD
    8.50 +MfV389KZLXSSsZ0lXTc1FjzEuAreZVtIHi+7vTSq6QaONF665nZRfdGuU+eBUxZp
    8.51 +jGevGRdfkEjnuIXM2yqPo2t4vV5AfGPneVKCzdTrY48psiuRyFpIlMs3D7BfcK9a
    8.52 +x77AhiRfwLzS2B+UJsnfUe1qeasF5T/JWEazo2CS
    8.53 +=/7kj
    8.54 +-----END PGP PUBLIC KEY BLOCK-----
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/test/test_keys/pub/pep-test-recip-0x08DB0AEE_pub.asc	Wed Jan 18 15:02:25 2017 +0100
     9.3 @@ -0,0 +1,31 @@
     9.4 +-----BEGIN PGP PUBLIC KEY BLOCK-----
     9.5 +
     9.6 +mQENBFh711YBCADSDpaYLPthsvsq1ERK+OiZh9REfdEQ5KO1M9GUG3jfbhr+6yam
     9.7 +i5PfFYxoa8FiFwE1TSNMdw8y9CNasBwJQIhL+ihlQxUXcMJLs+q3kDbq03zZd3i0
     9.8 +f/oi9thTitpfhWflCqIjRRCaVtQo5ooxmeXk+CBWyyFK3Q4M8ssLYZMrIDkT3OVt
     9.9 +/m0qcoj1K7f+5iS9lwCcVADU8gACtpeVTphIeiSgHG4PMj3aFgsSHrdag3eRVF3t
    9.10 +8+q/vMDEtkThR+JIn2IeX0U8c/Trq5ek6M88ST63sU1c1Lbw1TENhch7UJl85MxQ
    9.11 +zyZ/FRWlj4zoPfEwdVolLaS+hlGMH5tsNk1/ABEBAAG0Z3BFcCBUZXN0IFJlY2lw
    9.12 +aWVudCAoS2V5cGFpciBmb3IgS3Jpc3RhIHRlc3RzIC0gbm90IHNlY3JldCBpbiBh
    9.13 +bnl3YXkhISEhKSA8cGVwLnRlc3QucmVjaXBAa2dyb3Rob2ZmLm9yZz6JAT8EEwEI
    9.14 +ACkFAlh711YCGwMFCQHhM4AHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCE
    9.15 +2SF5CNsK7p1nCACNWH+sADtb9OKOoiZX3JXbO66D7YaCsuIJfh1ZtViessDl6uuC
    9.16 +KULkyZOhRGkMMwrlMetfSz4/N6HxiPPNKfdDnJnP0gX45KOsVKB34VdgvYN4kUKL
    9.17 +4hvAAxfJC5nI+JXuOwUbxs6FRYkQrYYv1I+qufdaCzAWc9KLeyBpp7uYNBHOOELr
    9.18 +WxvAFMDPMBSioCwGYU04cJsBLXQCbsxdyFiZSgAS1A/oIEQ87fZtPYuq6SHrZB2/
    9.19 +bsDiEIFKDmK91zY6phZtgzVi77pCK6YL/GZBi5ZSBXuzVFMjeVwJr3ajsVDs78FC
    9.20 +mKT+lcmAvZleEhMKpovs1Ng7H1v3EQU2jhOpuQENBFh711YBCADZlca5RzMLUOX4
    9.21 +2+krKFcK9KGjanackuKlU0DbDh/F8x3ouVDV3+Nu4Ti6/fxtnuaSW7ZmssOTYGJK
    9.22 +aGqRjpNwe6HjY1giMr5KO2J8TsOJaKhPyrgCzgeX+a4nAIE8P8CeEiYOEG10wyZ1
    9.23 +i3PH+JdeAmDR2/YoRAB5XXaKAR+z1Aa1i+tgdw+nyZSN9hFvOjruyoMdvkcEo94x
    9.24 +3Ylw4fVkzTl5zlyss3CgRzJa9EW0BnpH2OVTi6S39o/YzUidWzysu2I2/DhUcGuW
    9.25 +DoDOXD1ILULhUIC4UF12t0coBtRPIG4MoKya5UkiVK0j6q2PD0yj5EJkvyn77NSA
    9.26 +HM4Fih3NABEBAAGJASUEGAEIAA8FAlh711YCGwwFCQHhM4AACgkQhNkheQjbCu6L
    9.27 +Mgf/Vbtpj0Y3swMYWDahLZjjPKPzvaBnLHnmlZJS0culFItLbWTZB7WuHn/pv1pX
    9.28 +sKF4XNnl/zK8HPEEJiVuA2eWGsA9XgqBGYCwYs8zhJFkeQ55iGGuMhGyPT3ie153
    9.29 +vqjbDXGC7ajlksEwP3ESrkLjIuHWov8karzIXKiz4M9qnrJY6OmNfO79qxigEs5B
    9.30 +uIZNWS/Dy1de5RAfQgSVvD3uXX5cLUAO/FxKfHVoHdL7JEcrJGf91T+uc9LDOtcc
    9.31 +vZRAZt/l3M7qRNudRF3HnvunsfNMi1xLzz340lVKO564mYT38yAX9zhkfkPQwHlD
    9.32 +zt8ruC4IUKQljSKCwngrpl+qyQ==
    9.33 +=2MI3
    9.34 +-----END PGP PUBLIC KEY BLOCK-----
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/test/test_mails/apple_mail_TC_html_signed_encrypted.eml	Wed Jan 18 15:02:25 2017 +0100
    10.3 @@ -0,0 +1,147 @@
    10.4 +Return-Path: <pep.test.apple@pep-project.org>
    10.5 +X-Original-To: krista@gnunet.org
    10.6 +Delivered-To: krista@gnunet.org
    10.7 +Received: from vmmailrelay1.informatik.tu-muenchen.de (mailrelay1.informatik.tu-muenchen.de [131.159.254.14])
    10.8 +	by sam.net.in.tum.de (Postfix) with ESMTP id EA9151C0087
    10.9 +	for <krista@gnunet.org>; Tue, 17 Jan 2017 08:36:50 +0100 (CET)
   10.10 +Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost [127.0.0.1])
   10.11 +	by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 4F6BB1C0386
   10.12 +	for <krista@gnunet.org>; Tue, 17 Jan 2017 08:36:50 +0100 (CET)
   10.13 +Received: from vmmaildmz1.informatik.tu-muenchen.de (vmmaildmz1.informatik.tu-muenchen.de [131.159.0.87])
   10.14 +	by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id 43F0A1C0381
   10.15 +	for <krista@gnunet.org>; Tue, 17 Jan 2017 08:36:50 +0100 (CET)
   10.16 +Received: by vmmaildmz1.informatik.tu-muenchen.de (Postfix, from userid 109)
   10.17 +	id 414A81C2C7D; Tue, 17 Jan 2017 08:36:50 +0100 (CET)
   10.18 +X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
   10.19 +	vmmaildmz1.informatik.tu-muenchen.de
   10.20 +X-Spam-Level: 
   10.21 +X-Spam-Status: No, score=-3.6 required=7.0 tests=BAYES_00,ENCRYPTED_MESSAGE,
   10.22 +	RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,TVD_RCVD_SPACE_BRACKET,
   10.23 +	UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
   10.24 +Received: from vmmaildmz1.informatik.tu-muenchen.de (localhost [127.0.0.1])
   10.25 +	by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTP id 8E0151C2C7C
   10.26 +	for <krista@gnunet.org>; Tue, 17 Jan 2017 08:36:48 +0100 (CET)
   10.27 +Received: from mi4-p00-ob.smtp.rzone.de (mi4-p00-ob.smtp.rzone.de [81.169.146.145])
   10.28 +	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
   10.29 +	(No client certificate requested)
   10.30 +	by vmmaildmz1.informatik.tu-muenchen.de (Postfix) with ESMTPS id 7CCCA1C2B0B
   10.31 +	for <krista@gnunet.org>; Tue, 17 Jan 2017 08:36:48 +0100 (CET)
   10.32 +X-RZG-FWD-BY: pep.test.recip@kgrothoff.org
   10.33 +Received: from mailin.rzone.de ([unix socket])
   10.34 +	by mailin.rzone.de (RZmta 39.11) with LMTPA;
   10.35 +	Tue, 17 Jan 2017 08:36:25 +0100 (CET)
   10.36 +Authentication-Results: strato.com 1;
   10.37 +	spf=none
   10.38 +		smtp.mailfrom="pep.test.apple@pep-project.org";
   10.39 +	dkim=none;
   10.40 +	domainkeys=none;
   10.41 +	dkim-adsp=none
   10.42 +		header.from="pep.test.apple@pep-project.org"
   10.43 +X-Strato-MessageType: email
   10.44 +X-RZG-CLASS-ID: mi00
   10.45 +Received-SPF: none
   10.46 +	client-ip=94.231.81.244;
   10.47 +	helo="dragon.pibit.ch";
   10.48 +	envelope-from="pep.test.apple@pep-project.org";
   10.49 +	receiver=smtpin.rzone.de;
   10.50 +	identity=mailfrom;
   10.51 +Received: from dragon.pibit.ch ([94.231.81.244])
   10.52 +	by smtpin.rzone.de (RZmta 39.11 OK)
   10.53 +	with ESMTPS id T050cat0H7aPO0Y
   10.54 +	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA))
   10.55 +	(Client did not present a certificate)
   10.56 +	for <pep.test.recip@kgrothoff.org>;
   10.57 +	Tue, 17 Jan 2017 08:36:25 +0100 (CET)
   10.58 +Received: from localhost (localhost [127.0.0.1])
   10.59 +	by dragon.pibit.ch (Postfix) with ESMTP id 05F07171C05B
   10.60 +	for <pep.test.recip@kgrothoff.org>; Tue, 17 Jan 2017 08:36:25 +0100 (CET)
   10.61 +Received: from dragon.pibit.ch ([127.0.0.1])
   10.62 +	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
   10.63 +	with ESMTP id CXK27sF84Mhv for <pep.test.recip@kgrothoff.org>;
   10.64 +	Tue, 17 Jan 2017 08:36:20 +0100 (CET)
   10.65 +Received: from kristas-mac-mini.fritz.box (ip5f5840e9.dynamic.kabel-deutschland.de [95.88.64.233])
   10.66 +	by dragon.pibit.ch (Postfix) with ESMTPSA id 23ABE171C050
   10.67 +	for <pep.test.recip@kgrothoff.org>; Tue, 17 Jan 2017 08:36:20 +0100 (CET)
   10.68 +Subject: This one has HTML - yay!
   10.69 +Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
   10.70 +Content-Type: multipart/encrypted; boundary="Apple-Mail=_1B254AB0-33CA-4D63-940D-CF09C01C133C"; protocol="application/pgp-encrypted";
   10.71 +From: pEp Apple Test <pep.test.apple@pep-project.org>
   10.72 +Resent-From: pEp Apple Test <pep.test.apple@pep-project.org>
   10.73 +Date: Tue, 17 Jan 2017 08:34:34 +0100
   10.74 +Content-Transfer-Encoding: 7bit
   10.75 +Resent-Date: Tue, 17 Jan 2017 08:36:19 +0100
   10.76 +Message-Id: <EB62E57F-62D9-4049-98A1-2BFB9FF92EB8@pep-project.org>
   10.77 +Resent-To: pep.test.recip@kgrothoff.org
   10.78 +Content-Description: OpenPGP encrypted message
   10.79 +To: pep.test.recip@kgrothoff.org
   10.80 +X-Mailer: Apple Mail (2.3124)
   10.81 +Resent-Message-Id: <20170117073625.05F07171C05B@dragon.pibit.ch>
   10.82 +
   10.83 +This is an OpenPGP/MIME encrypted message (RFC 2440 and 3156)
   10.84 +--Apple-Mail=_1B254AB0-33CA-4D63-940D-CF09C01C133C
   10.85 +Content-Transfer-Encoding: 7bit
   10.86 +Content-Type: application/pgp-encrypted
   10.87 +Content-Description: PGP/MIME Versions Identification
   10.88 +
   10.89 +Version: 1
   10.90 +
   10.91 +--Apple-Mail=_1B254AB0-33CA-4D63-940D-CF09C01C133C
   10.92 +Content-Transfer-Encoding: 7bit
   10.93 +Content-Disposition: inline;
   10.94 +	filename=encrypted.asc
   10.95 +Content-Type: application/octet-stream;
   10.96 +	name=encrypted.asc
   10.97 +Content-Description: OpenPGP encrypted message
   10.98 +
   10.99 +-----BEGIN PGP MESSAGE-----
  10.100 +
  10.101 +hQEMA4FHqvEumyRHAQf/SAvpcXlpZSFOCWvvOE23SoqczbHDqAfFJc0Sg1Zw22Vh
  10.102 +YLX0dSxEw809EautV0/3cdjtdLGzAzJuKvcyZMxU2CLledrk1X5qkxXVnLTm7mX1
  10.103 +1hNmUHVrOkiHX07pTMW1TTAHUzYiBu6DqTHHjf8Ia3bN2M33IRG3YIBI/zVC1SC0
  10.104 +t4NFIdzXfCTLH96xiNqN3pCGgg0A9iJTODzXnnUCESvEFjD613ANVeKalA6HtoeN
  10.105 +Uk6mhHapnvbbAyrlnBfE67bPm2zcjJHcMrnX3pCJ0+SICBAEpnY42onO4NmV/n6z
  10.106 +eL6Vpba8w/9rvNoF+WbBlmtcsXy26W/7qV6JMPrK7YUCDANBzApUMEk7awEP/2Kx
  10.107 +8CloZNP+Q+WwsBhI0muEDw+TnNS3koOD6JE2TM+gMST/4TckOtTGak4fhb0ZJS2q
  10.108 +yBUy6zs+Ru2xdl0hAuZQNYWDDJ0R4f56RPTsUlCgIb7NZAIuECnUPIEmXbpsDPSe
  10.109 +9uFipa5fWOFfUpLXyaTSJYtH3A59YpmZ9SIkMs3j5huBaFtNGE3khk+EQgj3AfJj
  10.110 +OJtMGKkU4Px/6ja5gpDGdlfMcs/tz5cl5AlxFbNh0Qe3wzOAcCbjdVmEQ+g6vgnG
  10.111 +YDqWOJh3TZ6NMDzedQn61bvNbL4hw77zGprsbjK8FhRayyomWmVVwLn/5n4DQh9R
  10.112 +hdo6Nn4yzBGJT81PnJREWSTnN2dzwOS8ig713c0fKpcanNKXQcSCA4Ldo6jvArIg
  10.113 +5JEj9s+kZwC8br9kdFGhieontpiAR0bDHni/eRfMUOiSNvrICkCkDY4afhrUlp0m
  10.114 +XdNgITejy+EeG6pm2Z55GbTe3jIZ8QbzzfZHCDZhUveNG7UIdIV2joluIUMWKyI7
  10.115 +OurpnHF52GMGvv63Fle+pHUKYMloW42MZUoqvumnBb/EsHdgwVsUlaw+vau1C38o
  10.116 +pGSGUTaCttBFLwPjtTLhY8Yy2MfjZmh5HdMqNLTt6B6gfX0AMHywYEp+xDuqS2d/
  10.117 +jfZZ2b9Bs1Z3AA5msSEh+8OJ2z9/3+WGkjYHs5bk0uoBJOF7p84WsEGwW8P7KeuK
  10.118 +nUhDaXLlZ3xG8bhO58CCJ4USMv/TnkO9e6jYLH6t7WJU6T5/ojBA6qdjN3eIQcqg
  10.119 +FrT+G2Y22gR/Glyr4+dEmfiOFlAEunFzKuiTKIdU5la1AMxI7NplLuqhBwb7I4iS
  10.120 +Ql1qK5h99GluFj4Euy1hJ0cvyZjExuFr5MD23lHzVMDRvgo+zdplAlGexNM1d6gU
  10.121 +gB5pAuiTvQ+JhHRL6TsSCMeSHZRMQQf/3lWlt3p8ZiTmKzLVc1OKmyi/CrL1W6fj
  10.122 +C+C4qQEYlc/TQ9Wdf3xpS6n9Lz52eE6TXXsmwMNHDE5GsOx4i2nTbJkOxwrSfrmy
  10.123 +qmQnjuf/ts5cebTA0LNaaYkWEQ/eO/O1wuZjUbl9WU4xbFSfg6owz/fSykVauJcJ
  10.124 +zFXUdiEIkFWb+5ZXU9d8dcLIpim9pOkGJqx8uxFrw8m9Kz17hv9ipTkKDsMA+ou3
  10.125 +Lj5fNJNzop1aerEnOpn0sZ/yi9S9nLGHq9Hc7IiUkeZ+VoF9HBEe0+oqW3C2kpD6
  10.126 +laSyuEx4BbPyM1hHRzZkYP4qXlR48iurGc/DR70jmRmgW2Q+1sESRoAmg+19ykr2
  10.127 +dYyPUzHWrHyJHsu+Fq+6WvdsmMvcpHyd2R+Uk4k0kdYZzqltcGZTEsWhhyAx46Vh
  10.128 +vRseLP9Cw+Iv4bydURcz+nu8fTc2pfRHmGu3zDYjxc3IN6HRZLAyNdHtQmV2oHGT
  10.129 +fBchXB4590dZ0S3OVBJi7mozPyqJcOTNetm5BBKVRdWSrErWa2EIJGW6npDUcQSb
  10.130 +viinTA4V0gTJGOh5eo0scNyzRjVQDI0HajovrSDG5jVdI4TSEjbY3FD2JrIdzQKy
  10.131 +wazRemgvBv43NyOwJeJ5Ze7EElGAuSM1AuPGCtNLTkwz9eV0a8yCU8DwVh/IKE0z
  10.132 +o4fXOWnQv9ZVClURsx6ZgbONEGvIMUEDzlcH8kaNp7lhh5j56O6OmhEMhhfFpksi
  10.133 +Yb4/N5Nzn/p7xE7eTIRwrr2m8Pm38cg/WVJxTwe7XnwWq6zVqnord8sauPcVoI64
  10.134 +rv3xVS5AsB/QVitmQANKD/miwlEfEiBi5rPQAk8gtilqCcOPh6M4Yn/+WN+hSn1l
  10.135 +gjZXgLQwpNMF5yGQUNaMaRijFxZbzI3vfJuMMJ0sjRXKLQeoN1B902nXuMpuiqtM
  10.136 +seOA6hscZ9i62eRXDK+mUwBijTLxDwJ/Z2O06dey/22eoTOFG+oqWb+BQfy649xC
  10.137 +M3lzeipIKcW/5vgChKoTOrV0UN+18P3qiKILI3jTgPunU7fbxWlMnfCbNw0ai9lD
  10.138 ++hpw+YT+h5cwF9cUPpdBUhMAnYp+zqFmC98BXDAmgwUW8Fghp2T7HiHNdn5I5um2
  10.139 +wJv6+AInmMu+2CZpPSBgHYBAQ3Wnccl8DOLVTlJIR1IvQDSFiyzTSbZL733MyPMw
  10.140 +P5jj4laA+lIewmpu2+cCsNB5G2A4XH9KecaqynSNauCgCy6AYubCarsXOoy1LgkF
  10.141 +8Y9xLV2SIgqDFGrFBQ7AyZxUoxVjUQVY3Akb8u5ORdb66kMZKtVVN3OZ/BHFhpUO
  10.142 +OAOH83+/31PHOm6FY+AyFJd6AESvXL/+49y6hyrH2+WRpUuRj5xOWlD018h83uqH
  10.143 +9zTyqQW2qcIuHlIYT/hSr6zXtg4thTmqYsMKqMYAxlEqoq6h2G3Bip4+w7twwBJS
  10.144 +lhRD5RafGUk5kXk/9sCwR424GFtCp/DkmAShB3d118hvA8rDU0vzSBD1D09GTKCi
  10.145 +AE1yWX2sOlM9W/yUnCa88llBOKRKU07SdumrO9cPnG9dYPH2tqnoHKm+/GZ7rYGY
  10.146 +30n6MtzgjR4nOmkyZg==
  10.147 +=gCQj
  10.148 +-----END PGP MESSAGE-----
  10.149 +
  10.150 +--Apple-Mail=_1B254AB0-33CA-4D63-940D-CF09C01C133C--
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/test/test_mails/apple_mail_TC_signed_encrypted.eml	Wed Jan 18 15:02:25 2017 +0100
    11.3 @@ -0,0 +1,136 @@
    11.4 +Return-Path: <pep.test.apple@pep-project.org>
    11.5 +X-Original-To: krista@gnunet.org
    11.6 +Delivered-To: krista@gnunet.org
    11.7 +Received: from vmmailrelay1.informatik.tu-muenchen.de (mailrelay1.informatik.tu-muenchen.de [131.159.254.14])
    11.8 +	by sam.net.in.tum.de (Postfix) with ESMTP id 99A681C0087
    11.9 +	for <krista@gnunet.org>; Sun, 15 Jan 2017 21:17:04 +0100 (CET)
   11.10 +Received: from vmmailrelay1.informatik.tu-muenchen.de (localhost [127.0.0.1])
   11.11 +	by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id C2EDE1C0379
   11.12 +	for <krista@gnunet.org>; Sun, 15 Jan 2017 21:17:04 +0100 (CET)
   11.13 +Received: from vmmaildmz2.informatik.tu-muenchen.de (vmmaildmz2.informatik.tu-muenchen.de [131.159.0.88])
   11.14 +	by vmmailrelay1.informatik.tu-muenchen.de (Postfix) with ESMTP id B638D1C0376
   11.15 +	for <krista@gnunet.org>; Sun, 15 Jan 2017 21:17:04 +0100 (CET)
   11.16 +Received: by vmmaildmz2.informatik.tu-muenchen.de (Postfix, from userid 109)
   11.17 +	id B3A011C2ADC; Sun, 15 Jan 2017 21:17:04 +0100 (CET)
   11.18 +X-Spam-Checker-Version: SpamAssassin 3.4.0-tuminfo_1 (2014-02-07) on
   11.19 +	vmmaildmz2.informatik.tu-muenchen.de
   11.20 +X-Spam-Level: 
   11.21 +X-Spam-Status: No, score=-3.6 required=7.0 tests=BAYES_00,ENCRYPTED_MESSAGE,
   11.22 +	RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,TVD_RCVD_SPACE_BRACKET,
   11.23 +	UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.0-tuminfo_1
   11.24 +Received: from vmmaildmz2.informatik.tu-muenchen.de (localhost [127.0.0.1])
   11.25 +	by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTP id 3F7601C2ADB
   11.26 +	for <krista@gnunet.org>; Sun, 15 Jan 2017 21:17:03 +0100 (CET)
   11.27 +Received: from mi4-p00-ob.smtp.rzone.de (mi4-p00-ob.smtp.rzone.de [81.169.146.147])
   11.28 +	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
   11.29 +	(No client certificate requested)
   11.30 +	by vmmaildmz2.informatik.tu-muenchen.de (Postfix) with ESMTPS id 2F4641C2AD9
   11.31 +	for <krista@gnunet.org>; Sun, 15 Jan 2017 21:17:03 +0100 (CET)
   11.32 +X-RZG-FWD-BY: pep.test.recip@kgrothoff.org
   11.33 +Received: from mailin.rzone.de ([unix socket])
   11.34 +	by mailin.rzone.de (RZmta 39.11) with LMTPA;
   11.35 +	Sun, 15 Jan 2017 21:16:39 +0100 (CET)
   11.36 +Authentication-Results: strato.com 1;
   11.37 +	spf=none
   11.38 +		smtp.mailfrom="pep.test.apple@pep-project.org";
   11.39 +	dkim=none;
   11.40 +	domainkeys=none;
   11.41 +	dkim-adsp=none
   11.42 +		header.from="pep.test.apple@pep-project.org"
   11.43 +X-Strato-MessageType: email
   11.44 +X-RZG-CLASS-ID: mi00
   11.45 +Received-SPF: none
   11.46 +	client-ip=94.231.81.244;
   11.47 +	helo="dragon.pibit.ch";
   11.48 +	envelope-from="pep.test.apple@pep-project.org";
   11.49 +	receiver=smtpin.rzone.de;
   11.50 +	identity=mailfrom;
   11.51 +Received: from dragon.pibit.ch ([94.231.81.244])
   11.52 +	by smtpin.rzone.de (RZmta 39.11 OK)
   11.53 +	with ESMTPS id T03200t0FKGb4U5
   11.54 +	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA))
   11.55 +	(Client did not present a certificate)
   11.56 +	for <pep.test.recip@kgrothoff.org>;
   11.57 +	Sun, 15 Jan 2017 21:16:37 +0100 (CET)
   11.58 +Received: from localhost (localhost [127.0.0.1])
   11.59 +	by dragon.pibit.ch (Postfix) with ESMTP id DFD49171C05B
   11.60 +	for <pep.test.recip@kgrothoff.org>; Sun, 15 Jan 2017 21:16:36 +0100 (CET)
   11.61 +Received: from dragon.pibit.ch ([127.0.0.1])
   11.62 +	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
   11.63 +	with ESMTP id wed9f1DQX-4P for <pep.test.recip@kgrothoff.org>;
   11.64 +	Sun, 15 Jan 2017 21:16:35 +0100 (CET)
   11.65 +Received: from kristas-mac-mini.fritz.box (ip5f5840e9.dynamic.kabel-deutschland.de [95.88.64.233])
   11.66 +	by dragon.pibit.ch (Postfix) with ESMTPSA id 01B28171C050
   11.67 +	for <pep.test.recip@kgrothoff.org>; Sun, 15 Jan 2017 21:16:34 +0100 (CET)
   11.68 +From: pEp Apple Test <pep.test.apple@pep-project.org>
   11.69 +Content-Type: multipart/encrypted; boundary="Apple-Mail=_E24E0E59-8B7E-4E16-A60C-41ED0F78EE59"; protocol="application/pgp-encrypted";
   11.70 +Content-Transfer-Encoding: 7bit
   11.71 +Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
   11.72 +Subject: Test Case Mail - Signed and Encrypted
   11.73 +Date: Sun, 15 Jan 2017 21:16:34 +0100
   11.74 +Message-Id: <7DF91E6B-7BB2-498C-968D-DE2BFDC5D86C@pep-project.org>
   11.75 +Content-Description: OpenPGP encrypted message
   11.76 +To: pep.test.recip@kgrothoff.org
   11.77 +X-Mailer: Apple Mail (2.3124)
   11.78 +
   11.79 +This is an OpenPGP/MIME encrypted message (RFC 2440 and 3156)
   11.80 +--Apple-Mail=_E24E0E59-8B7E-4E16-A60C-41ED0F78EE59
   11.81 +Content-Transfer-Encoding: 7bit
   11.82 +Content-Type: application/pgp-encrypted
   11.83 +Content-Description: PGP/MIME Versions Identification
   11.84 +
   11.85 +Version: 1
   11.86 +
   11.87 +--Apple-Mail=_E24E0E59-8B7E-4E16-A60C-41ED0F78EE59
   11.88 +Content-Transfer-Encoding: 7bit
   11.89 +Content-Disposition: inline;
   11.90 +	filename=encrypted.asc
   11.91 +Content-Type: application/octet-stream;
   11.92 +	name=encrypted.asc
   11.93 +Content-Description: OpenPGP encrypted message
   11.94 +
   11.95 +-----BEGIN PGP MESSAGE-----
   11.96 +
   11.97 +hQEMA4FHqvEumyRHAQf/ekPwaQB+fOZbLMZBT3Tgmyww6sK/HDhccvO1wB5Ocewu
   11.98 +OI10M4PBw6V+6AVFmmVtg3Jgd/bSSIZqWXjzT8Z/pfvOxqcBTGou+K/gBlkrz/5P
   11.99 +XTqHuPna46ieA7k9sXEv6OY4r3uahuFJPJ8oE7I6aQEydYpVCvCWsdpUA3wh8SI5
  11.100 +0IAZrXXdb/0PVyQXF7dPG5n7ooHgY9R1kLQDSiW6YxPpoSaMe5NidHJgWeJWK9PS
  11.101 +l26Q42wEHRJX7cdOyze9ufWMfjUJkmIJJEjNxuvW+Liuy7Giqi3nXO8f+PeIAB3+
  11.102 +H5inPmjwVvG45lfnViCo/zrtcYPJR7mSGz7zMnxx6IUCDANBzApUMEk7awEP/0Px
  11.103 +Gr4nRz92j1/MyODz0rt1CHqzgLRiadG2SxC/uEYawSNfAApK0/XOXWDwAQAfTGVw
  11.104 +L2IW3Csv1gEgPezDnaEwDdyYUgbaa6afy7XCf/GLFvn5bCrdfTrhBwCjhZQaJmuO
  11.105 +ovg0KSJuj6OUq415jweBT86HY9qwnBq5Il1NKOixcA6ZbBVz+/KQoRL3EsS0AluR
  11.106 +LGfPYMG1dd1E+ZYd9HfxmeOkII+w9m+JdjUSZANJztfJmcTw8+Fitcd3RuLLk5pT
  11.107 +KyauDVAV9qzVKo8GOGcUE7AeaAi1YrtA4WTkcm/5J74P9tYQlKOrFUgi4rFjsiNW
  11.108 +pEihdZwfrH4MrB5jDLM/AY1cPu3f6vQrwetTey3STJc01w9irl+lklfS78WK6gB+
  11.109 +UI9eo9nF/CRBWXp/SQXc8LbM+qIWWFY/6hEYWiedvhIGGUkU2f+JnenZrbgIcU11
  11.110 +LsMhD8lgIDQjqIH5PglSV4epv7tBgVSVfbyXB4Ers3doiz0qR140AaFNdXXj8TJQ
  11.111 +CcHJCU6sNxSkwWKjkPAIUTDD762Ve2fXXFKO0wfhImqS+0PdZUs9MjmeUxTk4Cdl
  11.112 +JETuyVcB8g5plUYBNEvHK3U8S3zHm3QjuJkacF5/oSGKw9+pHGyUB1aKnnSwXeJd
  11.113 +EbRzqz6kdqZNyif48bMHoc8HM2x1T15hlGDUVy2X0uoBhdOafywtPcslKx87DyCb
  11.114 +RWw1XqNc7Y7h69KXaN2zb8ea/Ai9ppduzFxY6UqToO7UBHRM2CWDMiypH6VcWuG+
  11.115 +i2UUplLGk48GKh0I6LAKgLAvyrTZAUh47YzOEumHpaCDbj+wV8D1JK52+B7XAaKc
  11.116 +9Ygs7BJMM6vhjNnloCO5yQQ3ArPUaqRzI1zAAMI1Mr7bwg60bjoklW8tqPUUDJS5
  11.117 +Qng/Vc5zKwuMIgf0XUfjoSXH94PeZLqboOTDd9R/u5+Ey9nEnJ7vzLB+sEcw6KbQ
  11.118 +7QEAKWdsgjH6pEEvrR18stjLoJXx+ghj+bHhlfnQEDTt/G3YBr818xKsV/fQqucT
  11.119 +EwCBU0bVN1/UnRtZtniFsPtM9rSXtHJscC5cb0BytSfwhQAR7pBgssWxvsdXjKev
  11.120 +QZ/Px1jU2AEmFbwZJwEyYJCWDxdqwBYR3xf5RfLrI9FUENZZ+ZmcwmLNxjAo8iti
  11.121 +XxBZkNGgDXAHLcrPP2E14kWuN27VESIplP4c6APOTtqJH3ZSLi5b/CVURxqRPTbC
  11.122 +sAIxk0NgtApnznqN5YG3i4DXR9IMSHw010gr08dMAG8S/i4IyGYVHXSv5Uwr1yOM
  11.123 +QeWsbUvr9odFo5cSNpZue3P8qZZ1WCG1t7Yd9FOTlp99YFuYbvx9yDG3TucUdI9w
  11.124 +dNkDqqYfGbFPBQsjH64kWQaOLRoEs/O8pL2oP1c/9AECYoKM8j7J7SNDxB4eCuIc
  11.125 +ul6cOHNz4SP2hy26Kyq/hbVGeUYovkA2JPe7WE290iA7309DwqX8rMquHro8mNB6
  11.126 +FoY3IuD6b9EOwDZxp7Lba+RaWvIKhsXNUc/7xI+HLopWxMGRYeTQgIDQAFNmYk1l
  11.127 +x92aEfc8cWc0lz2q+zxbViOHKcbTJ/1Y0lMPrjI5idycJ365FsBv9byOl+6adF7B
  11.128 +qOK6swSJUGpAkrWFh8y9EZwgun0Y4Oynp/NzCCrs5CJ1j1FrVqHkXMiVxVL5eW9D
  11.129 +ciF1UsgPxXe9NGAKnxunpzypdDaVJnvy61LZt/5LwxR+AcWqWwWkkRuu/bWDkJZc
  11.130 +jlj1UVFYVHQkapLH9W+rQcC5Ymx+poVmystP+DQcMBZKSFtWuBtw1lnXjrd9bDqF
  11.131 +/YHstlkfvM9clr0S8zM8auCtwHRdpMBONgXihc5dcyyE4nPAla/CLZhXzsrP15In
  11.132 +2cS8esDC1/b6zPoNJ409/wUWqKhIvyQtbD6QuRDt1Avzgnlsm6oq6gZKPz98efUQ
  11.133 +VK7ZCLQeLbFQNvwVQBxtgFXFxLlJpOYQGZxHOeX3L2b2KFy1gIdVi++R/D/Hn1wc
  11.134 +X+9i/uZrTc71kV6emBM0oWYIPckZ9Lg5CvZ880eVbQRtZTedHj7QYJ2jVwH7miFV
  11.135 +DM1uL7vKO5ItcbrPLA==
  11.136 +=tLZ0
  11.137 +-----END PGP MESSAGE-----
  11.138 +
  11.139 +--Apple-Mail=_E24E0E59-8B7E-4E16-A60C-41ED0F78EE59--