updated pycrypto
This commit is contained in:
@@ -26,11 +26,8 @@
|
||||
|
||||
__revision__ = "$Id$"
|
||||
|
||||
import sys
|
||||
if sys.version_info[0] == 2 and sys.version_info[1] == 1:
|
||||
from Crypto.Util.py21compat import *
|
||||
from Crypto.Util.py3compat import *
|
||||
from common import dict # For compatibility with Python 2.1 and 2.2
|
||||
from Crypto.Util.py3compat import *
|
||||
from binascii import hexlify
|
||||
|
||||
# This is a list of (plaintext, ciphertext, key[, description[, params]]) tuples.
|
||||
@@ -1323,30 +1320,6 @@ test_data = [
|
||||
'NIST 800-38A, F.4.5, OFB and AES-256',
|
||||
dict(mode='OFB', iv='000102030405060708090a0b0c0d0e0f')),
|
||||
|
||||
('6bc1bee22e409f96e93d7e117393172a'+'ae2d8a571e03ac9c9eb76fac45af8e51'+
|
||||
'30c81c46a35ce411e5fbc1191a0a52ef'+'f69f2445df4f9b17',
|
||||
'3b3fd92eb72dad20333449f8e83cfb4a'+'7789508d16918f03f53c52dac54ed825'+
|
||||
'9740051e9c5fecf64344f7a82260edcc'+'304c6528f659c778',
|
||||
'2b7e151628aed2a6abf7158809cf4f3c',
|
||||
'NIST 800-38A, F.4.1, OFB and AES-128 (partial last block)',
|
||||
dict(mode='OFB', iv='000102030405060708090a0b0c0d0e0f')),
|
||||
|
||||
('6bc1bee22e409f96e93d7e117393172a'+'ae2d8a571e03ac9c9eb76fac45af8e51'+
|
||||
'30c81c46a35ce411e5fbc1191a0a52ef'+'f69f2445df4f9b17',
|
||||
'cdc80d6fddf18cab34c25909c99a4174'+'fcc28b8d4c63837c09e81700c1100401'+
|
||||
'8d9a9aeac0f6596f559c6d4daf59a5f2'+'6d9f200857ca6c3e',
|
||||
'8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b',
|
||||
'NIST 800-38A, F.4.3, OFB and AES-192 (partial last block)',
|
||||
dict(mode='OFB', iv='000102030405060708090a0b0c0d0e0f')),
|
||||
|
||||
('6bc1bee22e409f96e93d7e117393172a'+'ae2d8a571e03ac9c9eb76fac45af8e51'+
|
||||
'30c81c46a35ce411e5fbc1191a0a52ef'+'f69f2445df4f9b17',
|
||||
'dc7e84bfda79164b7ecd8486985d3860'+'4febdc6740d20b3ac88f6ad82a4fb08d'+
|
||||
'71ab47a086e86eedf39d1c5bba97c408'+'0126141d67f37be8',
|
||||
'603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4',
|
||||
'NIST 800-38A, F.4.5, OFB and AES-256 (partial last block)',
|
||||
dict(mode='OFB', iv='000102030405060708090a0b0c0d0e0f')),
|
||||
|
||||
('6bc1bee22e409f96e93d7e117393172a'+'ae2d8a571e03ac9c9eb76fac45af8e51'+
|
||||
'30c81c46a35ce411e5fbc1191a0a52ef'+'f69f2445df4f9b17ad2b417be66c3710',
|
||||
'874d6191b620e3261bef6864990db6ce'+'9806f66b7970fdff8617187bb9fffdff'+
|
||||
@@ -1445,565 +1418,12 @@ test_data = [
|
||||
'5baa61e4c9b93f3f0682250b6cf8331b', # Key (hash of 'password')
|
||||
'GPG Test Vector #1',
|
||||
dict(mode='OPENPGP', iv='3d7d3e62282add7eb203eeba5c800733', encrypted_iv='fd934601ef49cb58b6d9aebca6056bdb96ef' ) ),
|
||||
|
||||
# NIST SP 800-38C test vectors for CCM
|
||||
# This is a list of tuples with 5 items:
|
||||
#
|
||||
# 1. Associated data + '|' + plaintext
|
||||
# 2. Associated data + '|' + ciphertext + '|' + MAC
|
||||
# 3. AES-128 key
|
||||
# 4. Description
|
||||
# 5. Dictionary of parameters to be passed to AES.new().
|
||||
# It must include the nonce.
|
||||
#
|
||||
( '0001020304050607|20212223',
|
||||
'0001020304050607|7162015b|4dac255d',
|
||||
'404142434445464748494a4b4c4d4e4f',
|
||||
'NIST SP 800-38C Appex C.1',
|
||||
dict(mode='CCM', nonce='10111213141516')
|
||||
),
|
||||
( '000102030405060708090a0b0c0d0e0f|202122232425262728292a2b2c2d2e2f',
|
||||
'000102030405060708090a0b0c0d0e0f|d2a1f0e051ea5f62081a7792073d593d|1fc64fbfaccd',
|
||||
'404142434445464748494a4b4c4d4e4f',
|
||||
'NIST SP 800-38C Appex C.2',
|
||||
dict(mode='CCM', nonce='1011121314151617')
|
||||
),
|
||||
( '000102030405060708090a0b0c0d0e0f10111213|'+
|
||||
'202122232425262728292a2b2c2d2e2f3031323334353637',
|
||||
'000102030405060708090a0b0c0d0e0f10111213|'+
|
||||
'e3b201a9f5b71a7a9b1ceaeccd97e70b6176aad9a4428aa5|484392fbc1b09951',
|
||||
'404142434445464748494a4b4c4d4e4f',
|
||||
'NIST SP 800-38C Appex C.3',
|
||||
dict(mode='CCM', nonce='101112131415161718191a1b')
|
||||
),
|
||||
(
|
||||
(''.join(["%02X" % (x*16+y) for x in xrange(0,16) for y in xrange(0,16)]))*256+'|'+
|
||||
'202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f',
|
||||
(''.join(["%02X" % (x*16+y) for x in xrange(0,16) for y in xrange(0,16)]))*256+'|'+
|
||||
'69915dad1e84c6376a68c2967e4dab615ae0fd1faec44cc484828529463ccf72|'+
|
||||
'b4ac6bec93e8598e7f0dadbcea5b',
|
||||
'404142434445464748494a4b4c4d4e4f',
|
||||
'NIST SP 800-38C Appex C.4',
|
||||
dict(mode='CCM', nonce='101112131415161718191a1b1c')
|
||||
),
|
||||
# RFC3610 test vectors
|
||||
(
|
||||
'0001020304050607|08090a0b0c0d0e0f101112131415161718191a1b1c1d1e',
|
||||
'0001020304050607|588c979a61c663d2f066d0c2c0f989806d5f6b61dac384|'+
|
||||
'17e8d12cfdf926e0',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #1',
|
||||
dict(mode='CCM', nonce='00000003020100a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'0001020304050607|08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f',
|
||||
'0001020304050607|72c91a36e135f8cf291ca894085c87e3cc15c439c9e43a3b|'+
|
||||
'a091d56e10400916',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #2',
|
||||
dict(mode='CCM', nonce='00000004030201a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'0001020304050607|08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20',
|
||||
'0001020304050607|51b1e5f44a197d1da46b0f8e2d282ae871e838bb64da859657|'+
|
||||
'4adaa76fbd9fb0c5',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #3',
|
||||
dict(mode='CCM', nonce='00000005040302A0A1A2A3A4A5')
|
||||
),
|
||||
(
|
||||
'000102030405060708090a0b|0c0d0e0f101112131415161718191a1b1c1d1e',
|
||||
'000102030405060708090a0b|a28c6865939a9a79faaa5c4c2a9d4a91cdac8c|'+
|
||||
'96c861b9c9e61ef1',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #4',
|
||||
dict(mode='CCM', nonce='00000006050403a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'000102030405060708090a0b|0c0d0e0f101112131415161718191a1b1c1d1e1f',
|
||||
'000102030405060708090a0b|dcf1fb7b5d9e23fb9d4e131253658ad86ebdca3e|'+
|
||||
'51e83f077d9c2d93',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #5',
|
||||
dict(mode='CCM', nonce='00000007060504a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'000102030405060708090a0b|0c0d0e0f101112131415161718191a1b1c1d1e1f20',
|
||||
'000102030405060708090a0b|6fc1b011f006568b5171a42d953d469b2570a4bd87|'+
|
||||
'405a0443ac91cb94',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #6',
|
||||
dict(mode='CCM', nonce='00000008070605a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'0001020304050607|08090a0b0c0d0e0f101112131415161718191a1b1c1d1e',
|
||||
'0001020304050607|0135d1b2c95f41d5d1d4fec185d166b8094e999dfed96c|'+
|
||||
'048c56602c97acbb7490',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #7',
|
||||
dict(mode='CCM', nonce='00000009080706a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'0001020304050607|08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f',
|
||||
'0001020304050607|7b75399ac0831dd2f0bbd75879a2fd8f6cae6b6cd9b7db24|'+
|
||||
'c17b4433f434963f34b4',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #8',
|
||||
dict(mode='CCM', nonce='0000000a090807a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'0001020304050607|08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20',
|
||||
'0001020304050607|82531a60cc24945a4b8279181ab5c84df21ce7f9b73f42e197|'+
|
||||
'ea9c07e56b5eb17e5f4e',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #9',
|
||||
dict(mode='CCM', nonce='0000000b0a0908a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'000102030405060708090a0b|0c0d0e0f101112131415161718191a1b1c1d1e',
|
||||
'000102030405060708090a0b|07342594157785152b074098330abb141b947b|'+
|
||||
'566aa9406b4d999988dd',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #10',
|
||||
dict(mode='CCM', nonce='0000000c0b0a09a0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'000102030405060708090a0b|0c0d0e0f101112131415161718191a1b1c1d1e1f',
|
||||
'000102030405060708090a0b|676bb20380b0e301e8ab79590a396da78b834934|'+
|
||||
'f53aa2e9107a8b6c022c',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #11',
|
||||
dict(mode='CCM', nonce='0000000d0c0b0aa0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'000102030405060708090a0b|0c0d0e0f101112131415161718191a1b1c1d1e1f20',
|
||||
'000102030405060708090a0b|c0ffa0d6f05bdb67f24d43a4338d2aa4bed7b20e43|'+
|
||||
'cd1aa31662e7ad65d6db',
|
||||
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf',
|
||||
'RFC3610 Packet Vector #12',
|
||||
dict(mode='CCM', nonce='0000000e0d0c0ba0a1a2a3a4a5')
|
||||
),
|
||||
(
|
||||
'0be1a88bace018b1|08e8cf97d820ea258460e96ad9cf5289054d895ceac47c',
|
||||
'0be1a88bace018b1|4cb97f86a2a4689a877947ab8091ef5386a6ffbdd080f8|'+
|
||||
'e78cf7cb0cddd7b3',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #13',
|
||||
dict(mode='CCM', nonce='00412b4ea9cdbe3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'63018f76dc8a1bcb|9020ea6f91bdd85afa0039ba4baff9bfb79c7028949cd0ec',
|
||||
'63018f76dc8a1bcb|4ccb1e7ca981befaa0726c55d378061298c85c92814abc33|'+
|
||||
'c52ee81d7d77c08a',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #14',
|
||||
dict(mode='CCM', nonce='0033568ef7b2633c9696766cfa')
|
||||
),
|
||||
(
|
||||
'aa6cfa36cae86b40|b916e0eacc1c00d7dcec68ec0b3bbb1a02de8a2d1aa346132e',
|
||||
'aa6cfa36cae86b40|b1d23a2220ddc0ac900d9aa03c61fcf4a559a4417767089708|'+
|
||||
'a776796edb723506',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #15',
|
||||
dict(mode='CCM', nonce='00103fe41336713c9696766cfa')
|
||||
),
|
||||
(
|
||||
'd0d0735c531e1becf049c244|12daac5630efa5396f770ce1a66b21f7b2101c',
|
||||
'd0d0735c531e1becf049c244|14d253c3967b70609b7cbb7c49916028324526|'+
|
||||
'9a6f49975bcadeaf',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #16',
|
||||
dict(mode='CCM', nonce='00764c63b8058e3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'77b60f011c03e1525899bcae|e88b6a46c78d63e52eb8c546efb5de6f75e9cc0d',
|
||||
'77b60f011c03e1525899bcae|5545ff1a085ee2efbf52b2e04bee1e2336c73e3f|'+
|
||||
'762c0c7744fe7e3c',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #17',
|
||||
dict(mode='CCM', nonce='00f8b678094e3b3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'cd9044d2b71fdb8120ea60c0|6435acbafb11a82e2f071d7ca4a5ebd93a803ba87f',
|
||||
'cd9044d2b71fdb8120ea60c0|009769ecabdf48625594c59251e6035722675e04c8|'+
|
||||
'47099e5ae0704551',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #18',
|
||||
dict(mode='CCM', nonce='00d560912d3f703c9696766cfa')
|
||||
),
|
||||
(
|
||||
'd85bc7e69f944fb8|8a19b950bcf71a018e5e6701c91787659809d67dbedd18',
|
||||
'd85bc7e69f944fb8|bc218daa947427b6db386a99ac1aef23ade0b52939cb6a|'+
|
||||
'637cf9bec2408897c6ba',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #19',
|
||||
dict(mode='CCM', nonce='0042fff8f1951c3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'74a0ebc9069f5b37|1761433c37c5a35fc1f39f406302eb907c6163be38c98437',
|
||||
'74a0ebc9069f5b37|5810e6fd25874022e80361a478e3e9cf484ab04f447efff6|'+
|
||||
'f0a477cc2fc9bf548944',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #20',
|
||||
dict(mode='CCM', nonce='00920f40e56cdc3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'44a3aa3aae6475ca|a434a8e58500c6e41530538862d686ea9e81301b5ae4226bfa',
|
||||
'44a3aa3aae6475ca|f2beed7bc5098e83feb5b31608f8e29c38819a89c8e776f154|'+
|
||||
'4d4151a4ed3a8b87b9ce',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #21',
|
||||
dict(mode='CCM', nonce='0027ca0c7120bc3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'ec46bb63b02520c33c49fd70|b96b49e21d621741632875db7f6c9243d2d7c2',
|
||||
'ec46bb63b02520c33c49fd70|31d750a09da3ed7fddd49a2032aabf17ec8ebf|'+
|
||||
'7d22c8088c666be5c197',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #22',
|
||||
dict(mode='CCM', nonce='005b8ccbcd9af83c9696766cfa')
|
||||
),
|
||||
(
|
||||
'47a65ac78b3d594227e85e71|e2fcfbb880442c731bf95167c8ffd7895e337076',
|
||||
'47a65ac78b3d594227e85e71|e882f1dbd38ce3eda7c23f04dd65071eb41342ac|'+
|
||||
'df7e00dccec7ae52987d',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #23',
|
||||
dict(mode='CCM', nonce='003ebe94044b9a3c9696766cfa')
|
||||
),
|
||||
(
|
||||
'6e37a6ef546d955d34ab6059|abf21c0b02feb88f856df4a37381bce3cc128517d4',
|
||||
'6e37a6ef546d955d34ab6059|f32905b88a641b04b9c9ffb58cc390900f3da12ab1|'+
|
||||
'6dce9e82efa16da62059',
|
||||
'd7828d13b2b0bdc325a76236df93cc6b',
|
||||
'RFC3610 Packet Vector #24',
|
||||
dict(mode='CCM', nonce='008d493b30ae8b3c9696766cfa')
|
||||
),
|
||||
|
||||
# Test vectors for EAX taken from http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf
|
||||
# This is a list of tuples with 5 items:
|
||||
#
|
||||
# 1. Header + '|' + plaintext
|
||||
# 2. Header + '|' + ciphertext + '|' + MAC
|
||||
# 3. AES-128 key
|
||||
# 4. Description
|
||||
# 5. Dictionary of parameters to be passed to AES.new(). It must
|
||||
# include the nonce.
|
||||
#
|
||||
( '6bfb914fd07eae6b|',
|
||||
'6bfb914fd07eae6b||e037830e8389f27b025a2d6527e79d01',
|
||||
'233952dee4d5ed5f9b9c6d6ff80ff478',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='62EC67F9C3A4A407FCB2A8C49031A8B3')
|
||||
),
|
||||
|
||||
( 'fa3bfd4806eb53fa|f7fb',
|
||||
'fa3bfd4806eb53fa|19dd|5c4c9331049d0bdab0277408f67967e5',
|
||||
'91945d3f4dcbee0bf45ef52255f095a4',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='BECAF043B0A23D843194BA972C66DEBD')
|
||||
),
|
||||
|
||||
( '234a3463c1264ac6|1a47cb4933',
|
||||
'234a3463c1264ac6|d851d5bae0|3a59f238a23e39199dc9266626c40f80',
|
||||
'01f74ad64077f2e704c0f60ada3dd523',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='70C3DB4F0D26368400A10ED05D2BFF5E')
|
||||
),
|
||||
|
||||
( '33cce2eabff5a79d|481c9e39b1',
|
||||
'33cce2eabff5a79d|632a9d131a|d4c168a4225d8e1ff755939974a7bede',
|
||||
'd07cf6cbb7f313bdde66b727afd3c5e8',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='8408DFFF3C1A2B1292DC199E46B7D617')
|
||||
),
|
||||
|
||||
( 'aeb96eaebe2970e9|40d0c07da5e4',
|
||||
'aeb96eaebe2970e9|071dfe16c675|cb0677e536f73afe6a14b74ee49844dd',
|
||||
'35b6d0580005bbc12b0587124557d2c2',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='FDB6B06676EEDC5C61D74276E1F8E816')
|
||||
),
|
||||
|
||||
( 'd4482d1ca78dce0f|4de3b35c3fc039245bd1fb7d',
|
||||
'd4482d1ca78dce0f|835bb4f15d743e350e728414|abb8644fd6ccb86947c5e10590210a4f',
|
||||
'bd8e6e11475e60b268784c38c62feb22',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='6EAC5C93072D8E8513F750935E46DA1B')
|
||||
),
|
||||
|
||||
( '65d2017990d62528|8b0a79306c9ce7ed99dae4f87f8dd61636',
|
||||
'65d2017990d62528|02083e3979da014812f59f11d52630da30|137327d10649b0aa6e1c181db617d7f2',
|
||||
'7c77d6e813bed5ac98baa417477a2e7d',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='1A8C98DCD73D38393B2BF1569DEEFC19')
|
||||
),
|
||||
|
||||
( '54b9f04e6a09189a|1bda122bce8a8dbaf1877d962b8592dd2d56',
|
||||
'54b9f04e6a09189a|2ec47b2c4954a489afc7ba4897edcdae8cc3|3b60450599bd02c96382902aef7f832a',
|
||||
'5fff20cafab119ca2fc73549e20f5b0d',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='DDE59B97D722156D4D9AFF2BC7559826')
|
||||
),
|
||||
|
||||
( '899a175897561d7e|6cf36720872b8513f6eab1a8a44438d5ef11',
|
||||
'899a175897561d7e|0de18fd0fdd91e7af19f1d8ee8733938b1e8|e7f6d2231618102fdb7fe55ff1991700',
|
||||
'a4a4782bcffd3ec5e7ef6d8c34a56123',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='B781FCF2F75FA5A8DE97A9CA48E522EC')
|
||||
),
|
||||
|
||||
( '126735fcc320d25a|ca40d7446e545ffaed3bd12a740a659ffbbb3ceab7',
|
||||
'126735fcc320d25a|cb8920f87a6c75cff39627b56e3ed197c552d295a7|cfc46afc253b4652b1af3795b124ab6e',
|
||||
'8395fcf1e95bebd697bd010bc766aac3',
|
||||
'EAX spec Appendix G',
|
||||
dict(mode='EAX', nonce='22E7ADD93CFC6393C57EC0B3C17D6B44')
|
||||
),
|
||||
|
||||
# Test vectors for SIV taken from RFC5297
|
||||
# This is a list of tuples with 5 items:
|
||||
#
|
||||
# 1. Header + '|' + plaintext
|
||||
# 2. Header + '|' + ciphertext + '|' + MAC
|
||||
# 3. AES-128 key
|
||||
# 4. Description
|
||||
# 5. Dictionary of parameters to be passed to AES.new().
|
||||
# It must include the nonce.
|
||||
#
|
||||
# A "Header" is a dash ('-') separated sequece of components.
|
||||
#
|
||||
( '101112131415161718191a1b1c1d1e1f2021222324252627|112233445566778899aabbccddee',
|
||||
'101112131415161718191a1b1c1d1e1f2021222324252627|40c02b9690c4dc04daef7f6afe5c|' +
|
||||
'85632d07c6e8f37f950acd320a2ecc93',
|
||||
'fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff',
|
||||
'RFC5297 A.1',
|
||||
dict(mode='SIV', nonce=None)
|
||||
),
|
||||
|
||||
( '00112233445566778899aabbccddeeffdeaddadadeaddadaffeeddccbbaa9988' +
|
||||
'7766554433221100-102030405060708090a0|' +
|
||||
'7468697320697320736f6d6520706c61696e7465787420746f20656e63727970' +
|
||||
'74207573696e67205349562d414553',
|
||||
|
||||
'00112233445566778899aabbccddeeffdeaddadadeaddadaffeeddccbbaa9988' +
|
||||
'7766554433221100-102030405060708090a0|' +
|
||||
'cb900f2fddbe404326601965c889bf17dba77ceb094fa663b7a3f748ba8af829' +
|
||||
'ea64ad544a272e9c485b62a3fd5c0d|' +
|
||||
'7bdb6e3b432667eb06f4d14bff2fbd0f',
|
||||
|
||||
'7f7e7d7c7b7a79787776757473727170404142434445464748494a4b4c4d4e4f',
|
||||
'RFC5297 A.2',
|
||||
dict(mode='SIV', nonce='09f911029d74e35bd84156c5635688c0')
|
||||
),
|
||||
|
||||
# Test vectors for GCM taken from
|
||||
# http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf
|
||||
# This is a list of tuples with 5 items:
|
||||
#
|
||||
# 1. Header + '|' + plaintext
|
||||
# 2. Header + '|' + ciphertext + '|' + MAC
|
||||
# 3. AES-128 key
|
||||
# 4. Description
|
||||
# 5. Dictionary of parameters to be passed to AES.new().
|
||||
# It must include the nonce.
|
||||
#
|
||||
( '|',
|
||||
'||58e2fccefa7e3061367f1d57a4e7455a',
|
||||
'00000000000000000000000000000000',
|
||||
'GCM Test Case 1',
|
||||
dict(mode='GCM', nonce='000000000000000000000000')
|
||||
),
|
||||
|
||||
( '|00000000000000000000000000000000',
|
||||
'|0388dace60b6a392f328c2b971b2fe78|ab6e47d42cec13bdf53a67b21257bddf',
|
||||
'00000000000000000000000000000000',
|
||||
'GCM Test Case 2',
|
||||
dict(mode='GCM', nonce='000000000000000000000000')
|
||||
),
|
||||
|
||||
( '|d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255',
|
||||
'|42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e' +
|
||||
'21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f5985|' +
|
||||
'4d5c2af327cd64a62cf35abd2ba6fab4',
|
||||
'feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 3',
|
||||
dict(mode='GCM', nonce='cafebabefacedbaddecaf888')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e' +
|
||||
'21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091|' +
|
||||
'5bc94fbc3221a5db94fae95ae7121a47',
|
||||
'feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 4',
|
||||
dict(mode='GCM', nonce='cafebabefacedbaddecaf888')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c7423' +
|
||||
'73806900e49f24b22b097544d4896b424989b5e1ebac0f07c23f4598|' +
|
||||
'3612d2e79e3b0785561be14aaca2fccb',
|
||||
'feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 5',
|
||||
dict(mode='GCM', nonce='cafebabefacedbad')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca7' +
|
||||
'01e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5|' +
|
||||
'619cc5aefffe0bfa462af43c1699d050',
|
||||
'feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 6',
|
||||
dict(mode='GCM', nonce='9313225df88406e555909c5aff5269aa'+
|
||||
'6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b5254'+
|
||||
'16aedbf5a0de6a57a637b39b' )
|
||||
),
|
||||
|
||||
( '|',
|
||||
'||cd33b28ac773f74ba00ed1f312572435',
|
||||
'000000000000000000000000000000000000000000000000',
|
||||
'GCM Test Case 7',
|
||||
dict(mode='GCM', nonce='000000000000000000000000')
|
||||
),
|
||||
|
||||
( '|00000000000000000000000000000000',
|
||||
'|98e7247c07f0fe411c267e4384b0f600|2ff58d80033927ab8ef4d4587514f0fb',
|
||||
'000000000000000000000000000000000000000000000000',
|
||||
'GCM Test Case 8',
|
||||
dict(mode='GCM', nonce='000000000000000000000000')
|
||||
),
|
||||
|
||||
( '|d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255',
|
||||
'|3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c' +
|
||||
'7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710acade256|' +
|
||||
'9924a7c8587336bfb118024db8674a14',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c',
|
||||
'GCM Test Case 9',
|
||||
dict(mode='GCM', nonce='cafebabefacedbaddecaf888')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c' +
|
||||
'7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710|' +
|
||||
'2519498e80f1478f37ba55bd6d27618c',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c',
|
||||
'GCM Test Case 10',
|
||||
dict(mode='GCM', nonce='cafebabefacedbaddecaf888')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'0f10f599ae14a154ed24b36e25324db8c566632ef2bbb34f8347280fc4507057' +
|
||||
'fddc29df9a471f75c66541d4d4dad1c9e93a19a58e8b473fa0f062f7|' +
|
||||
'65dcc57fcf623a24094fcca40d3533f8',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c',
|
||||
'GCM Test Case 11',
|
||||
dict(mode='GCM', nonce='cafebabefacedbad')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd27e88681ce3243c4830165a8fdcf9ff1de9a1d8e6b447ef6ef7b79828666e45' +
|
||||
'81e79012af34ddd9e2f037589b292db3e67c036745fa22e7e9b7373b|' +
|
||||
'dcf566ff291c25bbb8568fc3d376a6d9',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c',
|
||||
'GCM Test Case 12',
|
||||
dict(mode='GCM', nonce='9313225df88406e555909c5aff5269aa'+
|
||||
'6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b5254'+
|
||||
'16aedbf5a0de6a57a637b39b' )
|
||||
),
|
||||
|
||||
( '|',
|
||||
'||530f8afbc74536b9a963b4f1c4cb738b',
|
||||
'0000000000000000000000000000000000000000000000000000000000000000',
|
||||
'GCM Test Case 13',
|
||||
dict(mode='GCM', nonce='000000000000000000000000')
|
||||
),
|
||||
|
||||
( '|00000000000000000000000000000000',
|
||||
'|cea7403d4d606b6e074ec5d3baf39d18|d0d1c8a799996bf0265b98b5d48ab919',
|
||||
'0000000000000000000000000000000000000000000000000000000000000000',
|
||||
'GCM Test Case 14',
|
||||
dict(mode='GCM', nonce='000000000000000000000000')
|
||||
),
|
||||
|
||||
( '|d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255',
|
||||
'|522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa' +
|
||||
'8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad|' +
|
||||
'b094dac5d93471bdec1a502270e3cc6c',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 15',
|
||||
dict(mode='GCM', nonce='cafebabefacedbaddecaf888')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa' +
|
||||
'8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662|' +
|
||||
'76fc6ece0f4e1768cddf8853bb2d551b',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 16',
|
||||
dict(mode='GCM', nonce='cafebabefacedbaddecaf888')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'c3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0' +
|
||||
'feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f|' +
|
||||
'3a337dbf46a792c45e454913fe2ea8f2',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 17',
|
||||
dict(mode='GCM', nonce='cafebabefacedbad')
|
||||
),
|
||||
|
||||
( 'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72' +
|
||||
'1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39',
|
||||
'feedfacedeadbeeffeedfacedeadbeefabaddad2|' +
|
||||
'5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf4' +
|
||||
'0fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3f|' +
|
||||
'a44a8266ee1c8eb0c8b5d4cf5ae9f19a',
|
||||
'feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308',
|
||||
'GCM Test Case 18',
|
||||
dict(mode='GCM', nonce='9313225df88406e555909c5aff5269aa'+
|
||||
'6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b5254'+
|
||||
'16aedbf5a0de6a57a637b39b' )
|
||||
),
|
||||
]
|
||||
|
||||
def get_tests(config={}):
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util import cpuid
|
||||
from common import make_block_tests
|
||||
|
||||
tests = make_block_tests(AES, "AES", test_data, {'use_aesni': False})
|
||||
if cpuid.have_aes_ni():
|
||||
# Run tests with AES-NI instructions if they are available.
|
||||
tests += make_block_tests(AES, "AESNI", test_data, {'use_aesni': True})
|
||||
return tests
|
||||
return make_block_tests(AES, "AES", test_data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import unittest
|
||||
|
Reference in New Issue
Block a user