summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--auto_tests/encryptsave_test.c33
-rw-r--r--toxencryptsave/toxencryptsave.c2
2 files changed, 34 insertions, 1 deletions
diff --git a/auto_tests/encryptsave_test.c b/auto_tests/encryptsave_test.c
index b335cbe1..85952392 100644
--- a/auto_tests/encryptsave_test.c
+++ b/auto_tests/encryptsave_test.c
@@ -116,12 +116,45 @@ START_TEST(test_save_friend)
116} 116}
117END_TEST 117END_TEST
118 118
119START_TEST(test_keys)
120{
121 uint8_t key[tox_pass_key_length()];
122 tox_derive_key_from_pass("123qweasdzxc", 12, key);
123 uint8_t* string = "No Patrick, mayonnaise is not an instrument."; // 44
124
125 uint8_t encrypted[44+tox_pass_encryption_extra_length()];
126 int sz = tox_pass_key_encrypt(string, 44, key, encrypted);
127
128 uint8_t encrypted2[44+tox_pass_encryption_extra_length()];
129 int sz2 = tox_pass_encrypt(string, 44, "123qweasdzxc", 12, encrypted2);
130
131 ck_assert_msg(sz == sz2, "an encryption failed");
132
133 uint8_t out1[44+tox_pass_encryption_extra_length()];
134 uint8_t out2[44+tox_pass_encryption_extra_length()];
135
136 sz = tox_pass_key_decrypt(encrypted, 44+tox_pass_encryption_extra_length(), key, out1);
137 ck_assert_msg(sz == 44, "sz isn't right");
138 ck_assert_msg(memcmp(out1, string, 44) == 0, "decryption 1 failed");
139
140 sz2 = tox_pass_decrypt(encrypted2, 44+tox_pass_encryption_extra_length(), "123qweasdzxc", 12, out2);
141 ck_assert_msg(sz2 == 44, "sz2 isn't right");
142 ck_assert_msg(memcmp(out2, string, 44) == 0, "decryption 2 failed");
143
144 // test that pass_decrypt can decrypt things from pass_key_encrypt
145 sz = tox_pass_decrypt(encrypted, 44+tox_pass_encryption_extra_length(), "123qweasdzxc", 12, out1);
146 ck_assert_msg(sz == 44, "sz isn't right");
147 ck_assert_msg(memcmp(out1, string, 44) == 0, "decryption 3 failed");
148}
149END_TEST
150
119Suite * encryptsave_suite(void) 151Suite * encryptsave_suite(void)
120{ 152{
121 Suite *s = suite_create("encryptsave"); 153 Suite *s = suite_create("encryptsave");
122 154
123 DEFTESTCASE_SLOW(known_kdf, 60); /* is 5-10 seconds on my computer, but is directly dependent on CPU */ 155 DEFTESTCASE_SLOW(known_kdf, 60); /* is 5-10 seconds on my computer, but is directly dependent on CPU */
124 DEFTESTCASE(save_friend); 156 DEFTESTCASE(save_friend);
157 DEFTESTCASE(keys);
125 158
126 return s; 159 return s;
127} 160}
diff --git a/toxencryptsave/toxencryptsave.c b/toxencryptsave/toxencryptsave.c
index 0d63a0aa..d1926246 100644
--- a/toxencryptsave/toxencryptsave.c
+++ b/toxencryptsave/toxencryptsave.c
@@ -301,7 +301,7 @@ int tox_encrypted_key_load(Tox *tox, const uint8_t *data, uint32_t length, uint8
301 if (tox_pass_key_decrypt(data, length, key, temp_data) 301 if (tox_pass_key_decrypt(data, length, key, temp_data)
302 != decrypt_length) 302 != decrypt_length)
303 return -1; 303 return -1;
304 printf("tox key load: decryption passed\n"); 304
305 return tox_load(tox, temp_data, decrypt_length); 305 return tox_load(tox, temp_data, decrypt_length);
306} 306}
307 307