diff options
| author | Noriaki TAKAMIYA <takamiya@po.ntts.co.jp> | 2007-01-24 05:48:19 -0500 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2007-02-06 17:21:04 -0500 |
| commit | 02ab5a7056bd8441ba6ae8ba8662d4296c202ecb (patch) | |
| tree | 082be6135a568adf899590ba00ea7ac14537f8b6 /crypto | |
| parent | d64beac050914de6fe6565741b39905ecd5994b7 (diff) | |
[CRYPTO] camellia: added the testing code of Camellia cipher
This patch adds the code of Camellia code for testing module.
Signed-off-by: Noriaki TAKAMIYA <takamiya@po.ntts.co.jp>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
| -rw-r--r-- | crypto/tcrypt.c | 42 | ||||
| -rw-r--r-- | crypto/tcrypt.h | 165 |
2 files changed, 206 insertions, 1 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 8c8e2f95dc7e..f5e9da319ece 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
| @@ -73,7 +73,7 @@ static char *check[] = { | |||
| 73 | "twofish", "serpent", "sha384", "sha512", "md4", "aes", "cast6", | 73 | "twofish", "serpent", "sha384", "sha512", "md4", "aes", "cast6", |
| 74 | "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea", | 74 | "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea", |
| 75 | "khazad", "wp512", "wp384", "wp256", "tnepres", "xeta", "fcrypt", | 75 | "khazad", "wp512", "wp384", "wp256", "tnepres", "xeta", "fcrypt", |
| 76 | NULL | 76 | "camellia", NULL |
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | static void hexdump(unsigned char *buf, unsigned int len) | 79 | static void hexdump(unsigned char *buf, unsigned int len) |
| @@ -972,6 +972,20 @@ static void do_test(void) | |||
| 972 | test_cipher("pcbc(fcrypt)", DECRYPT, fcrypt_pcbc_dec_tv_template, | 972 | test_cipher("pcbc(fcrypt)", DECRYPT, fcrypt_pcbc_dec_tv_template, |
| 973 | FCRYPT_DEC_TEST_VECTORS); | 973 | FCRYPT_DEC_TEST_VECTORS); |
| 974 | 974 | ||
| 975 | //CAMELLIA | ||
| 976 | test_cipher("ecb(camellia)", ENCRYPT, | ||
| 977 | camellia_enc_tv_template, | ||
| 978 | CAMELLIA_ENC_TEST_VECTORS); | ||
| 979 | test_cipher("ecb(camellia)", DECRYPT, | ||
| 980 | camellia_dec_tv_template, | ||
| 981 | CAMELLIA_DEC_TEST_VECTORS); | ||
| 982 | test_cipher("cbc(camellia)", ENCRYPT, | ||
| 983 | camellia_cbc_enc_tv_template, | ||
| 984 | CAMELLIA_CBC_ENC_TEST_VECTORS); | ||
| 985 | test_cipher("cbc(camellia)", DECRYPT, | ||
| 986 | camellia_cbc_dec_tv_template, | ||
| 987 | CAMELLIA_CBC_DEC_TEST_VECTORS); | ||
| 988 | |||
| 975 | test_hash("sha384", sha384_tv_template, SHA384_TEST_VECTORS); | 989 | test_hash("sha384", sha384_tv_template, SHA384_TEST_VECTORS); |
| 976 | test_hash("sha512", sha512_tv_template, SHA512_TEST_VECTORS); | 990 | test_hash("sha512", sha512_tv_template, SHA512_TEST_VECTORS); |
| 977 | test_hash("wp512", wp512_tv_template, WP512_TEST_VECTORS); | 991 | test_hash("wp512", wp512_tv_template, WP512_TEST_VECTORS); |
| @@ -1196,6 +1210,21 @@ static void do_test(void) | |||
| 1196 | FCRYPT_DEC_TEST_VECTORS); | 1210 | FCRYPT_DEC_TEST_VECTORS); |
| 1197 | break; | 1211 | break; |
| 1198 | 1212 | ||
| 1213 | case 32: | ||
| 1214 | test_cipher("ecb(camellia)", ENCRYPT, | ||
| 1215 | camellia_enc_tv_template, | ||
| 1216 | CAMELLIA_ENC_TEST_VECTORS); | ||
| 1217 | test_cipher("ecb(camellia)", DECRYPT, | ||
| 1218 | camellia_dec_tv_template, | ||
| 1219 | CAMELLIA_DEC_TEST_VECTORS); | ||
| 1220 | test_cipher("cbc(camellia)", ENCRYPT, | ||
| 1221 | camellia_cbc_enc_tv_template, | ||
| 1222 | CAMELLIA_CBC_ENC_TEST_VECTORS); | ||
| 1223 | test_cipher("cbc(camellia)", DECRYPT, | ||
| 1224 | camellia_cbc_dec_tv_template, | ||
| 1225 | CAMELLIA_CBC_DEC_TEST_VECTORS); | ||
| 1226 | break; | ||
| 1227 | |||
| 1199 | case 100: | 1228 | case 100: |
| 1200 | test_hash("hmac(md5)", hmac_md5_tv_template, | 1229 | test_hash("hmac(md5)", hmac_md5_tv_template, |
| 1201 | HMAC_MD5_TEST_VECTORS); | 1230 | HMAC_MD5_TEST_VECTORS); |
| @@ -1289,6 +1318,17 @@ static void do_test(void) | |||
| 1289 | des_speed_template); | 1318 | des_speed_template); |
| 1290 | break; | 1319 | break; |
| 1291 | 1320 | ||
| 1321 | case 205: | ||
| 1322 | test_cipher_speed("ecb(camellia)", ENCRYPT, sec, NULL, 0, | ||
| 1323 | camellia_speed_template); | ||
| 1324 | test_cipher_speed("ecb(camellia)", DECRYPT, sec, NULL, 0, | ||
| 1325 | camellia_speed_template); | ||
| 1326 | test_cipher_speed("cbc(camellia)", ENCRYPT, sec, NULL, 0, | ||
| 1327 | camellia_speed_template); | ||
| 1328 | test_cipher_speed("cbc(camellia)", DECRYPT, sec, NULL, 0, | ||
| 1329 | camellia_speed_template); | ||
| 1330 | break; | ||
| 1331 | |||
| 1292 | case 300: | 1332 | case 300: |
| 1293 | /* fall through */ | 1333 | /* fall through */ |
| 1294 | 1334 | ||
diff --git a/crypto/tcrypt.h b/crypto/tcrypt.h index ec77814d104e..887527bd5bc6 100644 --- a/crypto/tcrypt.h +++ b/crypto/tcrypt.h | |||
| @@ -3688,6 +3688,150 @@ static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = { | |||
| 3688 | }; | 3688 | }; |
| 3689 | 3689 | ||
| 3690 | /* | 3690 | /* |
| 3691 | * CAMELLIA test vectors. | ||
| 3692 | */ | ||
| 3693 | #define CAMELLIA_ENC_TEST_VECTORS 3 | ||
| 3694 | #define CAMELLIA_DEC_TEST_VECTORS 3 | ||
| 3695 | #define CAMELLIA_CBC_ENC_TEST_VECTORS 2 | ||
| 3696 | #define CAMELLIA_CBC_DEC_TEST_VECTORS 2 | ||
| 3697 | |||
| 3698 | static struct cipher_testvec camellia_enc_tv_template[] = { | ||
| 3699 | { | ||
| 3700 | .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3701 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3702 | .klen = 16, | ||
| 3703 | .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3704 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3705 | .ilen = 16, | ||
| 3706 | .result = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, | ||
| 3707 | 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 }, | ||
| 3708 | .rlen = 16, | ||
| 3709 | }, { | ||
| 3710 | .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3711 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, | ||
| 3712 | 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, | ||
| 3713 | .klen = 24, | ||
| 3714 | .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3715 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3716 | .ilen = 16, | ||
| 3717 | .result = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, | ||
| 3718 | 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 }, | ||
| 3719 | .rlen = 16, | ||
| 3720 | }, { | ||
| 3721 | .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3722 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, | ||
| 3723 | 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, | ||
| 3724 | 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, | ||
| 3725 | .klen = 32, | ||
| 3726 | .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3727 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3728 | .ilen = 16, | ||
| 3729 | .result = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, | ||
| 3730 | 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 }, | ||
| 3731 | .rlen = 16, | ||
| 3732 | }, | ||
| 3733 | }; | ||
| 3734 | |||
| 3735 | static struct cipher_testvec camellia_dec_tv_template[] = { | ||
| 3736 | { | ||
| 3737 | .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3738 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3739 | .klen = 16, | ||
| 3740 | .input = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, | ||
| 3741 | 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 }, | ||
| 3742 | .ilen = 16, | ||
| 3743 | .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3744 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3745 | .rlen = 16, | ||
| 3746 | }, { | ||
| 3747 | .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3748 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, | ||
| 3749 | 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, | ||
| 3750 | .klen = 24, | ||
| 3751 | .input = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, | ||
| 3752 | 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 }, | ||
| 3753 | .ilen = 16, | ||
| 3754 | .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3755 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3756 | .rlen = 16, | ||
| 3757 | }, { | ||
| 3758 | .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3759 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, | ||
| 3760 | 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, | ||
| 3761 | 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, | ||
| 3762 | .klen = 32, | ||
| 3763 | .input = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, | ||
| 3764 | 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 }, | ||
| 3765 | .ilen = 16, | ||
| 3766 | .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, | ||
| 3767 | 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, | ||
| 3768 | .rlen = 16, | ||
| 3769 | }, | ||
| 3770 | }; | ||
| 3771 | |||
| 3772 | static struct cipher_testvec camellia_cbc_enc_tv_template[] = { | ||
| 3773 | { | ||
| 3774 | .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b, | ||
| 3775 | 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 }, | ||
| 3776 | .klen = 16, | ||
| 3777 | .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30, | ||
| 3778 | 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 }, | ||
| 3779 | .input = { "Single block msg" }, | ||
| 3780 | .ilen = 16, | ||
| 3781 | .result = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7, | ||
| 3782 | 0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 }, | ||
| 3783 | .rlen = 16, | ||
| 3784 | }, { | ||
| 3785 | .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, | ||
| 3786 | 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a }, | ||
| 3787 | .klen = 16, | ||
| 3788 | .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, | ||
| 3789 | 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 }, | ||
| 3790 | .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | ||
| 3791 | 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | ||
| 3792 | 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | ||
| 3793 | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, | ||
| 3794 | .ilen = 32, | ||
| 3795 | .result = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01, | ||
| 3796 | 0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd, | ||
| 3797 | 0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0, | ||
| 3798 | 0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 }, | ||
| 3799 | .rlen = 32, | ||
| 3800 | }, | ||
| 3801 | }; | ||
| 3802 | |||
| 3803 | static struct cipher_testvec camellia_cbc_dec_tv_template[] = { | ||
| 3804 | { | ||
| 3805 | .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b, | ||
| 3806 | 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 }, | ||
| 3807 | .klen = 16, | ||
| 3808 | .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30, | ||
| 3809 | 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 }, | ||
| 3810 | .input = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7, | ||
| 3811 | 0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 }, | ||
| 3812 | .ilen = 16, | ||
| 3813 | .result = { "Single block msg" }, | ||
| 3814 | .rlen = 16, | ||
| 3815 | }, { | ||
| 3816 | .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, | ||
| 3817 | 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a }, | ||
| 3818 | .klen = 16, | ||
| 3819 | .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, | ||
| 3820 | 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 }, | ||
| 3821 | .input = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01, | ||
| 3822 | 0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd, | ||
| 3823 | 0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0, | ||
| 3824 | 0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 }, | ||
| 3825 | .ilen = 32, | ||
| 3826 | .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | ||
| 3827 | 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | ||
| 3828 | 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | ||
| 3829 | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, | ||
| 3830 | .rlen = 32, | ||
| 3831 | }, | ||
| 3832 | }; | ||
| 3833 | |||
| 3834 | /* | ||
| 3691 | * Compression stuff. | 3835 | * Compression stuff. |
| 3692 | */ | 3836 | */ |
| 3693 | #define COMP_BUF_SIZE 512 | 3837 | #define COMP_BUF_SIZE 512 |
| @@ -4140,4 +4284,25 @@ static struct hash_speed generic_hash_speed_template[] = { | |||
| 4140 | { .blen = 0, .plen = 0, } | 4284 | { .blen = 0, .plen = 0, } |
| 4141 | }; | 4285 | }; |
| 4142 | 4286 | ||
| 4287 | static struct cipher_speed camellia_speed_template[] = { | ||
| 4288 | { .klen = 16, .blen = 16, }, | ||
| 4289 | { .klen = 16, .blen = 64, }, | ||
| 4290 | { .klen = 16, .blen = 256, }, | ||
| 4291 | { .klen = 16, .blen = 1024, }, | ||
| 4292 | { .klen = 16, .blen = 8192, }, | ||
| 4293 | { .klen = 24, .blen = 16, }, | ||
| 4294 | { .klen = 24, .blen = 64, }, | ||
| 4295 | { .klen = 24, .blen = 256, }, | ||
| 4296 | { .klen = 24, .blen = 1024, }, | ||
| 4297 | { .klen = 24, .blen = 8192, }, | ||
| 4298 | { .klen = 32, .blen = 16, }, | ||
| 4299 | { .klen = 32, .blen = 64, }, | ||
| 4300 | { .klen = 32, .blen = 256, }, | ||
| 4301 | { .klen = 32, .blen = 1024, }, | ||
| 4302 | { .klen = 32, .blen = 8192, }, | ||
| 4303 | |||
| 4304 | /* End marker */ | ||
| 4305 | { .klen = 0, .blen = 0, } | ||
| 4306 | }; | ||
| 4307 | |||
| 4143 | #endif /* _CRYPTO_TCRYPT_H */ | 4308 | #endif /* _CRYPTO_TCRYPT_H */ |
