Move file encryption function to public header

This commit is contained in:
William Wennerström
2020-06-28 15:16:03 +02:00
parent e98644f631
commit f4ab1ca9e7
8 changed files with 59 additions and 83 deletions

View File

@@ -1653,3 +1653,35 @@ _generate_signed_pre_key(void)
signal_protocol_signed_pre_key_store_key(omemo_ctx.store, signed_pre_key);
SIGNAL_UNREF(signed_pre_key);
}
void omemo_free(void *a) {
gcry_free(a);
}
char *omemo_encrypt_file(FILE *in, FILE *out, off_t file_size, int *gcry_res) {
unsigned char *key = gcry_random_bytes_secure(
AES256_GCM_KEY_LENGTH,
GCRY_VERY_STRONG_RANDOM);
// Create nonce/IV with random bytes.
unsigned char nonce[AES256_GCM_NONCE_LENGTH];
gcry_create_nonce(nonce, AES256_GCM_NONCE_LENGTH);
char *fragment = aes256gcm_create_secure_fragment(key, nonce);
*gcry_res = aes256gcm_crypt_file(in, out, file_size, key, nonce, true);
if (*gcry_res != GPG_ERR_NO_ERROR) {
gcry_free(fragment);
fragment = NULL;
}
gcry_free(key);
return fragment;
}
//int omemo_decrypt_file(FILE *in, FILE *out, off_t file_size,
// unsigned char key[], unsigned char nonce[]) {
// return aes256gcm_crypt_file(in, out, file_size, key, nonce, false);
//}