From c7d371256a1f6f0a60d62f70d1bca2a45867e22e Mon Sep 17 00:00:00 2001 From: andreaP Date: Mon, 15 Dec 2014 14:43:44 +0100 Subject: add aes ecb to crypto library --- lib/crypto/src/crypto.erl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/crypto/src') diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index 7f82fa83fd..ed8953fa62 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -154,6 +154,10 @@ -deprecated({aes_ctr_decrypt, 3, next_major_release}). -deprecated({rc4_encrypt, 2, next_major_release}). +%aes enc/dec +-export([aes_ecb_crypt/3,aes_ecb_encrypt/2,aes_ecb_decrypt/2]). +-deprecated({aes_ecb_crypt, 3}). + %% Replace by public/private_encrypt/decrypt -export([rsa_public_encrypt/3, rsa_private_decrypt/3]). -export([rsa_private_encrypt/3, rsa_public_decrypt/3]). @@ -1392,6 +1396,21 @@ do_stream_decrypt({rc4, State0}, Data) -> aes_ctr_encrypt(_Key, _IVec, _Data) -> ?nif_stub. aes_ctr_decrypt(_Key, _IVec, _Cipher) -> ?nif_stub. +%% +%% AES - in electronic codebook mode (ECB) +%% +-spec aes_ecb_crypt(iodata(), iodata(), integer()) -> + binary(). + +aes_ecb_encrypt(Key, Data) -> + aes_ecb_crypt(Key, Data, true). + +aes_ecb_decrypt(Key, Data) -> + aes_ecb_crypt(Key, Data, false). + +aes_ecb_crypt(_Key, __Data, _IsEncrypt) -> ?nif_stub. + + %% %% AES - in counter mode (CTR) with state maintained for multi-call streaming %% @@ -1850,6 +1869,7 @@ mod_exp_nif(_Base,_Exp,_Mod,_bin_hdr) -> ?nif_stub. aes_ctr_encrypt, aes_ctr_decrypt, aes_ctr_stream_init, aes_ctr_stream_encrypt, aes_ctr_stream_decrypt, %% + aes_ecb_encrypt, aes_decrypt, next_iv, %% deprecated aes_cbc_ivec, -- cgit v1.2.3 From bd65ff0b39f3bfb23cef865dd03044a99d97d2fd Mon Sep 17 00:00:00 2001 From: andreaP Date: Tue, 23 Dec 2014 15:25:59 +0100 Subject: fixes and tests --- lib/crypto/src/crypto.erl | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'lib/crypto/src') diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index ed8953fa62..c59c9077c2 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -154,9 +154,10 @@ -deprecated({aes_ctr_decrypt, 3, next_major_release}). -deprecated({rc4_encrypt, 2, next_major_release}). -%aes enc/dec --export([aes_ecb_crypt/3,aes_ecb_encrypt/2,aes_ecb_decrypt/2]). --deprecated({aes_ecb_crypt, 3}). +%aes ecb enc/dec +-export([aes_ecb_encrypt/2,aes_ecb_decrypt/2]). +-deprecated({aes_ecb_encrypt, 2, next_major_release}). +-deprecated({aes_ecb_decrypt, 2, next_major_release}). %% Replace by public/private_encrypt/decrypt -export([rsa_public_encrypt/3, rsa_private_decrypt/3]). @@ -372,19 +373,24 @@ block_decrypt(chacha20_poly1305, Key, Ivec, {AAD, Data, Tag}) -> end; block_decrypt(rc2_cbc, Key, Ivec, Data) -> rc2_cbc_decrypt(Key, Ivec, Data). --spec block_encrypt(des_ecb | blowfish_ecb, Key::iodata(), Data::iodata()) -> binary(). + +-spec block_encrypt(des_ecb | blowfish_ecb | aes_ecb, Key::iodata(), Data::iodata()) -> binary(). block_encrypt(des_ecb, Key, Data) -> des_ecb_encrypt(Key, Data); block_encrypt(blowfish_ecb, Key, Data) -> - blowfish_ecb_encrypt(Key, Data). + blowfish_ecb_encrypt(Key, Data); +block_encrypt(aes_ecb, Key, Data) -> + aes_ecb_encrypt(Key, Data). -spec block_decrypt(des_ecb | blowfish_ecb, Key::iodata(), Data::iodata()) -> binary(). block_decrypt(des_ecb, Key, Data) -> des_ecb_decrypt(Key, Data); block_decrypt(blowfish_ecb, Key, Data) -> - blowfish_ecb_decrypt(Key, Data). + blowfish_ecb_decrypt(Key, Data); +block_decrypt(aes_ecb, Key, Data) -> + aes_ecb_decrypt(Key, Data). -spec next_iv(des_cbc | des3_cbc | aes_cbc | aes_ige, Data::iodata()) -> binary(). @@ -1869,7 +1875,7 @@ mod_exp_nif(_Base,_Exp,_Mod,_bin_hdr) -> ?nif_stub. aes_ctr_encrypt, aes_ctr_decrypt, aes_ctr_stream_init, aes_ctr_stream_encrypt, aes_ctr_stream_decrypt, %% - aes_ecb_encrypt, aes_decrypt, + aes_ecb_encrypt, aes_ecb_decrypt, next_iv, %% deprecated aes_cbc_ivec, -- cgit v1.2.3 From 6dbb25ea9c95b5101975e8ce60db65c219449266 Mon Sep 17 00:00:00 2001 From: andreaP Date: Thu, 8 Jan 2015 18:04:57 +0100 Subject: aligned implementation following last specs --- lib/crypto/src/crypto.erl | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'lib/crypto/src') diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index c59c9077c2..695c33f586 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -154,11 +154,6 @@ -deprecated({aes_ctr_decrypt, 3, next_major_release}). -deprecated({rc4_encrypt, 2, next_major_release}). -%aes ecb enc/dec --export([aes_ecb_encrypt/2,aes_ecb_decrypt/2]). --deprecated({aes_ecb_encrypt, 2, next_major_release}). --deprecated({aes_ecb_decrypt, 2, next_major_release}). - %% Replace by public/private_encrypt/decrypt -export([rsa_public_encrypt/3, rsa_private_decrypt/3]). -export([rsa_private_encrypt/3, rsa_public_decrypt/3]). @@ -216,7 +211,7 @@ supports()-> [{hashs, Hashs}, {ciphers, [des_cbc, des_cfb, des3_cbc, des_ede3, blowfish_cbc, blowfish_cfb64, blowfish_ofb64, blowfish_ecb, aes_cbc128, aes_cfb8, aes_cfb128, - aes_cbc256, rc2_cbc, aes_ctr, rc4] ++ Ciphers}, + aes_cbc256, rc2_cbc, aes_ctr, rc4, aes_ecb] ++ Ciphers}, {public_keys, [rsa, dss, dh, srp] ++ PubKeys} ]. @@ -383,7 +378,7 @@ block_encrypt(blowfish_ecb, Key, Data) -> block_encrypt(aes_ecb, Key, Data) -> aes_ecb_encrypt(Key, Data). --spec block_decrypt(des_ecb | blowfish_ecb, Key::iodata(), Data::iodata()) -> binary(). +-spec block_decrypt(des_ecb | blowfish_ecb | aes_ecb, Key::iodata(), Data::iodata()) -> binary(). block_decrypt(des_ecb, Key, Data) -> des_ecb_decrypt(Key, Data); @@ -1875,7 +1870,6 @@ mod_exp_nif(_Base,_Exp,_Mod,_bin_hdr) -> ?nif_stub. aes_ctr_encrypt, aes_ctr_decrypt, aes_ctr_stream_init, aes_ctr_stream_encrypt, aes_ctr_stream_decrypt, %% - aes_ecb_encrypt, aes_ecb_decrypt, next_iv, %% deprecated aes_cbc_ivec, -- cgit v1.2.3