summaryrefslogtreecommitdiff
path: root/toxencryptsave/toxencryptsave.c
diff options
context:
space:
mode:
Diffstat (limited to 'toxencryptsave/toxencryptsave.c')
-rw-r--r--toxencryptsave/toxencryptsave.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/toxencryptsave/toxencryptsave.c b/toxencryptsave/toxencryptsave.c
index b38209a4..e2f28a58 100644
--- a/toxencryptsave/toxencryptsave.c
+++ b/toxencryptsave/toxencryptsave.c
@@ -82,7 +82,8 @@ bool tox_get_salt(const uint8_t *data, uint8_t *salt)
82 * 82 *
83 * returns true on success 83 * returns true on success
84 */ 84 */
85bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, TOX_PASS_KEY *out_key, TOX_ERR_KEY_DERIVATION *error) 85bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, TOX_PASS_KEY *out_key,
86 TOX_ERR_KEY_DERIVATION *error)
86{ 87{
87 uint8_t salt[crypto_pwhash_scryptsalsa208sha256_SALTBYTES]; 88 uint8_t salt[crypto_pwhash_scryptsalsa208sha256_SALTBYTES];
88 randombytes(salt, sizeof salt); 89 randombytes(salt, sizeof salt);
@@ -212,10 +213,12 @@ bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const TOX_PASS_KEY
212 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); 213 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH);
213 return 0; 214 return 0;
214 } 215 }
216
215 if (!data || !key || !out) { 217 if (!data || !key || !out) {
216 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL); 218 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL);
217 return 0; 219 return 0;
218 } 220 }
221
219 if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { 222 if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) {
220 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); 223 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT);
221 return 0; 224 return 0;
@@ -256,10 +259,12 @@ bool tox_pass_decrypt(const uint8_t *data, size_t length, uint8_t *passphrase, s
256 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); 259 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH);
257 return 0; 260 return 0;
258 } 261 }
262
259 if (!data || !passphrase || !out) { 263 if (!data || !passphrase || !out) {
260 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL); 264 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL);
261 return 0; 265 return 0;
262 } 266 }
267
263 if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { 268 if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) {
264 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); 269 SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT);
265 return 0; 270 return 0;