aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/crypto/src/crypto.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl
index 8ffdde2b90..169c0f2e91 100644
--- a/lib/crypto/src/crypto.erl
+++ b/lib/crypto/src/crypto.erl
@@ -1015,8 +1015,15 @@ crypto_dyn_iv_update(State, Data0, IV) ->
EncryptFlag :: boolean(),
Result :: binary() .
-crypto_one_time(Cipher, Key, Data, EncryptFlag) ->
- crypto_one_time(Cipher, Key, <<>>, Data, EncryptFlag).
+crypto_one_time(Cipher, Key, Data0, EncryptFlag) ->
+ case iolist_to_binary(Data0) of
+ <<>> ->
+ <<>>; % Known to fail on OpenSSL 0.9.8h
+ Data ->
+ ng_crypto_one_time_nif(Cipher,
+ iolist_to_binary(Key), <<>>, Data,
+ EncryptFlag)
+ end.
-spec crypto_one_time(Cipher, Key, IV, Data, EncryptFlag) ->
Result | descriptive_error()