mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Add support for 12 bytes IV
16 bytes IV should be used. Some clients can't use it so we should also support decrypting 12 bytes IV. Fix #1253
This commit is contained in:
parent
69bf76761a
commit
8d1202efbd
@ -340,7 +340,7 @@ out:
|
||||
}
|
||||
|
||||
int
|
||||
aes128gcm_decrypt(unsigned char *plaintext, size_t *plaintext_len, const unsigned char *const ciphertext, size_t ciphertext_len, const unsigned char *const iv, const unsigned char *const key, const unsigned char *const tag)
|
||||
aes128gcm_decrypt(unsigned char *plaintext, size_t *plaintext_len, const unsigned char *const ciphertext, size_t ciphertext_len, const unsigned char *const iv, size_t iv_len, const unsigned char *const key, const unsigned char *const tag)
|
||||
{
|
||||
gcry_error_t res;
|
||||
gcry_cipher_hd_t hd;
|
||||
@ -355,7 +355,7 @@ aes128gcm_decrypt(unsigned char *plaintext, size_t *plaintext_len, const unsigne
|
||||
goto out;
|
||||
}
|
||||
|
||||
res = gcry_cipher_setiv(hd, iv, AES128_GCM_IV_LENGTH);
|
||||
res = gcry_cipher_setiv(hd, iv, iv_len);
|
||||
if (res != GPG_ERR_NO_ERROR) {
|
||||
goto out;
|
||||
}
|
||||
|
@ -178,5 +178,5 @@ int aes128gcm_encrypt(unsigned char *ciphertext, size_t *ciphertext_len,
|
||||
|
||||
int aes128gcm_decrypt(unsigned char *plaintext,
|
||||
size_t *plaintext_len, const unsigned char *const ciphertext,
|
||||
size_t ciphertext_len, const unsigned char *const iv,
|
||||
size_t ciphertext_len, const unsigned char *const iv, size_t iv_len,
|
||||
const unsigned char *const key, const unsigned char *const tag);
|
||||
|
@ -955,7 +955,7 @@ omemo_on_message_recv(const char *const from_jid, uint32_t sid,
|
||||
size_t plaintext_len = payload_len;
|
||||
plaintext = malloc(plaintext_len + 1);
|
||||
res = aes128gcm_decrypt(plaintext, &plaintext_len, payload, payload_len, iv,
|
||||
signal_buffer_data(plaintext_key),
|
||||
iv_len, signal_buffer_data(plaintext_key),
|
||||
signal_buffer_data(plaintext_key) + AES128_GCM_KEY_LENGTH);
|
||||
signal_buffer_free(plaintext_key);
|
||||
if (res != 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user