test/message_api_test.cc
author Edouard Tisserant
Wed, 29 Jun 2016 12:10:15 +0200
changeset 771 c04f54a73ef8
parent 759 d7efa7b697bd
parent 756 8a06c2465017
child 781 21d47c8ae0ae
permissions -rw-r--r--
merged 0b_attachment branch
Edouard@345
     1
#include <stdlib.h>
Edouard@345
     2
#include <string.h>
vb@165
     3
#include "platform.h"
vb@39
     4
#include <iostream>
vb@165
     5
#include <fstream>
vb@39
     6
#include <assert.h>
vb@221
     7
#include "mime.h"
vb@39
     8
#include "message_api.h"
vb@39
     9
vb@39
    10
using namespace std;
vb@39
    11
vb@39
    12
int main() {
vb@53
    13
    cout << "\n*** message_api_test ***\n\n";
vb@51
    14
vb@39
    15
    PEP_SESSION session;
vb@39
    16
    
vb@39
    17
    cout << "calling init()\n";
roker@759
    18
    PEP_STATUS status1 = init(&session);
vb@39
    19
    assert(status1 == PEP_STATUS_OK);
vb@39
    20
    assert(session);
vb@39
    21
    cout << "init() completed.\n";
vb@39
    22
vb@53
    23
    // message_api test code
vb@53
    24
vb@40
    25
    cout << "creating message…\n";
vb@678
    26
    pEp_identity * me2 = new_identity("outlooktest@dingens.org", NULL, PEP_OWN_USERID, "Outlook Test");
Edouard@745
    27
    // pEp_identity * me2 = new_identity("test@nokey.plop", NULL, PEP_OWN_USERID, "Test no key");
vb@112
    28
    me2->me = true;
vb@112
    29
    identity_list *to2 = new_identity_list(new_identity("vb@dingens.org", NULL, "42", "Volker Birk"));
Edouard@745
    30
    // identity_list *to2 = new_identity_list(new_identity("still@nokey.blup", NULL, "42", "Still no key"));
vb@306
    31
    message *msg2 = new_message(PEP_dir_outgoing);
vb@112
    32
    assert(msg2);
vb@306
    33
    msg2->from = me2;
vb@306
    34
    msg2->to = to2;
vb@306
    35
    msg2->shortmsg = strdup("hello, world");
Edouard@747
    36
    msg2->attachments = new_bloblist(NULL, 0, "application/octet-stream", NULL);
vb@40
    37
    cout << "message created.\n";
vb@39
    38
roker@759
    39
    char *text2 = nullptr;
vb@113
    40
    PEP_STATUS status2 = mime_encode_message(msg2, false, &text2);
vb@112
    41
    assert(status2 == PEP_STATUS_OK);
vb@112
    42
    assert(text2);
vb@112
    43
vb@112
    44
    cout << "decrypted:\n\n";
vb@112
    45
    cout << text2 << "\n";
vb@112
    46
vb@112
    47
    free(text2);
vb@112
    48
vb@48
    49
    cout << "encrypting message as MIME multipart…\n";
roker@759
    50
    message *enc_msg2 = nullptr;
vb@40
    51
    cout << "calling encrypt_message()\n";
vb@113
    52
    status2 = encrypt_message(session, msg2, NULL, &enc_msg2, PEP_enc_PGP_MIME);
roker@759
    53
    cout << "encrypt_message() returns " << status2 << '.' << endl;
vb@112
    54
    assert(status2 == PEP_STATUS_OK);
vb@112
    55
    assert(enc_msg2);
vb@40
    56
    cout << "message encrypted.\n";
vb@48
    57
    
vb@113
    58
    status2 = mime_encode_message(enc_msg2, false, &text2);
vb@112
    59
    assert(status2 == PEP_STATUS_OK);
vb@112
    60
    assert(text2);
vb@112
    61
vb@112
    62
    cout << "encrypted:\n\n";
vb@112
    63
    cout << text2 << "\n";
vb@112
    64
roker@759
    65
    message *msg3 = nullptr;
vb@281
    66
    PEP_STATUS status3 = mime_decode_message(text2, strlen(text2), &msg3);
vb@116
    67
    assert(status3 == PEP_STATUS_OK);
roker@759
    68
    const string string3 = text2;
Edouard@745
    69
    //free(text2);
vb@165
    70
vb@165
    71
    unlink("msg4.asc");
vb@165
    72
    ofstream outFile3("msg4.asc");
vb@165
    73
    outFile3.write(string3.c_str(), string3.size());
vb@165
    74
    outFile3.close();
vb@71
    75
roker@759
    76
    message *msg4 = nullptr;
roker@759
    77
    stringlist_t *keylist4 = nullptr;
vb@251
    78
    PEP_color color;
Edouard@728
    79
    PEP_decrypt_flags_t flags;
Edouard@728
    80
    
Edouard@728
    81
    PEP_STATUS status4 = decrypt_message(session, enc_msg2, &msg4, &keylist4, &color, &flags);
vb@267
    82
    assert(status4 == PEP_STATUS_OK);
vb@166
    83
    assert(msg4);
vb@241
    84
    assert(keylist4);
vb@267
    85
    assert(color);
vb@241
    86
vb@241
    87
    cout << "keys used:";
roker@759
    88
    for (stringlist_t* kl4 = keylist4; kl4 && kl4->value; kl4 = kl4->next)
roker@759
    89
    {
vb@241
    90
        cout << " " << kl4->value;
roker@759
    91
    }
vb@241
    92
    cout << "\n\n";
vb@241
    93
vb@241
    94
    free_stringlist(keylist4);
vb@166
    95
Edouard@745
    96
    cout << "opening msg_no_key.asc for reading\n";
Edouard@745
    97
    ifstream inFile3 ("msg_no_key.asc");
Edouard@745
    98
    assert(inFile3.is_open());
Edouard@745
    99
Edouard@745
   100
    string text3;
Edouard@745
   101
Edouard@745
   102
    cout << "reading msg_no_key.asc sample\n";
Edouard@745
   103
    while (!inFile3.eof()) {
Edouard@745
   104
        static string line;
Edouard@745
   105
        getline(inFile3, line);
Edouard@745
   106
        text3 += line + "\r\n";
Edouard@745
   107
    }
Edouard@745
   108
    inFile3.close();
Edouard@745
   109
roker@759
   110
    message *msg5 = nullptr;
Edouard@745
   111
    PEP_STATUS status5 = mime_decode_message(text3.c_str(), text3.length(), &msg5);
Edouard@745
   112
    assert(status5 == PEP_STATUS_OK);
Edouard@745
   113
roker@759
   114
    message *msg6 = nullptr;
roker@759
   115
    stringlist_t *keylist5 = nullptr;
Edouard@745
   116
    PEP_color color2;
Edouard@746
   117
    PEP_decrypt_flags_t flags2;
Edouard@746
   118
    PEP_STATUS status6 = decrypt_message(session, msg5, &msg6, &keylist5, &color2, &flags2);
Edouard@745
   119
    assert(status6 == PEP_DECRYPT_NO_KEY);
Edouard@745
   120
    assert(msg6 == NULL);
Edouard@745
   121
    assert(keylist5 == NULL);
Edouard@745
   122
    assert(color2 == PEP_rating_have_no_key);
Edouard@745
   123
    cout << "color :" << color2 << "\n";
Edouard@745
   124
    free_stringlist(keylist5);
Edouard@745
   125
vb@40
   126
    cout << "freeing messages…\n";
vb@166
   127
    free_message(msg4);
vb@116
   128
    free_message(msg3);
vb@112
   129
    free_message(msg2);
vb@112
   130
    free_message(enc_msg2);
Edouard@745
   131
    free_message(msg6);
Edouard@745
   132
    free_message(msg5);
vb@40
   133
    cout << "done.\n";
vb@39
   134
vb@39
   135
    cout << "calling release()\n";
vb@39
   136
    release(session);
vb@39
   137
    return 0;
vb@39
   138
}