crypto: crct10dif - Simple correctness and speed test for CRCT10DIF hash
authorTim Chen <tim.c.chen@linux.intel.com>
Wed, 1 May 2013 19:52:51 +0000 (12:52 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 24 May 2013 09:55:27 +0000 (17:55 +0800)
These are simple tests to do sanity check of CRC T10 DIF hash.  The
correctness of the transform can be checked with the command
modprobe tcrypt mode=47
The speed of the transform can be evaluated with the command
modprobe tcrypt mode=320

Set the cpu frequency to constant and turn turbo off when running the
speed test so the frequency governor will not tweak the frequency and
affects the measurements.

Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/tcrypt.c
crypto/testmgr.c
crypto/testmgr.h

index 66d254c..25a5934 100644 (file)
@@ -1174,6 +1174,10 @@ static int do_test(int m)
                ret += tcrypt_test("ghash");
                break;
 
+       case 47:
+               ret += tcrypt_test("crct10dif");
+               break;
+
        case 100:
                ret += tcrypt_test("hmac(md5)");
                break;
@@ -1498,6 +1502,10 @@ static int do_test(int m)
                test_hash_speed("crc32c", sec, generic_hash_speed_template);
                if (mode > 300 && mode < 400) break;
 
+       case 320:
+               test_hash_speed("crct10dif", sec, generic_hash_speed_template);
+               if (mode > 300 && mode < 400) break;
+
        case 399:
                break;
 
index 5823735..f19a392 100644 (file)
@@ -1974,6 +1974,16 @@ static const struct alg_test_desc alg_test_descs[] = {
                        }
                }
        }, {
+               .alg = "crct10dif",
+               .test = alg_test_hash,
+               .fips_allowed = 1,
+               .suite = {
+                       .hash = {
+                               .vecs = crct10dif_tv_template,
+                               .count = CRCT10DIF_TEST_VECTORS
+                       }
+               }
+       }, {
                .alg = "cryptd(__driver-cbc-aes-aesni)",
                .test = alg_test_null,
                .fips_allowed = 1,
index 1e701bc..7d44aa3 100644 (file)
@@ -450,6 +450,39 @@ static struct hash_testvec rmd320_tv_template[] = {
        }
 };
 
+#define CRCT10DIF_TEST_VECTORS 3
+static struct hash_testvec crct10dif_tv_template[] = {
+       {
+               .plaintext = "abc",
+               .psize  = 3,
+#ifdef __LITTLE_ENDIAN
+               .digest = "\x3b\x44",
+#else
+               .digest = "\x44\x3b",
+#endif
+       }, {
+               .plaintext = "1234567890123456789012345678901234567890"
+                            "123456789012345678901234567890123456789",
+               .psize  = 79,
+#ifdef __LITTLE_ENDIAN
+               .digest = "\x70\x4b",
+#else
+               .digest = "\x4b\x70",
+#endif
+       }, {
+               .plaintext =
+               "abcddddddddddddddddddddddddddddddddddddddddddddddddddddd",
+               .psize  = 56,
+#ifdef __LITTLE_ENDIAN
+               .digest = "\xe3\x9c",
+#else
+               .digest = "\x9c\xe3",
+#endif
+               .np     = 2,
+               .tap    = { 28, 28 }
+       }
+};
+
 /*
  * SHA1 test vectors  from from FIPS PUB 180-1
  * Long vector from CAVS 5.0