
13 changed files with 164 additions and 50 deletions
@ -0,0 +1,78 @@ |
|||
#include <iostream> |
|||
#include <fstream> |
|||
#include <sstream> |
|||
#include <unistd.h> |
|||
#include <assert.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <sys/param.h> |
|||
|
|||
#include "Adapter.hh" |
|||
#include "passphrase_cache.hh" |
|||
#include "status_to_string.hh" |
|||
|
|||
#include <pEp/message_api.h> |
|||
#include <pEp/keymanagement.h> |
|||
#include <pEp/key_reset.h> |
|||
|
|||
using namespace pEp; |
|||
using namespace pEp::Adapter; |
|||
using namespace std; |
|||
|
|||
void import_key_from_file(string filename) |
|||
{ |
|||
ifstream f(filename, ifstream::in); |
|||
string key{istreambuf_iterator<char>(f), istreambuf_iterator<char>()}; |
|||
::identity_list *il = NULL; |
|||
PEP_STATUS status = ::import_key(session(), key.c_str(), key.length(), &il); |
|||
assert(status == PEP_KEY_IMPORTED); |
|||
::free_identity_list(il); |
|||
} |
|||
|
|||
void test() |
|||
{ |
|||
passphrase_cache.add("erwin"); |
|||
passphrase_cache.add("cathy"); |
|||
passphrase_cache.add("bob"); |
|||
|
|||
const char* bob_filename = ENGINE_TEST "/test_keys/bob-primary-with-password-bob-subkey-without.pgp"; |
|||
const char* bob_fpr = "5C76378A62B04CF3F41BEC8D4940FC9FA1878736"; |
|||
|
|||
const char* erwin_filename = ENGINE_TEST "/test_keys/erwin_normal_encrypted.pgp"; |
|||
const char* erwin_fpr = "CBA968BC01FCEB89F04CCF155C5E9E3F0420A570"; |
|||
|
|||
import_key_from_file(bob_filename); |
|||
import_key_from_file(erwin_filename); |
|||
|
|||
pEp_identity* bob = ::new_identity("bob@example.org", bob_fpr, "BOB", "Bob Dog"); |
|||
PEP_STATUS status = ::set_own_key(session(), bob, bob_fpr); |
|||
assert(status == PEP_STATUS_OK); |
|||
|
|||
pEp_identity* erwin = ::new_identity("erwin@example.org", erwin_fpr, "BOB", "Bob is Erwin"); |
|||
status = ::set_own_key(session(), erwin, erwin_fpr); |
|||
assert(status == PEP_STATUS_OK); |
|||
|
|||
status = ::key_reset_all_own_keys(session()); |
|||
assert(status == PEP_STATUS_OK); |
|||
|
|||
::free_identity(bob); |
|||
::free_identity(erwin); |
|||
|
|||
session(Adapter::release); |
|||
} |
|||
|
|||
int main() |
|||
{ |
|||
char path[MAXPATHLEN+1]; |
|||
const char *templ = "/tmp/test_ensure_passphrase.XXXXXXXXXXXX"; |
|||
strcpy(path, templ); |
|||
char *tmpdir = mkdtemp(path); |
|||
assert(tmpdir); |
|||
chdir(tmpdir); |
|||
setenv("HOME", path, 1); |
|||
cerr << "test directory: " << path << endl; |
|||
|
|||
test(); |
|||
return 0; |
|||
} |
|||
|
Loading…
Reference in new issue