stronger validation of input lists for cryptographic routines
Example:
?- crypto_data_hkdf(Var, 32, Bs, []).
caught: error(instantiation_error,must_be/2)
Reported by @notoria in #527. Many thanks!
This commit is contained in:
@@ -597,12 +597,14 @@ crypto_data_decrypt(CipherText0, Algorithm, Key, IV, PlainText, Options) :-
|
|||||||
'$crypto_data_decrypt'(CipherText, Key, IV, Encoding, PlainText).
|
'$crypto_data_decrypt'(CipherText, Key, IV, Encoding, PlainText).
|
||||||
|
|
||||||
encoding_bytes(octet, Bs0, Bs) :-
|
encoding_bytes(octet, Bs0, Bs) :-
|
||||||
|
must_be(list, Bs0),
|
||||||
( maplist(integer, Bs0) ->
|
( maplist(integer, Bs0) ->
|
||||||
Bs0 = Bs
|
Bs0 = Bs
|
||||||
; maplist(char_code, Bs0, Bs)
|
; maplist(char_code, Bs0, Bs)
|
||||||
),
|
),
|
||||||
must_be_bytes(Bs, crypto_encoding).
|
must_be_bytes(Bs, crypto_encoding).
|
||||||
encoding_bytes(utf8, Cs, Bs) :-
|
encoding_bytes(utf8, Cs, Bs) :-
|
||||||
|
must_be(list, Cs),
|
||||||
( maplist(atom, Cs) ->
|
( maplist(atom, Cs) ->
|
||||||
chars_bytes_(Cs, Bs, crypto_encoding)
|
chars_bytes_(Cs, Bs, crypto_encoding)
|
||||||
; domain_error(encryption_encoding, Cs, crypto)
|
; domain_error(encryption_encoding, Cs, crypto)
|
||||||
|
|||||||
Reference in New Issue
Block a user