diff options
Diffstat (limited to 'toxencryptsave')
-rw-r--r-- | toxencryptsave/toxencryptsave.c | 17 | ||||
-rw-r--r-- | toxencryptsave/toxencryptsave.h | 15 |
2 files changed, 22 insertions, 10 deletions
diff --git a/toxencryptsave/toxencryptsave.c b/toxencryptsave/toxencryptsave.c index e7ec31f1..9b202f49 100644 --- a/toxencryptsave/toxencryptsave.c +++ b/toxencryptsave/toxencryptsave.c | |||
@@ -93,7 +93,8 @@ bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, uint8_t *out | |||
93 | /* Same as above, except with use the given salt for deterministic key derivation. | 93 | /* Same as above, except with use the given salt for deterministic key derivation. |
94 | * The salt must be tox_salt_length() bytes in length. | 94 | * The salt must be tox_salt_length() bytes in length. |
95 | */ | 95 | */ |
96 | bool tox_derive_key_with_salt(uint8_t *passphrase, size_t pplength, uint8_t *salt, uint8_t *out_key, TOX_ERR_KEY_DERIVATION *error) | 96 | bool tox_derive_key_with_salt(uint8_t *passphrase, size_t pplength, uint8_t *salt, uint8_t *out_key, |
97 | TOX_ERR_KEY_DERIVATION *error) | ||
97 | { | 98 | { |
98 | if (pplength == 0 || !passphrase || !salt || !out_key) { | 99 | if (pplength == 0 || !passphrase || !salt || !out_key) { |
99 | SET_ERROR_PARAMETER(error, TOX_ERR_KEY_DERIVATION_NULL); | 100 | SET_ERROR_PARAMETER(error, TOX_ERR_KEY_DERIVATION_NULL); |
@@ -133,7 +134,8 @@ bool tox_derive_key_with_salt(uint8_t *passphrase, size_t pplength, uint8_t *sal | |||
133 | * | 134 | * |
134 | * returns true on success | 135 | * returns true on success |
135 | */ | 136 | */ |
136 | bool tox_pass_key_encrypt(const uint8_t *data, size_t data_len, const uint8_t *key, uint8_t *out, TOX_ERR_ENCRYPTION *error) | 137 | bool tox_pass_key_encrypt(const uint8_t *data, size_t data_len, const uint8_t *key, uint8_t *out, |
138 | TOX_ERR_ENCRYPTION *error) | ||
137 | { | 139 | { |
138 | if (data_len == 0 || !data || !key || !out) { | 140 | if (data_len == 0 || !data || !key || !out) { |
139 | SET_ERROR_PARAMETER(error, TOX_ERR_ENCRYPTION_NULL); | 141 | SET_ERROR_PARAMETER(error, TOX_ERR_ENCRYPTION_NULL); |
@@ -179,7 +181,8 @@ bool tox_pass_key_encrypt(const uint8_t *data, size_t data_len, const uint8_t *k | |||
179 | * | 181 | * |
180 | * returns true on success | 182 | * returns true on success |
181 | */ | 183 | */ |
182 | bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, size_t pplength, uint8_t *out, TOX_ERR_ENCRYPTION *error) | 184 | bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, size_t pplength, uint8_t *out, |
185 | TOX_ERR_ENCRYPTION *error) | ||
183 | { | 186 | { |
184 | uint8_t key[TOX_PASS_KEY_LENGTH]; | 187 | uint8_t key[TOX_PASS_KEY_LENGTH]; |
185 | TOX_ERR_KEY_DERIVATION _error; | 188 | TOX_ERR_KEY_DERIVATION _error; |
@@ -190,6 +193,7 @@ bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, | |||
190 | } else if (_error == TOX_ERR_KEY_DERIVATION_FAILED) { | 193 | } else if (_error == TOX_ERR_KEY_DERIVATION_FAILED) { |
191 | SET_ERROR_PARAMETER(error, TOX_ERR_ENCRYPTION_KEY_DERIVATION_FAILED); | 194 | SET_ERROR_PARAMETER(error, TOX_ERR_ENCRYPTION_KEY_DERIVATION_FAILED); |
192 | } | 195 | } |
196 | |||
193 | return 0; | 197 | return 0; |
194 | } | 198 | } |
195 | 199 | ||
@@ -203,12 +207,14 @@ bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, | |||
203 | * | 207 | * |
204 | * returns true on success | 208 | * returns true on success |
205 | */ | 209 | */ |
206 | bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const uint8_t *key, uint8_t *out, TOX_ERR_DECRYPTION *error) | 210 | bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const uint8_t *key, uint8_t *out, |
211 | TOX_ERR_DECRYPTION *error) | ||
207 | { | 212 | { |
208 | if (length <= TOX_PASS_ENCRYPTION_EXTRA_LENGTH) { | 213 | if (length <= TOX_PASS_ENCRYPTION_EXTRA_LENGTH) { |
209 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); | 214 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); |
210 | return 0; | 215 | return 0; |
211 | } | 216 | } |
217 | |||
212 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { | 218 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { |
213 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); | 219 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); |
214 | return 0; | 220 | return 0; |
@@ -245,7 +251,8 @@ bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const uint8_t *key | |||
245 | * | 251 | * |
246 | * returns true on success | 252 | * returns true on success |
247 | */ | 253 | */ |
248 | bool tox_pass_decrypt(const uint8_t *data, size_t length, uint8_t *passphrase, size_t pplength, uint8_t *out, TOX_ERR_DECRYPTION *error) | 254 | bool tox_pass_decrypt(const uint8_t *data, size_t length, uint8_t *passphrase, size_t pplength, uint8_t *out, |
255 | TOX_ERR_DECRYPTION *error) | ||
249 | { | 256 | { |
250 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { | 257 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { |
251 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); | 258 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); |
diff --git a/toxencryptsave/toxencryptsave.h b/toxencryptsave/toxencryptsave.h index ef1dfb5e..2ee4af46 100644 --- a/toxencryptsave/toxencryptsave.h +++ b/toxencryptsave/toxencryptsave.h | |||
@@ -134,7 +134,8 @@ typedef enum TOX_ERR_DECRYPTION { | |||
134 | * | 134 | * |
135 | * returns true on success | 135 | * returns true on success |
136 | */ | 136 | */ |
137 | bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, size_t pplength, uint8_t *out, TOX_ERR_ENCRYPTION *error); | 137 | bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, size_t pplength, uint8_t *out, |
138 | TOX_ERR_ENCRYPTION *error); | ||
138 | 139 | ||
139 | 140 | ||
140 | /* Decrypts the given data with the given passphrase. The output array must be | 141 | /* Decrypts the given data with the given passphrase. The output array must be |
@@ -145,7 +146,8 @@ bool tox_pass_encrypt(const uint8_t *data, size_t data_len, uint8_t *passphrase, | |||
145 | * | 146 | * |
146 | * returns true on success | 147 | * returns true on success |
147 | */ | 148 | */ |
148 | bool tox_pass_decrypt(const uint8_t *data, size_t length, uint8_t *passphrase, size_t pplength, uint8_t *out, TOX_ERR_DECRYPTION *error); | 149 | bool tox_pass_decrypt(const uint8_t *data, size_t length, uint8_t *passphrase, size_t pplength, uint8_t *out, |
150 | TOX_ERR_DECRYPTION *error); | ||
149 | 151 | ||
150 | 152 | ||
151 | /******************************* BEGIN PART 1 ******************************* | 153 | /******************************* BEGIN PART 1 ******************************* |
@@ -169,7 +171,8 @@ bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, uint8_t *out | |||
169 | /* Same as above, except with use the given salt for deterministic key derivation. | 171 | /* Same as above, except with use the given salt for deterministic key derivation. |
170 | * The salt must be tox_salt_length() bytes in length. | 172 | * The salt must be tox_salt_length() bytes in length. |
171 | */ | 173 | */ |
172 | bool tox_derive_key_with_salt(uint8_t *passphrase, size_t pplength, uint8_t *salt, uint8_t *out_key, TOX_ERR_KEY_DERIVATION *error); | 174 | bool tox_derive_key_with_salt(uint8_t *passphrase, size_t pplength, uint8_t *salt, uint8_t *out_key, |
175 | TOX_ERR_KEY_DERIVATION *error); | ||
173 | 176 | ||
174 | /* This retrieves the salt used to encrypt the given data, which can then be passed to | 177 | /* This retrieves the salt used to encrypt the given data, which can then be passed to |
175 | * derive_key_with_salt to produce the same key as was previously used. Any encrpyted | 178 | * derive_key_with_salt to produce the same key as was previously used. Any encrpyted |
@@ -191,7 +194,8 @@ bool tox_get_salt(const uint8_t *data, uint8_t *salt); | |||
191 | * | 194 | * |
192 | * returns true on success | 195 | * returns true on success |
193 | */ | 196 | */ |
194 | bool tox_pass_key_encrypt(const uint8_t *data, size_t data_len, const uint8_t *key, uint8_t *out, TOX_ERR_ENCRYPTION *error); | 197 | bool tox_pass_key_encrypt(const uint8_t *data, size_t data_len, const uint8_t *key, uint8_t *out, |
198 | TOX_ERR_ENCRYPTION *error); | ||
195 | 199 | ||
196 | /* This is the inverse of tox_pass_key_encrypt, also using only keys produced by | 200 | /* This is the inverse of tox_pass_key_encrypt, also using only keys produced by |
197 | * tox_derive_key_from_pass. | 201 | * tox_derive_key_from_pass. |
@@ -200,7 +204,8 @@ bool tox_pass_key_encrypt(const uint8_t *data, size_t data_len, const uint8_t *k | |||
200 | * | 204 | * |
201 | * returns true on success | 205 | * returns true on success |
202 | */ | 206 | */ |
203 | bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const uint8_t *key, uint8_t *out, TOX_ERR_DECRYPTION *error); | 207 | bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const uint8_t *key, uint8_t *out, |
208 | TOX_ERR_DECRYPTION *error); | ||
204 | 209 | ||
205 | /* Determines whether or not the given data is encrypted (by checking the magic number) | 210 | /* Determines whether or not the given data is encrypted (by checking the magic number) |
206 | */ | 211 | */ |