Merge pull request #1229 from triska/faster_decryption
ENHANCED: library(crypto): Retain a compact internal representation of the ciphertext throughout decryption.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Written 2020, 2021 by Markus Triska (triska@metalevel.at)
|
Written 2020, 2021, 2022 by Markus Triska (triska@metalevel.at)
|
||||||
Part of Scryer Prolog.
|
Part of Scryer Prolog.
|
||||||
|
|
||||||
Predicates for cryptographic applications.
|
Predicates for cryptographic applications.
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
:- use_module(library(format)).
|
:- use_module(library(format)).
|
||||||
:- use_module(library(charsio)).
|
:- use_module(library(charsio)).
|
||||||
:- use_module(library(si)).
|
:- use_module(library(si)).
|
||||||
|
:- use_module(library(iso_ext), [partial_string/3]).
|
||||||
|
|
||||||
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
hex_bytes(?Hex, ?Bytes) is det.
|
hex_bytes(?Hex, ?Bytes) is det.
|
||||||
@@ -594,7 +595,9 @@ crypto_data_decrypt(CipherText0, Algorithm, Key, IV, PlainText, Options) :-
|
|||||||
member(Encoding, [utf8,octet]),
|
member(Encoding, [utf8,octet]),
|
||||||
encoding_chars(octet, CipherText0, CipherText1),
|
encoding_chars(octet, CipherText0, CipherText1),
|
||||||
maplist(char_code, TagChars, Tag),
|
maplist(char_code, TagChars, Tag),
|
||||||
append(CipherText1, TagChars, CipherText),
|
% we append the tag very efficiently, retaining a compact
|
||||||
|
% internal string representation of the ciphertext
|
||||||
|
partial_string(CipherText1, CipherText, TagChars),
|
||||||
( Algorithm = 'chacha20-poly1305' -> true
|
( Algorithm = 'chacha20-poly1305' -> true
|
||||||
; domain_error('chacha20-poly1305', Algorithm, crypto_data_decrypt/6)
|
; domain_error('chacha20-poly1305', Algorithm, crypto_data_decrypt/6)
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user