@ -858,10 +858,10 @@ TEST_F(DefaultFromEmailTest, check_unencrypted_key_import_bob) {
// B. Test failures
// Failure case 1) No key attached
TEST_F ( DefaultFromEmailTest , check_unencrypted_key_import_ carol _no_key) {
TEST_F ( DefaultFromEmailTest , check_unencrypted_key_import_ bob_no_pep _no_key) {
}
TEST_F ( DefaultFromEmailTest , check_unencrypted_key_import_ john _no_key) {
TEST_F ( DefaultFromEmailTest , check_unencrypted_key_import_ sylvia_no_pep _no_key) {
}
TEST_F ( DefaultFromEmailTest , check_unencrypted_key_import_sylvia_no_key ) {
@ -944,10 +944,84 @@ TEST_F(DefaultFromEmailTest, check_unencrypted_key_import_bob_no_key) {
// A. Test successful cases
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_carol ) {
// Bob is a known OpenPGP partner - we use the "wrong filename" version because OpenPGP doesn't use our conventions
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_no_pep ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_1_0_wrong_key_filename_no_pEp.eml " ;
message * infile = NULL ;
status = vanilla_read_file_and_decrypt ( session , & infile , filename ) ;
ASSERT_OK ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_OpenPGP_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_john ) {
// Sylvia is an unknown OpenPGP partner
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_no_pep ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
pEp_identity * recip = NULL ;
// Make sure identity doesn't exist - do NOT use update_identity, which will create it in the DB
PEP_STATUS status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// And also not in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_1_0_wrong_key_filename_no_pEp.eml " ;
message * infile = NULL ;
status = vanilla_read_file_and_decrypt ( session , & infile , filename ) ;
ASSERT_OK ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_OpenPGP_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_2_2 ) {
@ -1184,6 +1258,7 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_bob_2_0) {
free_identity ( recip ) ;
}
// We use the "wrong" filename version on purpose to ensure we aren't relying on 2.2 changes
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_1_0 ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
@ -1198,7 +1273,7 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_sylvia_1_0) {
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_1_0 .eml" ;
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_1_0 _wrong_key_filename_ModifiedVersion .eml" ;
message * infile = NULL ;
status = vanilla_read_file_and_decrypt ( session , & infile , filename ) ;
ASSERT_OK ;
@ -1219,6 +1294,7 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_sylvia_1_0) {
free_identity ( recip ) ;
}
// We use the "wrong" filename version on purpose to ensure we aren't relying on 2.2 changes
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_1_0 ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
@ -1241,7 +1317,7 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_bob_1_0) {
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_1_0 .eml" ;
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_1_0 _wrong_key_filename_ModifiedVersion .eml" ;
message * infile = NULL ;
status = vanilla_read_file_and_decrypt ( session , & infile , filename ) ;
ASSERT_OK ;
@ -1262,14 +1338,88 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_bob_1_0) {
free_identity ( recip ) ;
}
// B. Test failures
// Failure case 1) No key attached
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_carol_no_key ) {
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_no_pep_no_key ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
pEp_identity * recip = NULL ;
// Make sure identity doesn't exist - do NOT use update_identity, which will create it in the DB
PEP_STATUS status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// And also not in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_1_0_NoKey_no_pEp.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_EQ ( status , PEP_DECRYPTED ) ;
ASSERT_EQ ( rating , PEP_rating_unreliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NULL ( recip - > fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_key_not_found ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_john_no_key ) {
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_no_pep_no_key ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_1_0_NoKey_no_pEp.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_EQ ( status , PEP_DECRYPTED ) ;
ASSERT_EQ ( rating , PEP_rating_unreliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NULL ( recip - > fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_key_not_found ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_2_2_no_key ) {
@ -1593,10 +1743,51 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_bob_1_0_no_key) {
}
// Failure case 2) Wrong key attached
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_carol_wrong_sender_key_attached ) {
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_no_pep_wrong_sender_key_attached ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_1_0_wrong_sender_key_attached_no_pEp.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_EQ ( status , PEP_DECRYPTED ) ;
ASSERT_EQ ( rating , PEP_rating_unreliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NULL ( recip - > fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_key_not_found ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_john_wrong_sender_key_attached ) {
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_ sylvia_no_pep _wrong_sender_key_attached) {
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_2_2_wrong_sender_key_attached ) {
@ -2088,4 +2279,334 @@ TEST_F(DefaultFromEmailTest, check_encrypted_key_import_bob_2_0_wrong_keyfilenam
free_identity ( recip ) ;
}
// Note: 1.0 only looks at the number of keys attached, so there's no concept of "wrong sender key"
// Note: 1.0 only looks at the number of keys attached, so there's no concept of "wrong sender key"
// C. Cases which may fail or succeed based on source
// Two keys attached
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_carol_two_keys ) {
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_john_two_keys ) {
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_2_2_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
pEp_identity * recip = NULL ;
// Make sure identity doesn't exist - do NOT use update_identity, which will create it in the DB
PEP_STATUS status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// And also not in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_2_2_TwoKeys.eml " ;
message * infile = NULL ;
status = vanilla_read_file_and_decrypt ( session , & infile , filename ) ;
ASSERT_OK ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_pEp_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_2_2_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_2_2_TwoKeys.eml " ;
message * infile = NULL ;
status = vanilla_read_file_and_decrypt ( session , & infile , filename ) ;
ASSERT_OK ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_pEp_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_2_1_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
pEp_identity * recip = NULL ;
// Make sure identity doesn't exist - do NOT use update_identity, which will create it in the DB
PEP_STATUS status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// And also not in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_2_1_TwoKeys.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_OK ;
ASSERT_EQ ( rating , PEP_rating_reliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_pEp_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_2_1_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_2_1_TwoKeys.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_OK ;
ASSERT_EQ ( rating , PEP_rating_reliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_pEp_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_2_0_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
pEp_identity * recip = NULL ;
// Make sure identity doesn't exist - do NOT use update_identity, which will create it in the DB
PEP_STATUS status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// And also not in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_2_0_TwoKeys.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_OK ;
ASSERT_EQ ( rating , PEP_rating_reliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NOTNULL ( recip - > fpr ) ;
ASSERT_STREQ ( recip - > fpr , sender_info . fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_pEp_unconfirmed ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_2_0_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_2_0_TwoKeys.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_OK ;
ASSERT_EQ ( rating , PEP_rating_reliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NULL ( recip - > fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_key_not_found ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_sylvia_1_0_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : SYLVIA ] ;
pEp_identity * recip = NULL ;
// Make sure identity doesn't exist - do NOT use update_identity, which will create it in the DB
PEP_STATUS status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// And also not in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now have a blank slate. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2SylviaToAlice_1_0_TwoKeys.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_OK ;
ASSERT_EQ ( rating , PEP_rating_reliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NULL ( recip - > fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_key_not_found ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}
TEST_F ( DefaultFromEmailTest , check_encrypted_key_import_bob_1_0_two_keys ) {
pEp_identity * alice = TestUtilsPreset : : generateAndSetPrivateIdentity ( session , TestUtilsPreset : : ALICE ) ;
const TestUtilsPreset : : IdentityInfo & sender_info = TestUtilsPreset : : presets [ TestUtilsPreset : : BOB ] ;
// We need recip to exist in DB without a known key.
pEp_identity * recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
PEP_STATUS status = set_identity ( session , recip ) ;
ASSERT_OK ;
// Make sure identity exists
free_identity ( recip ) ;
recip = NULL ;
status = get_identity ( session , sender_info . email , sender_info . user_id , & recip ) ;
ASSERT_OK ;
free_identity ( recip ) ;
recip = NULL ;
// And *not* in TOFU form
string TOFU = string ( " TOFU_ " ) + sender_info . email ;
status = get_identity ( session , sender_info . email , TOFU . c_str ( ) , & recip ) ;
ASSERT_EQ ( status , PEP_CANNOT_FIND_IDENTITY ) ;
// Ok, we now the desired state. Run the import mail fun.
const char * filename = " test_mails/CanonicalFrom2.2BobToAlice_1_0_TwoKeys.eml " ;
message * infile = NULL ;
PEP_rating rating = PEP_rating_undefined ;
status = vanilla_read_file_and_decrypt_with_rating ( session , & infile , filename , & rating ) ;
ASSERT_OK ;
ASSERT_EQ ( rating , PEP_rating_reliable ) ;
// Ensure we now have a default key for recip - NOTE: IF THE NAME IS NULL OR DOES NOT MATCH THE TOFU INPUT NAME,
// WE WILL GET NO KEY. THIS IS APPARENTLY BY DESIGN.
//
// I did ask. Often. ;)
recip = new_identity ( sender_info . email , NULL , sender_info . user_id , sender_info . name ) ;
ASSERT_NOTNULL ( recip ) ;
status = update_identity ( session , recip ) ;
ASSERT_NULL ( recip - > fpr ) ;
ASSERT_EQ ( recip - > comm_type , PEP_ct_key_not_found ) ;
free_message ( infile ) ;
free_identity ( alice ) ;
free_identity ( recip ) ;
}