aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/tcrypt.c
diff options
context:
space:
mode:
authorRik Snel <rsnel@cube.dyndns.org>2007-09-19 08:23:13 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:55:45 -0400
commitf19f5111c94053ba4931892f5c01c806de33942e (patch)
treeb40dfae8fa170ebdc92fdcfeb3000c84d6203645 /crypto/tcrypt.c
parent5aaff0c8f7dd3515c9f1ca57f86463f30779acc7 (diff)
[CRYPTO] xts: XTS blockcipher mode implementation without partial blocks
XTS currently considered to be the successor of the LRW mode by the IEEE1619 workgroup. LRW was discarded, because it was not secure if the encyption key itself is encrypted with LRW. XTS does not have this problem. The implementation is pretty straightforward, a new function was added to gf128mul to handle GF(128) elements in ble format. Four testvectors from the specification http://grouper.ieee.org/groups/1619/email/pdf00086.pdf were added, and they verify on my system. Signed-off-by: Rik Snel <rsnel@cube.dyndns.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/tcrypt.c')
-rw-r--r--crypto/tcrypt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index de6435ea9bf8..18d489c8b935 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -955,6 +955,10 @@ static void do_test(void)
955 AES_LRW_ENC_TEST_VECTORS); 955 AES_LRW_ENC_TEST_VECTORS);
956 test_cipher("lrw(aes)", DECRYPT, aes_lrw_dec_tv_template, 956 test_cipher("lrw(aes)", DECRYPT, aes_lrw_dec_tv_template,
957 AES_LRW_DEC_TEST_VECTORS); 957 AES_LRW_DEC_TEST_VECTORS);
958 test_cipher("xts(aes)", ENCRYPT, aes_xts_enc_tv_template,
959 AES_XTS_ENC_TEST_VECTORS);
960 test_cipher("xts(aes)", DECRYPT, aes_xts_dec_tv_template,
961 AES_XTS_DEC_TEST_VECTORS);
958 962
959 //CAST5 963 //CAST5
960 test_cipher("ecb(cast5)", ENCRYPT, cast5_enc_tv_template, 964 test_cipher("ecb(cast5)", ENCRYPT, cast5_enc_tv_template,
@@ -1138,6 +1142,10 @@ static void do_test(void)
1138 AES_LRW_ENC_TEST_VECTORS); 1142 AES_LRW_ENC_TEST_VECTORS);
1139 test_cipher("lrw(aes)", DECRYPT, aes_lrw_dec_tv_template, 1143 test_cipher("lrw(aes)", DECRYPT, aes_lrw_dec_tv_template,
1140 AES_LRW_DEC_TEST_VECTORS); 1144 AES_LRW_DEC_TEST_VECTORS);
1145 test_cipher("xts(aes)", ENCRYPT, aes_xts_enc_tv_template,
1146 AES_XTS_ENC_TEST_VECTORS);
1147 test_cipher("xts(aes)", DECRYPT, aes_xts_dec_tv_template,
1148 AES_XTS_DEC_TEST_VECTORS);
1141 break; 1149 break;
1142 1150
1143 case 11: 1151 case 11:
@@ -1313,6 +1321,10 @@ static void do_test(void)
1313 aes_lrw_speed_template); 1321 aes_lrw_speed_template);
1314 test_cipher_speed("lrw(aes)", DECRYPT, sec, NULL, 0, 1322 test_cipher_speed("lrw(aes)", DECRYPT, sec, NULL, 0,
1315 aes_lrw_speed_template); 1323 aes_lrw_speed_template);
1324 test_cipher_speed("xts(aes)", ENCRYPT, sec, NULL, 0,
1325 aes_xts_speed_template);
1326 test_cipher_speed("xts(aes)", DECRYPT, sec, NULL, 0,
1327 aes_xts_speed_template);
1316 break; 1328 break;
1317 1329
1318 case 201: 1330 case 201: