crypto_data_hash(Data0, Hash, Options0) :-
must_be(list, Options0),
- option(encoding(Encoding), Options0, utf8),
+ encoding_options(Encoding, Options0),
encoding_bytes(Encoding, Data0, Data),
functor_hash_options(algorithm, A, Options0, _),
( hash_algorithm(A) -> true
'$crypto_data_hash'(Data, HashBytes, A),
hex_bytes(Hash, HashBytes).
+encoding_options(Encoding, Options) :-
+ option(encoding(Encoding), Options, utf8),
+ must_be(atom, Encoding).
default_hash(sha256).
functor_hash_options(algorithm, Algorithm, Options0, Options),
must_be(integer, L),
L >= 0,
- option(encoding(Encoding), Options, utf8),
+ encoding_options(Encoding, Options),
encoding_bytes(Encoding, Data0, Data),
option(salt(SaltBytes), Options, []),
must_be_bytes(SaltBytes, crypto_data_hkdf/4),
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
crypto_data_encrypt(PlainText0, Algorithm, Key, IV, CipherText, Options) :-
- option(encoding(Encoding), Options, utf8),
+ encoding_options(Encoding, Options),
encoding_bytes(Encoding, PlainText0, PlainText),
option(tag(Tag), Options, _),
( nonvar(Tag) ->
must_be_bytes(Key, crypto_data_decrypt/6),
must_be_bytes(IV, crypto_data_decrypt/6),
must_be(atom, Algorithm),
- option(encoding(Encoding), Options, utf8),
+ encoding_options(Encoding, Options),
must_be(list, CipherText0),
encoding_bytes(octet, CipherText0, CipherText1),
append(CipherText1, Tag, CipherText),