crypto: testmgr - add aead null encryption test vectors
authorHoria Geanta <horia.geanta@freescale.com>
Fri, 14 Mar 2014 15:46:51 +0000 (17:46 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Mar 2014 13:54:27 +0000 (21:54 +0800)
Add test vectors for aead with null encryption and md5,
respectively sha1 authentication.
Input data is taken from test vectors listed in RFC2410.

Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/tcrypt.c
crypto/testmgr.c
crypto/testmgr.h

index 0d9003a..870be7b 100644 (file)
@@ -1511,6 +1511,14 @@ static int do_test(int m)
                ret += tcrypt_test("authenc(hmac(sha1),cbc(aes))");
                break;
 
+       case 156:
+               ret += tcrypt_test("authenc(hmac(md5),ecb(cipher_null))");
+               break;
+
+       case 157:
+               ret += tcrypt_test("authenc(hmac(sha1),ecb(cipher_null))");
+               break;
+
        case 200:
                test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0,
                                speed_template_16_24_32);
index 7795550..dc3cf35 100644 (file)
@@ -1808,6 +1808,22 @@ static const struct alg_test_desc alg_test_descs[] = {
                                .count = ANSI_CPRNG_AES_TEST_VECTORS
                        }
                }
+       }, {
+               .alg = "authenc(hmac(md5),ecb(cipher_null))",
+               .test = alg_test_aead,
+               .fips_allowed = 1,
+               .suite = {
+                       .aead = {
+                               .enc = {
+                                       .vecs = hmac_md5_ecb_cipher_null_enc_tv_template,
+                                       .count = HMAC_MD5_ECB_CIPHER_NULL_ENC_TEST_VECTORS
+                               },
+                               .dec = {
+                                       .vecs = hmac_md5_ecb_cipher_null_dec_tv_template,
+                                       .count = HMAC_MD5_ECB_CIPHER_NULL_DEC_TEST_VECTORS
+                               }
+                       }
+               }
        }, {
                .alg = "authenc(hmac(sha1),cbc(aes))",
                .test = alg_test_aead,
@@ -1820,6 +1836,22 @@ static const struct alg_test_desc alg_test_descs[] = {
                                }
                        }
                }
