From c55cc3c47200c34437940a7288cba155b0c8cc1a Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Thu, 6 Aug 2020 23:27:49 +0200 Subject: [PATCH] ensure proper lengths of key and initialization vector This avoids crashes when using unsuitable lengths. --- src/lib/crypto.pl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/crypto.pl b/src/lib/crypto.pl index 1f78c8cb..e88113c7 100644 --- a/src/lib/crypto.pl +++ b/src/lib/crypto.pl @@ -547,8 +547,13 @@ crypto_data_encrypt(PlainText0, Algorithm, Key, IV, CipherText, Options) :- ( Algorithm = 'chacha20-poly1305' -> true ; domain_error('chacha20-poly1305', Algorithm, crypto_data_encrypt/6) ), + algorithm_key_iv(Algorithm, Key, IV), '$crypto_data_encrypt'(PlainText, AAD, Encoding, Key, IV, Tag, CipherText). +algorithm_key_iv('chacha20-poly1305', Key, IV) :- + length(Key, 32), + length(IV, 12). + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - crypto_data_decrypt(+CipherText, +Algorithm, @@ -598,6 +603,7 @@ crypto_data_decrypt(CipherText0, Algorithm, Key, IV, PlainText, Options) :- ( Algorithm = 'chacha20-poly1305' -> true ; domain_error('chacha20-poly1305', Algorithm, crypto_data_decrypt/6) ), + algorithm_key_iv(Algorithm, Key, IV), '$crypto_data_decrypt'(CipherText, AAD, Key, IV, Encoding, PlainText). -- 2.54.0