diff options
| author | Jarod Wilson <jarod@redhat.com> | 2009-05-06 17:29:17 +0800 | 
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2009-06-02 14:04:46 +1000 | 
| commit | f7cb80f2b9fa06730be20d17c80b12e511a36c1c (patch) | |
| tree | 09bf6f66a518adbceb32b8821b671af3f2f216ac | |
| parent | f8b0d4d09dc9d0a73fcdcf6c2724650529ec417d (diff) | |
| download | olio-linux-3.10-f7cb80f2b9fa06730be20d17c80b12e511a36c1c.tar.xz olio-linux-3.10-f7cb80f2b9fa06730be20d17c80b12e511a36c1c.zip  | |
crypto: testmgr - Add ctr(aes) test vectors
Now with multi-block test vectors, all from SP800-38A, Appendix F.5.
Also added ctr(aes) to case 10 in tcrypt.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
| -rw-r--r-- | crypto/tcrypt.c | 1 | ||||
| -rw-r--r-- | crypto/testmgr.c | 23 | ||||
| -rw-r--r-- | crypto/testmgr.h | 166 | 
3 files changed, 183 insertions, 7 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index ea3b8a8db72..9e4974eb782 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -526,6 +526,7 @@ static void do_test(int m)  		tcrypt_test("cbc(aes)");  		tcrypt_test("lrw(aes)");  		tcrypt_test("xts(aes)"); +		tcrypt_test("ctr(aes)");  		tcrypt_test("rfc3686(ctr(aes))");  		break; diff --git a/crypto/testmgr.c b/crypto/testmgr.c index c5550943411..f4cc1780aee 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -1568,6 +1568,21 @@ static const struct alg_test_desc alg_test_descs[] = {  			}  		}  	}, { +		.alg = "ctr(aes)", +		.test = alg_test_skcipher, +		.suite = { +			.cipher = { +				.enc = { +					.vecs = aes_ctr_enc_tv_template, +					.count = AES_CTR_ENC_TEST_VECTORS +				}, +				.dec = { +					.vecs = aes_ctr_dec_tv_template, +					.count = AES_CTR_DEC_TEST_VECTORS +				} +			} +		} +	}, {  		.alg = "cts(cbc(aes))",  		.test = alg_test_skcipher,  		.suite = { @@ -2017,12 +2032,12 @@ static const struct alg_test_desc alg_test_descs[] = {  		.suite = {  			.cipher = {  				.enc = { -					.vecs = aes_ctr_enc_tv_template, -					.count = AES_CTR_ENC_TEST_VECTORS +					.vecs = aes_ctr_rfc3686_enc_tv_template, +					.count = AES_CTR_3686_ENC_TEST_VECTORS  				},  				.dec = { -					.vecs = aes_ctr_dec_tv_template, -					.count = AES_CTR_DEC_TEST_VECTORS +					.vecs = aes_ctr_rfc3686_dec_tv_template, +					.count = AES_CTR_3686_DEC_TEST_VECTORS  				}  			}  		} diff --git a/crypto/testmgr.h b/crypto/testmgr.h index c1c709b57dd..69316228fc1 100644 --- a/crypto/testmgr.h +++ b/crypto/testmgr.h @@ -2854,8 +2854,10 @@ static struct cipher_testvec cast6_dec_tv_template[] = {  #define AES_LRW_DEC_TEST_VECTORS 8  #define AES_XTS_ENC_TEST_VECTORS 4  #define AES_XTS_DEC_TEST_VECTORS 4 -#define AES_CTR_ENC_TEST_VECTORS 7 -#define AES_CTR_DEC_TEST_VECTORS 6 +#define AES_CTR_ENC_TEST_VECTORS 3 +#define AES_CTR_DEC_TEST_VECTORS 3 +#define AES_CTR_3686_ENC_TEST_VECTORS 7 +#define AES_CTR_3686_DEC_TEST_VECTORS 6  #define AES_GCM_ENC_TEST_VECTORS 9  #define AES_GCM_DEC_TEST_VECTORS 8  #define AES_CCM_ENC_TEST_VECTORS 7 @@ -3998,6 +4000,164 @@ static struct cipher_testvec aes_xts_dec_tv_template[] = {  static struct cipher_testvec aes_ctr_enc_tv_template[] = { +	{ /* From NIST Special Publication 800-38A, Appendix F.5 */ +		.key	= "\x2b\x7e\x15\x16\x28\xae\xd2\xa6" +			  "\xab\xf7\x15\x88\x09\xcf\x4f\x3c", +		.klen	= 16, +		.iv	= "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" +			  "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", +		.input	= "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" +			  "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" +			  "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" +			  "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" +			  "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" +			  "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" +			  "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" +			  "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", +		.ilen	= 64, +		.result	= "\x87\x4d\x61\x91\xb6\x20\xe3\x26" +			  "\x1b\xef\x68\x64\x99\x0d\xb6\xce" +			  "\x98\x06\xf6\x6b\x79\x70\xfd\xff" +			  "\x86\x17\x18\x7b\xb9\xff\xfd\xff" +			  "\x5a\xe4\xdf\x3e\xdb\xd5\xd3\x5e" +			  "\x5b\x4f\x09\x02\x0d\xb0\x3e\xab" +			  "\x1e\x03\x1d\xda\x2f\xbe\x03\xd1" +			  "\x79\x21\x70\xa0\xf3\x00\x9c\xee", +		.rlen	= 64, +	}, { +		.key	= "\x8e\x73\xb0\xf7\xda\x0e\x64\x52" +			  "\xc8\x10\xf3\x2b\x80\x90\x79\xe5" +			  "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b", +		.klen	= 24, +		.iv	= "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" +			  "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", +		.input	= "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" +			  "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" +			  "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" +			  "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" +			  "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" +			  "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" +			  "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" +			  "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", +		.ilen	= 64, +		.result	= "\x1a\xbc\x93\x24\x17\x52\x1c\xa2" +			  "\x4f\x2b\x04\x59\xfe\x7e\x6e\x0b" +			  "\x09\x03\x39\xec\x0a\xa6\xfa\xef" +			  "\xd5\xcc\xc2\xc6\xf4\xce\x8e\x94" +			  "\x1e\x36\xb2\x6b\xd1\xeb\xc6\x70" +			  "\xd1\xbd\x1d\x66\x56\x20\xab\xf7" +			  "\x4f\x78\xa7\xf6\xd2\x98\x09\x58" +			  "\x5a\x97\xda\xec\x58\xc6\xb0\x50", +		.rlen	= 64, +	}, { +		.key	= "\x60\x3d\xeb\x10\x15\xca\x71\xbe" +			  "\x2b\x73\xae\xf0\x85\x7d\x77\x81" +			  "\x1f\x35\x2c\x07\x3b\x61\x08\xd7" +			  "\x2d\x98\x10\xa3\x09\x14\xdf\xf4", +		.klen	= 32, +		.iv	= "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" +			  "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", +		.input	= "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" +			  "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" +			  "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" +			  "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" +			  "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" +			  "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" +			  "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" +			  "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", +		.ilen	= 64, +		.result	= "\x60\x1e\xc3\x13\x77\x57\x89\xa5" +			  "\xb7\xa7\xf5\x04\xbb\xf3\xd2\x28" +			  "\xf4\x43\xe3\xca\x4d\x62\xb5\x9a" +			  "\xca\x84\xe9\x90\xca\xca\xf5\xc5" +			  "\x2b\x09\x30\xda\xa2\x3d\xe9\x4c" +			  "\xe8\x70\x17\xba\x2d\x84\x98\x8d" +			  "\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6" +			  "\x13\xc2\xdd\x08\x45\x79\x41\xa6", +		.rlen	= 64, +	} +}; + +static struct cipher_testvec aes_ctr_dec_tv_template[] = { +	{ /* From NIST Special Publication 800-38A, Appendix F.5 */ +		.key	= "\x2b\x7e\x15\x16\x28\xae\xd2\xa6" +			  "\xab\xf7\x15\x88\x09\xcf\x4f\x3c", +		.klen	= 16, +		.iv	= "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" +			  "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", +		.input	= "\x87\x4d\x61\x91\xb6\x20\xe3\x26" +			  "\x1b\xef\x68\x64\x99\x0d\xb6\xce" +			  "\x98\x06\xf6\x6b\x79\x70\xfd\xff" +			  "\x86\x17\x18\x7b\xb9\xff\xfd\xff" +			  "\x5a\xe4\xdf\x3e\xdb\xd5\xd3\x5e" +			  "\x5b\x4f\x09\x02\x0d\xb0\x3e\xab" +			  "\x1e\x03\x1d\xda\x2f\xbe\x03\xd1" +			  "\x79\x21\x70\xa0\xf3\x00\x9c\xee", +		.ilen	= 64, +		.result	= "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" +			  "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" +			  "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" +			  "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" +			  "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" +			  "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" +			  "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" +			  "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", +		.rlen	= 64, +	}, { +		.key	= "\x8e\x73\xb0\xf7\xda\x0e\x64\x52" +			  "\xc8\x10\xf3\x2b\x80\x90\x79\xe5" +			  "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b", +		.klen	= 24, +		.iv	= "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" +			  "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", +		.input	= "\x1a\xbc\x93\x24\x17\x52\x1c\xa2" +			  "\x4f\x2b\x04\x59\xfe\x7e\x6e\x0b" +			  "\x09\x03\x39\xec\x0a\xa6\xfa\xef" +			  "\xd5\xcc\xc2\xc6\xf4\xce\x8e\x94" +			  "\x1e\x36\xb2\x6b\xd1\xeb\xc6\x70" +			  "\xd1\xbd\x1d\x66\x56\x20\xab\xf7" +			  "\x4f\x78\xa7\xf6\xd2\x98\x09\x58" +			  "\x5a\x97\xda\xec\x58\xc6\xb0\x50", +		.ilen	= 64, +		.result	= "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" +			  "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" +			  "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" +			  "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" +			  "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" +			  "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" +			  "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" +			  "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", +		.rlen	= 64, +	}, { +		.key	= "\x60\x3d\xeb\x10\x15\xca\x71\xbe" +			  "\x2b\x73\xae\xf0\x85\x7d\x77\x81" +			  "\x1f\x35\x2c\x07\x3b\x61\x08\xd7" +			  "\x2d\x98\x10\xa3\x09\x14\xdf\xf4", +		.klen	= 32, +		.iv	= "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" +			  "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", +		.input	= "\x60\x1e\xc3\x13\x77\x57\x89\xa5" +			  "\xb7\xa7\xf5\x04\xbb\xf3\xd2\x28" +			  "\xf4\x43\xe3\xca\x4d\x62\xb5\x9a" +			  "\xca\x84\xe9\x90\xca\xca\xf5\xc5" +			  "\x2b\x09\x30\xda\xa2\x3d\xe9\x4c" +			  "\xe8\x70\x17\xba\x2d\x84\x98\x8d" +			  "\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6" +			  "\x13\xc2\xdd\x08\x45\x79\x41\xa6", +		.ilen	= 64, +		.result	= "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" +			  "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" +			  "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" +			  "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" +			  "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" +			  "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" +			  "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" +			  "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", +		.rlen	= 64, +	} +}; + +static struct cipher_testvec aes_ctr_rfc3686_enc_tv_template[] = {  	{ /* From RFC 3686 */  		.key	= "\xae\x68\x52\xf8\x12\x10\x67\xcc"  			  "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" @@ -5129,7 +5289,7 @@ static struct cipher_testvec aes_ctr_enc_tv_template[] = {  	},  }; -static struct cipher_testvec aes_ctr_dec_tv_template[] = { +static struct cipher_testvec aes_ctr_rfc3686_dec_tv_template[] = {  	{ /* From RFC 3686 */  		.key	= "\xae\x68\x52\xf8\x12\x10\x67\xcc"  			  "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"  |