+       }, {
+               .alg = "authenc(hmac(sha1),ecb(cipher_null))",
+               .test = alg_test_aead,
+               .fips_allowed = 1,
+               .suite = {
+                       .aead = {
+                               .enc = {
+                                       .vecs = hmac_sha1_ecb_cipher_null_enc_tv_template,
+                                       .count = HMAC_SHA1_ECB_CIPHER_NULL_ENC_TEST_VECTORS
+                               },
+                               .dec = {
+                                       .vecs = hmac_sha1_ecb_cipher_null_dec_tv_template,
+                                       .count = HMAC_SHA1_ECB_CIPHER_NULL_DEC_TEST_VECTORS
+                               }
+                       }
+               }
        }, {
                .alg = "authenc(hmac(sha256),cbc(aes))",
                .test = alg_test_aead,
index 7d44aa3..3db83db 100644 (file)
@@ -12821,6 +12821,10 @@ static struct cipher_testvec cast6_xts_dec_tv_template[] = {
 #define AES_DEC_TEST_VECTORS 4
 #define AES_CBC_ENC_TEST_VECTORS 5
 #define AES_CBC_DEC_TEST_VECTORS 5
+#define HMAC_MD5_ECB_CIPHER_NULL_ENC_TEST_VECTORS 2
+#define HMAC_MD5_ECB_CIPHER_NULL_DEC_TEST_VECTORS 2
+#define HMAC_SHA1_ECB_CIPHER_NULL_ENC_TEST_VECTORS 2
+#define HMAC_SHA1_ECB_CIPHER_NULL_DEC_TEST_VECTORS 2
 #define HMAC_SHA1_AES_CBC_ENC_TEST_VECTORS 7
 #define HMAC_SHA256_AES_CBC_ENC_TEST_VECTORS 7
 #define HMAC_SHA512_AES_CBC_ENC_TEST_VECTORS 7
@@ -13627,6 +13631,90 @@ static struct cipher_testvec aes_cbc_dec_tv_template[] = {
        },
 };
 
+static struct aead_testvec hmac_md5_ecb_cipher_null_enc_tv_template[] = {
+       { /* Input data from RFC 2410 Case 1 */
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .klen   = 8 + 16 + 0,
+               .iv     = "",
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .ilen   = 8,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
+                         "\xaa\x42\xfe\x43\x8d\xea\xa3\x5a"
+                         "\xb9\x3d\x9f\xb1\xa3\x8e\x9b\xae",
+               .rlen   = 8 + 16,
+       }, { /* Input data from RFC 2410 Case 2 */
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .klen   = 8 + 16 + 0,
+               .iv     = "",
+               .input  = "Network Security People Have A Strange Sense Of Humor",
+               .ilen   = 53,
+               .result = "Network Security People Have A Strange Sense Of Humor"
+                         "\x73\xa5\x3e\x1c\x08\x0e\x8a\x8a"
+                         "\x8e\xb5\x5f\x90\x8e\xfe\x13\x23",
+               .rlen   = 53 + 16,
+       },
+};
+
+static struct aead_testvec hmac_md5_ecb_cipher_null_dec_tv_template[] = {
+       {
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .klen   = 8 + 16 + 0,
+               .iv     = "",
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef"
+                         "\xaa\x42\xfe\x43\x8d\xea\xa3\x5a"
+                         "\xb9\x3d\x9f\xb1\xa3\x8e\x9b\xae",
+               .ilen   = 8 + 16,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .rlen   = 8,
+       }, {
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .klen   = 8 + 16 + 0,
+               .iv     = "",
+               .input  = "Network Security People Have A Strange Sense Of Humor"
+                         "\x73\xa5\x3e\x1c\x08\x0e\x8a\x8a"
+                         "\x8e\xb5\x5f\x90\x8e\xfe\x13\x23",
+               .ilen   = 53 + 16,
+               .result = "Network Security People Have A Strange Sense Of Humor",
+               .rlen   = 53,
+       },
+};
+
 static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_template[] = {
        { /* RFC 3602 Case 1 */
 #ifdef __LITTLE_ENDIAN
@@ -13876,6 +13964,98 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_template[] = {
        },
 };
 
+static struct aead_testvec hmac_sha1_ecb_cipher_null_enc_tv_template[] = {
+       { /* Input data from RFC 2410 Case 1 */
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00",
+               .klen   = 8 + 20 + 0,
+               .iv     = "",
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .ilen   = 8,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
+                         "\x40\xc3\x0a\xa1\xc9\xa0\x28\xab"
+                         "\x99\x5e\x19\x04\xd1\x72\xef\xb8"
+                         "\x8c\x5e\xe4\x08",
+               .rlen   = 8 + 20,
+       }, { /* Input data from RFC 2410 Case 2 */
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00",
+               .klen   = 8 + 20 + 0,
+               .iv     = "",
+               .input  = "Network Security People Have A Strange Sense Of Humor",
+               .ilen   = 53,
+               .result = "Network Security People Have A Strange Sense Of Humor"
+                         "\x75\x6f\x42\x1e\xf8\x50\x21\xd2"
+                         "\x65\x47\xee\x8e\x1a\xef\x16\xf6"
+                         "\x91\x56\xe4\xd6",
+               .rlen   = 53 + 20,
+       },
+};
+
+static struct aead_testvec hmac_sha1_ecb_cipher_null_dec_tv_template[] = {
+       {
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00",
+               .klen   = 8 + 20 + 0,
+               .iv     = "",
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef"
+                         "\x40\xc3\x0a\xa1\xc9\xa0\x28\xab"
+                         "\x99\x5e\x19\x04\xd1\x72\xef\xb8"
+                         "\x8c\x5e\xe4\x08",
+               .ilen   = 8 + 20,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .rlen   = 8,
+       }, {
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x00"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00",
+               .klen   = 8 + 20 + 0,
+               .iv     = "",
+               .input  = "Network Security People Have A Strange Sense Of Humor"
+                         "\x75\x6f\x42\x1e\xf8\x50\x21\xd2"
+                         "\x65\x47\xee\x8e\x1a\xef\x16\xf6"
+                         "\x91\x56\xe4\xd6",
+               .ilen   = 53 + 20,
+               .result = "Network Security People Have A Strange Sense Of Humor",
+               .rlen   = 53,
+       },
+};
+
 static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_template[] = {
        { /* RFC 3602 Case 1 */
 #ifdef __LITTLE_ENDIAN