aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarod Wilson <jarod@redhat.com>2009-05-04 07:23:40 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2009-06-02 00:04:36 -0400
commit5d667322a25ab4ecb91176db118fd663fee4da35 (patch)
tree0dea05fd2e59b7854370a871fb8f9bb30e5ed94e
parente44a1b44c3a9794236fe038b89a0fbef5adcd523 (diff)
crypto: testmgr - Add self-tests for rfc4309(ccm(aes))
Add an array of encryption and decryption + verification self-tests for rfc4309(ccm(aes)). Test vectors all come from sample FIPS CAVS files provided to Red Hat by a testing lab. Unfortunately, all the published sample vectors in RFC 3610 and NIST Special Publication 800-38C contain nonce lengths that the kernel's rfc4309 implementation doesn't support, so while using some public domain vectors would have been preferred, its not possible at this time. Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--crypto/tcrypt.c4
-rw-r--r--crypto/testmgr.c15
-rw-r--r--crypto/testmgr.h370
3 files changed, 389 insertions, 0 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 50d1e35bbff4..0452036b1d45 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -667,6 +667,10 @@ static void do_test(int m)
667 tcrypt_test("zlib"); 667 tcrypt_test("zlib");
668 break; 668 break;
669 669
670 case 45:
671 tcrypt_test("rfc4309(ccm(aes))");
672 break;
673
670 case 100: 674 case 100:
671 tcrypt_test("hmac(md5)"); 675 tcrypt_test("hmac(md5)");
672 break; 676 break;
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 84f96401b29a..40c10789f7f3 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1879,6 +1879,21 @@ static const struct alg_test_desc alg_test_descs[] = {
1879 } 1879 }
1880 } 1880 }
1881 }, { 1881 }, {
1882 .alg = "rfc4309(ccm(aes))",
1883 .test = alg_test_aead,
1884 .suite = {
1885 .aead = {
1886 .enc = {
1887 .vecs = aes_ccm_rfc4309_enc_tv_template,
1888 .count = AES_CCM_4309_ENC_TEST_VECTORS
1889 },
1890 .dec = {
1891 .vecs = aes_ccm_rfc4309_dec_tv_template,
1892 .count = AES_CCM_4309_DEC_TEST_VECTORS
1893 }
1894 }
1895 }
1896 }, {
1882 .alg = "rmd128", 1897 .alg = "rmd128",
1883 .test = alg_test_hash, 1898 .test = alg_test_hash,
1884 .suite = { 1899 .suite = {
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index b77b61dad262..5add65196a98 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -2848,6 +2848,8 @@ static struct cipher_testvec cast6_dec_tv_template[] = {
2848#define AES_GCM_DEC_TEST_VECTORS 8 2848#define AES_GCM_DEC_TEST_VECTORS 8
2849#define AES_CCM_ENC_TEST_VECTORS 7 2849#define AES_CCM_ENC_TEST_VECTORS 7
2850#define AES_CCM_DEC_TEST_VECTORS 7 2850#define AES_CCM_DEC_TEST_VECTORS 7
2851#define AES_CCM_4309_ENC_TEST_VECTORS 7
2852#define AES_CCM_4309_DEC_TEST_VECTORS 10
2851 2853
2852static struct cipher_testvec aes_enc_tv_template[] = { 2854static struct cipher_testvec aes_enc_tv_template[] = {
2853 { /* From FIPS-197 */ 2855 { /* From FIPS-197 */
@@ -5826,6 +5828,374 @@ static struct aead_testvec aes_ccm_dec_tv_template[] = {
5826 }, 5828 },
5827}; 5829};
5828 5830
5831/*
5832 * rfc4309 refers to section 8 of rfc3610 for test vectors, but they all
5833 * use a 13-byte nonce, we only support an 11-byte nonce. Similarly, all of
5834 * Special Publication 800-38C's test vectors also use nonce lengths our
5835 * implementation doesn't support. The following are taken from fips cavs
5836 * fax files on hand at Red Hat.
5837 *
5838 * nb: actual key lengths are (klen - 3), the last 3 bytes are actually
5839 * part of the nonce which combine w/the iv, but need to be input this way.
5840 */
5841static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
5842 {
5843 .key = "\x83\xac\x54\x66\xc2\xeb\xe5\x05"
5844 "\x2e\x01\xd1\xfc\x5d\x82\x66\x2e"
5845 "\x96\xac\x59",
5846 .klen = 19,
5847 .iv = "\x30\x07\xa1\xe2\xa2\xc7\x55\x24",
5848 .alen = 0,
5849 .input = "\x19\xc8\x81\xf6\xe9\x86\xff\x93"
5850 "\x0b\x78\x67\xe5\xbb\xb7\xfc\x6e"
5851 "\x83\x77\xb3\xa6\x0c\x8c\x9f\x9c"
5852 "\x35\x2e\xad\xe0\x62\xf9\x91\xa1",
5853 .ilen = 32,
5854 .result = "\xab\x6f\xe1\x69\x1d\x19\x99\xa8"
5855 "\x92\xa0\xc4\x6f\x7e\xe2\x8b\xb1"
5856 "\x70\xbb\x8c\xa6\x4c\x6e\x97\x8a"
5857 "\x57\x2b\xbe\x5d\x98\xa6\xb1\x32"
5858 "\xda\x24\xea\xd9\xa1\x39\x98\xfd"
5859 "\xa4\xbe\xd9\xf2\x1a\x6d\x22\xa8",
5860 .rlen = 48,
5861 }, {
5862 .key = "\x1e\x2c\x7e\x01\x41\x9a\xef\xc0"
5863 "\x0d\x58\x96\x6e\x5c\xa2\x4b\xd3"
5864 "\x4f\xa3\x19",
5865 .klen = 19,
5866 .iv = "\xd3\x01\x5a\xd8\x30\x60\x15\x56",
5867 .assoc = "\xda\xe6\x28\x9c\x45\x2d\xfd\x63"
5868 "\x5e\xda\x4c\xb6\xe6\xfc\xf9\xb7"
5869 "\x0c\x56\xcb\xe4\xe0\x05\x7a\xe1"
5870 "\x0a\x63\x09\x78\xbc\x2c\x55\xde",
5871 .alen = 32,
5872 .input = "\x87\xa3\x36\xfd\x96\xb3\x93\x78"
5873 "\xa9\x28\x63\xba\x12\xa3\x14\x85"
5874 "\x57\x1e\x06\xc9\x7b\x21\xef\x76"
5875 "\x7f\x38\x7e\x8e\x29\xa4\x3e\x7e",
5876 .ilen = 32,
5877 .result = "\x8a\x1e\x11\xf0\x02\x6b\xe2\x19"
5878 "\xfc\x70\xc4\x6d\x8e\xb7\x99\xab"
5879 "\xc5\x4b\xa2\xac\xd3\xf3\x48\xff"
5880 "\x3b\xb5\xce\x53\xef\xde\xbb\x02"
5881 "\xa9\x86\x15\x6c\x13\xfe\xda\x0a"
5882 "\x22\xb8\x29\x3d\xd8\x39\x9a\x23",
5883 .rlen = 48,
5884 }, {
5885 .key = "\xf4\x6b\xc2\x75\x62\xfe\xb4\xe1"
5886 "\xa3\xf0\xff\xdd\x4e\x4b\x12\x75"
5887 "\x53\x14\x73\x66\x8d\x88\xf6\x80"
5888 "\xa0\x20\x35",
5889 .klen = 27,
5890 .iv = "\x26\xf2\x21\x8d\x50\x20\xda\xe2",
5891 .assoc = "\x5b\x9e\x13\x67\x02\x5e\xef\xc1"
5892 "\x6c\xf9\xd7\x1e\x52\x8f\x7a\x47"
5893 "\xe9\xd4\xcf\x20\x14\x6e\xf0\x2d"
5894 "\xd8\x9e\x2b\x56\x10\x23\x56\xe7",
5895 .alen = 32,
5896 .ilen = 0,
5897 .result = "\x36\xea\x7a\x70\x08\xdc\x6a\xbc"
5898 "\xad\x0c\x7a\x63\xf6\x61\xfd\x9b",
5899 .rlen = 16,
5900 }, {
5901 .key = "\x56\xdf\x5c\x8f\x26\x3f\x0e\x42"
5902 "\xef\x7a\xd3\xce\xfc\x84\x60\x62"
5903 "\xca\xb4\x40\xaf\x5f\xc9\xc9\x01"
5904 "\xd6\x3c\x8c",
5905 .klen = 27,
5906 .iv = "\x86\x84\xb6\xcd\xef\x09\x2e\x94",
5907 .assoc = "\x02\x65\x78\x3c\xe9\x21\x30\x91"
5908 "\xb1\xb9\xda\x76\x9a\x78\x6d\x95"
5909 "\xf2\x88\x32\xa3\xf2\x50\xcb\x4c"
5910 "\xe3\x00\x73\x69\x84\x69\x87\x79",
5911 .alen = 32,
5912 .input = "\x9f\xd2\x02\x4b\x52\x49\x31\x3c"
5913 "\x43\x69\x3a\x2d\x8e\x70\xad\x7e"
5914 "\xe0\xe5\x46\x09\x80\x89\x13\xb2"
5915 "\x8c\x8b\xd9\x3f\x86\xfb\xb5\x6b",
5916 .ilen = 32,
5917 .result = "\x39\xdf\x7c\x3c\x5a\x29\xb9\x62"
5918 "\x5d\x51\xc2\x16\xd8\xbd\x06\x9f"
5919 "\x9b\x6a\x09\x70\xc1\x51\x83\xc2"
5920 "\x66\x88\x1d\x4f\x9a\xda\xe0\x1e"
5921 "\xc7\x79\x11\x58\xe5\x6b\x20\x40"
5922 "\x7a\xea\x46\x42\x8b\xe4\x6f\xe1",
5923 .rlen = 48,
5924 }, {
5925 .key = "\xe0\x8d\x99\x71\x60\xd7\x97\x1a"
5926 "\xbd\x01\x99\xd5\x8a\xdf\x71\x3a"
5927 "\xd3\xdf\x24\x4b\x5e\x3d\x4b\x4e"
5928 "\x30\x7a\xb9\xd8\x53\x0a\x5e\x2b"
5929 "\x1e\x29\x91",
5930 .klen = 35,
5931 .iv = "\xad\x8e\xc1\x53\x0a\xcf\x2d\xbe",
5932 .assoc = "\x19\xb6\x1f\x57\xc4\xf3\xf0\x8b"
5933 "\x78\x2b\x94\x02\x29\x0f\x42\x27"
5934 "\x6b\x75\xcb\x98\x34\x08\x7e\x79"
5935 "\xe4\x3e\x49\x0d\x84\x8b\x22\x87",
5936 .alen = 32,
5937 .input = "\xe1\xd9\xd8\x13\xeb\x3a\x75\x3f"
5938 "\x9d\xbd\x5f\x66\xbe\xdc\xbb\x66"
5939 "\xbf\x17\x99\x62\x4a\x39\x27\x1f"
5940 "\x1d\xdc\x24\xae\x19\x2f\x98\x4c",
5941 .ilen = 32,
5942 .result = "\x19\xb8\x61\x33\x45\x2b\x43\x96"
5943 "\x6f\x51\xd0\x20\x30\x7d\x9b\xc6"
5944 "\x26\x3d\xf8\xc9\x65\x16\xa8\x9f"
5945 "\xf0\x62\x17\x34\xf2\x1e\x8d\x75"
5946 "\x4e\x13\xcc\xc0\xc3\x2a\x54\x2d",
5947 .rlen = 40,
5948 }, {
5949 .key = "\x7c\xc8\x18\x3b\x8d\x99\xe0\x7c"
5950 "\x45\x41\xb8\xbd\x5c\xa7\xc2\x32"
5951 "\x8a\xb8\x02\x59\xa4\xfe\xa9\x2c"
5952 "\x09\x75\x9a\x9b\x3c\x9b\x27\x39"
5953 "\xf9\xd9\x4e",
5954 .klen = 35,
5955 .iv = "\x63\xb5\x3d\x9d\x43\xf6\x1e\x50",
5956 .assoc = "\x57\xf5\x6b\x8b\x57\x5c\x3d\x3b"
5957 "\x13\x02\x01\x0c\x83\x4c\x96\x35"
5958 "\x8e\xd6\x39\xcf\x7d\x14\x9b\x94"
5959 "\xb0\x39\x36\xe6\x8f\x57\xe0\x13",
5960 .alen = 32,
5961 .input = "\x3b\x6c\x29\x36\xb6\xef\x07\xa6"
5962 "\x83\x72\x07\x4f\xcf\xfa\x66\x89"
5963 "\x5f\xca\xb1\xba\xd5\x8f\x2c\x27"
5964 "\x30\xdb\x75\x09\x93\xd4\x65\xe4",
5965 .ilen = 32,
5966 .result = "\xb0\x88\x5a\x33\xaa\xe5\xc7\x1d"
5967 "\x85\x23\xc7\xc6\x2f\xf4\x1e\x3d"
5968 "\xcc\x63\x44\x25\x07\x78\x4f\x9e"
5969 "\x96\xb8\x88\xeb\xbc\x48\x1f\x06"
5970 "\x39\xaf\x39\xac\xd8\x4a\x80\x39"
5971 "\x7b\x72\x8a\xf7",
5972 .rlen = 44,
5973 }, {
5974 .key = "\xab\xd0\xe9\x33\x07\x26\xe5\x83"
5975 "\x8c\x76\x95\xd4\xb6\xdc\xf3\x46"
5976 "\xf9\x8f\xad\xe3\x02\x13\x83\x77"
5977 "\x3f\xb0\xf1\xa1\xa1\x22\x0f\x2b"
5978 "\x24\xa7\x8b",
5979 .klen = 35,
5980 .iv = "\x07\xcb\xcc\x0e\xe6\x33\xbf\xf5",
5981 .assoc = "\xd4\xdb\x30\x1d\x03\xfe\xfd\x5f"
5982 "\x87\xd4\x8c\xb6\xb6\xf1\x7a\x5d"
5983 "\xab\x90\x65\x8d\x8e\xca\x4d\x4f"
5984 "\x16\x0c\x40\x90\x4b\xc7\x36\x73",
5985 .alen = 32,
5986 .input = "\xf5\xc6\x7d\x48\xc1\xb7\xe6\x92"
5987 "\x97\x5a\xca\xc4\xa9\x6d\xf9\x3d"
5988 "\x6c\xde\xbc\xf1\x90\xea\x6a\xb2"
5989 "\x35\x86\x36\xaf\x5c\xfe\x4b\x3a",
5990 .ilen = 32,
5991 .result = "\x83\x6f\x40\x87\x72\xcf\xc1\x13"
5992 "\xef\xbb\x80\x21\x04\x6c\x58\x09"
5993 "\x07\x1b\xfc\xdf\xc0\x3f\x5b\xc7"
5994 "\xe0\x79\xa8\x6e\x71\x7c\x3f\xcf"
5995 "\x5c\xda\xb2\x33\xe5\x13\xe2\x0d"
5996 "\x74\xd1\xef\xb5\x0f\x3a\xb5\xf8",
5997 .rlen = 48,
5998 },
5999};
6000
6001static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
6002 {
6003 .key = "\xab\x2f\x8a\x74\xb7\x1c\xd2\xb1"
6004 "\xff\x80\x2e\x48\x7d\x82\xf8\xb9"
6005 "\xc6\xfb\x7d",
6006 .klen = 19,
6007 .iv = "\x80\x0d\x13\xab\xd8\xa6\xb2\xd8",
6008 .alen = 0,
6009 .input = "\xd5\xe8\x93\x9f\xc7\x89\x2e\x2b",
6010 .ilen = 8,
6011 .result = "\x00",
6012 .rlen = 0,
6013 .novrfy = 1,
6014 }, {
6015 .key = "\xab\x2f\x8a\x74\xb7\x1c\xd2\xb1"
6016 "\xff\x80\x2e\x48\x7d\x82\xf8\xb9"
6017 "\xaf\x94\x87",
6018 .klen = 19,
6019 .iv = "\x78\x35\x82\x81\x7f\x88\x94\x68",
6020 .alen = 0,
6021 .input = "\x41\x3c\xb8\x87\x73\xcb\xf3\xf3",
6022 .ilen = 8,
6023 .result = "\x00",
6024 .rlen = 0,
6025 }, {
6026 .key = "\x61\x0e\x8c\xae\xe3\x23\xb6\x38"
6027 "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8"
6028 "\xc6\xfb\x7d",
6029 .klen = 19,
6030 .iv = "\x80\x0d\x13\xab\xd8\xa6\xb2\xd8",
6031 .assoc = "\xf3\x94\x87\x78\x35\x82\x81\x7f"
6032 "\x88\x94\x68\xb1\x78\x6b\x2b\xd6"
6033 "\x04\x1f\x4e\xed\x78\xd5\x33\x66"
6034 "\xd8\x94\x99\x91\x81\x54\x62\x57",
6035 .alen = 32,
6036 .input = "\xf0\x7c\x29\x02\xae\x1c\x2f\x55"
6037 "\xd0\xd1\x3d\x1a\xa3\x6d\xe4\x0a"
6038 "\x86\xb0\x87\x6b\x62\x33\x8c\x34"
6039 "\xce\xab\x57\xcc\x79\x0b\xe0\x6f"
6040 "\x5c\x3e\x48\x1f\x6c\x46\xf7\x51"
6041 "\x8b\x84\x83\x2a\xc1\x05\xb8\xc5",
6042 .ilen = 48,
6043 .result = "\x50\x82\x3e\x07\xe2\x1e\xb6\xfb"
6044 "\x33\xe4\x73\xce\xd2\xfb\x95\x79"
6045 "\xe8\xb4\xb5\x77\x11\x10\x62\x6f"
6046 "\x6a\x82\xd1\x13\xec\xf5\xd0\x48",
6047 .rlen = 32,
6048 .novrfy = 1,
6049 }, {
6050 .key = "\x61\x0e\x8c\xae\xe3\x23\xb6\x38"
6051 "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8"
6052 "\x05\xe0\xc9",
6053 .klen = 19,
6054 .iv = "\x0f\xed\x34\xea\x97\xd4\x3b\xdf",
6055 .assoc = "\x49\x5c\x50\x1f\x1d\x94\xcc\x81"
6056 "\xba\xb7\xb6\x03\xaf\xa5\xc1\xa1"
6057 "\xd8\x5c\x42\x68\xe0\x6c\xda\x89"
6058 "\x05\xac\x56\xac\x1b\x2a\xd3\x86",
6059 .alen = 32,
6060 .input = "\x39\xbe\x7d\x15\x62\x77\xf3\x3c"
6061 "\xad\x83\x52\x6d\x71\x03\x25\x1c"
6062 "\xed\x81\x3a\x9a\x16\x7d\x19\x80"
6063 "\x72\x04\x72\xd0\xf6\xff\x05\x0f"
6064 "\xb7\x14\x30\x00\x32\x9e\xa0\xa6"
6065 "\x9e\x5a\x18\xa1\xb8\xfe\xdb\xd3",
6066 .ilen = 48,
6067 .result = "\x75\x05\xbe\xc2\xd9\x1e\xde\x60"
6068 "\x47\x3d\x8c\x7d\xbd\xb5\xd9\xb7"
6069 "\xf2\xae\x61\x05\x8f\x82\x24\x3f"
6070 "\x9c\x67\x91\xe1\x38\x4f\xe4\x0c",
6071 .rlen = 32,
6072 }, {
6073 .key = "\x39\xbb\xa7\xbe\x59\x97\x9e\x73"
6074 "\xa2\xbc\x6b\x98\xd7\x75\x7f\xe3"
6075 "\xa4\x48\x93\x39\x26\x71\x4a\xc6"
6076 "\xee\x49\x83",
6077 .klen = 27,
6078 .iv = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
6079 .assoc = "\x44\xa6\x2c\x05\xe9\xe1\x43\xb1"
6080 "\x58\x7c\xf2\x5c\x6d\x39\x0a\x64"
6081 "\xa4\xf0\x13\x05\xd1\x77\x99\x67"
6082 "\x11\xc4\xc6\xdb\x00\x56\x36\x61",
6083 .alen = 32,
6084 .input = "\x71\x99\xfa\xf4\x44\x12\x68\x9b",
6085 .ilen = 8,
6086 .result = "\x00",
6087 .rlen = 0,
6088 }, {
6089 .key = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
6090 "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
6091 "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
6092 "\xee\x49\x83",
6093 .klen = 27,
6094 .iv = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
6095 .assoc = "\x44\xa6\x2c\x05\xe9\xe1\x43\xb1"
6096 "\x58\x7c\xf2\x5c\x6d\x39\x0a\x64"
6097 "\xa4\xf0\x13\x05\xd1\x77\x99\x67"
6098 "\x11\xc4\xc6\xdb\x00\x56\x36\x61",
6099 .alen = 32,
6100 .input = "\xfb\xe5\x5d\x34\xbe\xe5\xe8\xe7"
6101 "\x5a\xef\x2f\xbf\x1f\x7f\xd4\xb2"
6102 "\x66\xca\x61\x1e\x96\x7a\x61\xb3"
6103 "\x1c\x16\x45\x52\xba\x04\x9c\x9f"
6104 "\xb1\xd2\x40\xbc\x52\x7c\x6f\xb1",
6105 .ilen = 40,
6106 .result = "\x85\x34\x66\x42\xc8\x92\x0f\x36"
6107 "\x58\xe0\x6b\x91\x3c\x98\x5c\xbb"
6108 "\x0a\x85\xcc\x02\xad\x7a\x96\xe9"
6109 "\x65\x43\xa4\xc3\x0f\xdc\x55\x81",
6110 .rlen = 32,
6111 }, {
6112 .key = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
6113 "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
6114 "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
6115 "\xd1\xfc\x57",
6116 .klen = 27,
6117 .iv = "\x9c\xfe\xb8\x9c\xad\x71\xaa\x1f",
6118 .assoc = "\x86\x67\xa5\xa9\x14\x5f\x0d\xc6"
6119 "\xff\x14\xc7\x44\xbf\x6c\x3a\xc3"
6120 "\xff\xb6\x81\xbd\xe2\xd5\x06\xc7"
6121 "\x3c\xa1\x52\x13\x03\x8a\x23\x3a",
6122 .alen = 32,
6123 .input = "\x3f\x66\xb0\x9d\xe5\x4b\x38\x00"
6124 "\xc6\x0e\x6e\xe5\xd6\x98\xa6\x37"
6125 "\x8c\x26\x33\xc6\xb2\xa2\x17\xfa"
6126 "\x64\x19\xc0\x30\xd7\xfc\x14\x6b"
6127 "\xe3\x33\xc2\x04\xb0\x37\xbe\x3f"
6128 "\xa9\xb4\x2d\x68\x03\xa3\x44\xef",
6129 .ilen = 48,
6130 .result = "\x02\x87\x4d\x28\x80\x6e\xb2\xed"
6131 "\x99\x2a\xa8\xca\x04\x25\x45\x90"
6132 "\x1d\xdd\x5a\xd9\xe4\xdb\x9c\x9c"
6133 "\x49\xe9\x01\xfe\xa7\x80\x6d\x6b",
6134 .rlen = 32,
6135 .novrfy = 1,
6136 }, {
6137 .key = "\xa4\x4b\x54\x29\x0a\xb8\x6d\x01"
6138 "\x5b\x80\x2a\xcf\x25\xc4\xb7\x5c"
6139 "\x20\x2c\xad\x30\xc2\x2b\x41\xfb"
6140 "\x0e\x85\xbc\x33\xad\x0f\x2b\xff"
6141 "\xee\x49\x83",
6142 .klen = 35,
6143 .iv = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
6144 .alen = 0,
6145 .input = "\x1f\xb8\x8f\xa3\xdd\x54\x00\xf2",
6146 .ilen = 8,
6147 .result = "\x00",
6148 .rlen = 0,
6149 }, {
6150 .key = "\x39\xbb\xa7\xbe\x59\x97\x9e\x73"
6151 "\xa2\xbc\x6b\x98\xd7\x75\x7f\xe3"
6152 "\xa4\x48\x93\x39\x26\x71\x4a\xc6"
6153 "\xae\x8f\x11\x4c\xc2\x9c\x4a\xbb"
6154 "\x85\x34\x66",
6155 .klen = 35,
6156 .iv = "\x42\xc8\x92\x0f\x36\x58\xe0\x6b",
6157 .alen = 0,
6158 .input = "\x48\x01\x5e\x02\x24\x04\x66\x47"
6159 "\xa1\xea\x6f\xaf\xe8\xfc\xfb\xdd"
6160 "\xa5\xa9\x87\x8d\x84\xee\x2e\x77"
6161 "\xbb\x86\xb9\xf5\x5c\x6c\xff\xf6"
6162 "\x72\xc3\x8e\xf7\x70\xb1\xb2\x07"
6163 "\xbc\xa8\xa3\xbd\x83\x7c\x1d\x2a",
6164 .ilen = 48,
6165 .result = "\xdc\x56\xf2\x71\xb0\xb1\xa0\x6c"
6166 "\xf0\x97\x3a\xfb\x6d\xe7\x32\x99"
6167 "\x3e\xaf\x70\x5e\xb2\x4d\xea\x39"
6168 "\x89\xd4\x75\x7a\x63\xb1\xda\x93",
6169 .rlen = 32,
6170 .novrfy = 1,
6171 }, {
6172 .key = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
6173 "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
6174 "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
6175 "\x0d\x1a\x53\x3b\xb5\xe3\xf8\x8b"
6176 "\xcf\x76\x3f",
6177 .klen = 35,
6178 .iv = "\xd9\x95\x75\x8f\x44\x89\x40\x7b",
6179 .assoc = "\x8f\x86\x6c\x4d\x1d\xc5\x39\x88"
6180 "\xc8\xf3\x5c\x52\x10\x63\x6f\x2b"
6181 "\x8a\x2a\xc5\x6f\x30\x23\x58\x7b"
6182 "\xfb\x36\x03\x11\xb4\xd9\xf2\xfe",
6183 .alen = 32,
6184 .input = "\x48\x58\xd6\xf3\xad\x63\x58\xbf"
6185 "\xae\xc7\x5e\xae\x83\x8f\x7b\xe4"
6186 "\x78\x5c\x4c\x67\x71\x89\x94\xbf"
6187 "\x47\xf1\x63\x7e\x1c\x59\xbd\xc5"
6188 "\x7f\x44\x0a\x0c\x01\x18\x07\x92"
6189 "\xe1\xd3\x51\xce\x32\x6d\x0c\x5b",
6190 .ilen = 48,
6191 .result = "\xc2\x54\xc8\xde\x78\x87\x77\x40"
6192 "\x49\x71\xe4\xb7\xe7\xcb\x76\x61"
6193 "\x0a\x41\xb9\xe9\xc0\x76\x54\xab"
6194 "\x04\x49\x3b\x19\x93\x57\x25\x5d",
6195 .rlen = 32,
6196 },
6197};
6198
5829/* Cast5 test vectors from RFC 2144 */ 6199/* Cast5 test vectors from RFC 2144 */
5830#define CAST5_ENC_TEST_VECTORS 3 6200#define CAST5_ENC_TEST_VECTORS 3
5831#define CAST5_DEC_TEST_VECTORS 3 6201#define CAST5_DEC_TEST_VECTORS 3