diff mbox

[2/2] Crypto: Add SHA-3 Test's in tcrypt

Message ID 1465983719-8313-3-git-send-email-raveendra.padasalagi@broadcom.com (mailing list archive)
State Superseded
Delegated to: Herbert Xu
Headers show

Commit Message

Raveendra Padasalagi June 15, 2016, 9:41 a.m. UTC
Added support for SHA-3 algorithm test's
in tcrypt module and related test vectors.

Signed-off-by: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>
---
 crypto/tcrypt.c  |  53 ++++++++++++++++++++++-
 crypto/testmgr.c |  40 ++++++++++++++++++
 crypto/testmgr.h | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 217 insertions(+), 1 deletion(-)

Comments

Raveendra Padasalagi June 15, 2016, 9:50 a.m. UTC | #1
Forgot to add Jeff Garzik in the email list.

++  Jeff Garzik.

Regards,
Raveendra
> -----Original Message-----
> From: Raveendra Padasalagi [mailto:raveendra.padasalagi@broadcom.com]
> Sent: 15 June 2016 15:12
> To: Herbert Xu; David S. Miller; linux-crypto@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Cc: Jon Mason; Florian Fainelli; Anup Patel; Ray Jui; Scott Branden;
Pramod
> Kumar; bcm-kernel-feedback-list@broadcom.com; Raveendra Padasalagi
> Subject: [PATCH 2/2] Crypto: Add SHA-3 Test's in tcrypt
>
> Added support for SHA-3 algorithm test's in tcrypt module and related
test
> vectors.
>
> Signed-off-by: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>
> ---
>  crypto/tcrypt.c  |  53 ++++++++++++++++++++++-  crypto/testmgr.c |  40
> ++++++++++++++++++  crypto/testmgr.h | 125
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 217 insertions(+), 1 deletion(-)
>
> diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 579dce0..4675459
100644
> --- a/crypto/tcrypt.c
> +++ b/crypto/tcrypt.c
> @@ -72,7 +72,8 @@ static char *check[] = {
>  	"cast6", "arc4", "michael_mic", "deflate", "crc32c", "tea",
"xtea",
>  	"khazad", "wp512", "wp384", "wp256", "tnepres", "xeta",  "fcrypt",
>  	"camellia", "seed", "salsa20", "rmd128", "rmd160", "rmd256",
> "rmd320",
> -	"lzo", "cts", "zlib", NULL
> +	"lzo", "cts", "zlib", "sha3-224", "sha3-256", "sha3-384",
"sha3-512",
> +	NULL
>  };
>
>  struct tcrypt_result {
> @@ -1284,6 +1285,22 @@ static int do_test(const char *alg, u32 type, u32
> mask, int m)
>  		ret += tcrypt_test("crct10dif");
>  		break;
>
> +	case 48:
> +		ret += tcrypt_test("sha3-224");
> +		break;
> +
> +	case 49:
> +		ret += tcrypt_test("sha3-256");
> +		break;
> +
> +	case 50:
> +		ret += tcrypt_test("sha3-384");
> +		break;
> +
> +	case 51:
> +		ret += tcrypt_test("sha3-512");
> +		break;
> +
>  	case 100:
>  		ret += tcrypt_test("hmac(md5)");
>  		break;
> @@ -1691,6 +1708,22 @@ static int do_test(const char *alg, u32 type, u32
> mask, int m)
>  		test_hash_speed("poly1305", sec, poly1305_speed_template);
>  		if (mode > 300 && mode < 400) break;
>
> +	case 322:
> +		test_hash_speed("sha3-224", sec,
> generic_hash_speed_template);
> +		if (mode > 300 && mode < 400) break;
> +
> +	case 323:
> +		test_hash_speed("sha3-256", sec,
> generic_hash_speed_template);
> +		if (mode > 300 && mode < 400) break;
> +
> +	case 324:
> +		test_hash_speed("sha3-384", sec,
> generic_hash_speed_template);
> +		if (mode > 300 && mode < 400) break;
> +
> +	case 325:
> +		test_hash_speed("sha3-512", sec,
> generic_hash_speed_template);
> +		if (mode > 300 && mode < 400) break;
> +
>  	case 399:
>  		break;
>
> @@ -1770,6 +1803,24 @@ static int do_test(const char *alg, u32 type, u32
> mask, int m)
>  		test_ahash_speed("rmd320", sec,
> generic_hash_speed_template);
>  		if (mode > 400 && mode < 500) break;
>
> +	case 418:
> +		test_ahash_speed("sha3-224", sec,
> generic_hash_speed_template);
> +		if (mode > 400 && mode < 500) break;
> +
> +	case 419:
> +		test_ahash_speed("sha3-256", sec,
> generic_hash_speed_template);
> +		if (mode > 400 && mode < 500) break;
> +
> +	case 420:
> +		test_ahash_speed("sha3-384", sec,
> generic_hash_speed_template);
> +		if (mode > 400 && mode < 500) break;
> +
> +
> +	case 421:
> +		test_ahash_speed("sha3-512", sec,
> generic_hash_speed_template);
> +		if (mode > 400 && mode < 500) break;
> +
> +
>  	case 499:
>  		break;
>
> diff --git a/crypto/testmgr.c b/crypto/testmgr.c index c727fb0..b773a56
100644
> --- a/crypto/testmgr.c
> +++ b/crypto/testmgr.c
> @@ -3659,6 +3659,46 @@ static const struct alg_test_desc
alg_test_descs[] = {
>  			}
>  		}
>  	}, {
> +		.alg = "sha3-224",
> +		.test = alg_test_hash,
> +		.fips_allowed = 1,
> +		.suite = {
> +			.hash = {
> +				.vecs = sha3_224_tv_template,
> +				.count = SHA3_224_TEST_VECTORS
> +			}
> +		}
> +	}, {
> +		.alg = "sha3-256",
> +		.test = alg_test_hash,
> +		.fips_allowed = 1,
> +		.suite = {
> +			.hash = {
> +				.vecs = sha3_256_tv_template,
> +				.count = SHA3_256_TEST_VECTORS
> +			}
> +		}
> +	}, {
> +		.alg = "sha3-384",
> +		.test = alg_test_hash,
> +		.fips_allowed = 1,
> +		.suite = {
> +			.hash = {
> +				.vecs = sha3_384_tv_template,
> +				.count = SHA3_384_TEST_VECTORS
> +			}
> +		}
> +	}, {
> +		.alg = "sha3-512",
> +		.test = alg_test_hash,
> +		.fips_allowed = 1,
> +		.suite = {
> +			.hash = {
> +				.vecs = sha3_512_tv_template,
> +				.count = SHA3_512_TEST_VECTORS
> +			}
> +		}
> +	}, {
>  		.alg = "sha384",
>  		.test = alg_test_hash,
>  		.fips_allowed = 1,
> diff --git a/crypto/testmgr.h b/crypto/testmgr.h index 487ec88..b70e3c9
> 100644
> --- a/crypto/testmgr.h
> +++ b/crypto/testmgr.h
> @@ -376,6 +376,131 @@ static struct hash_testvec md4_tv_template [] = {
>  	},
>  };
>
> +#define SHA3_224_TEST_VECTORS	3
> +static struct hash_testvec sha3_224_tv_template[] = {
> +	{
> +		.plaintext = "",
> +		.digest	= "\x6b\x4e\x03\x42\x36\x67\xdb\xb7"
> +				"\x3b\x6e\x15\x45\x4f\x0e\xb1\xab"
> +				"\xd4\x59\x7f\x9a\x1b\x07\x8e\x3f"
> +				"\x5b\x5a\x6b\xc7",
> +	}, {
> +		.plaintext = "a",
> +		.psize	= 1,
> +		.digest	= "\x9e\x86\xff\x69\x55\x7c\xa9\x5f"
> +				"\x40\x5f\x08\x12\x69\x68\x5b\x38"
> +				"\xe3\xa8\x19\xb3\x09\xee\x94\x2f"
> +				"\x48\x2b\x6a\x8b",
> +	}, {
> +		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
> +				"jklmklmnlmnomnopnopq",
> +		.psize	= 56,
> +		.digest	= "\x8a\x24\x10\x8b\x15\x4a\xda\x21"
> +				"\xc9\xfd\x55\x74\x49\x44\x79\xba"
> +				"\x5c\x7e\x7a\xb7\x6e\xf2\x64\xea"
> +				"\xd0\xfc\xce\x33",
> +	},
> +};
> +
> +#define SHA3_256_TEST_VECTORS	3
> +static struct hash_testvec sha3_256_tv_template[] = {
> +	{
> +		.plaintext = "",
> +		.digest	= "\xa7\xff\xc6\xf8\xbf\x1e\xd7\x66"
> +				"\x51\xc1\x47\x56\xa0\x61\xd6\x62"
> +				"\xf5\x80\xff\x4d\xe4\x3b\x49\xfa"
> +				"\x82\xd8\x0a\x4b\x80\xf8\x43\x4a",
> +	}, {
> +		.plaintext = "a",
> +		.psize	= 1,
> +		.digest	= "\x80\x08\x4b\xf2\xfb\xa0\x24\x75"
> +				"\x72\x6f\xeb\x2c\xab\x2d\x82\x15"
> +				"\xea\xb1\x4b\xc6\xbd\xd8\xbf\xb2"
> +				"\xc8\x15\x12\x57\x03\x2e\xcd\x8b",
> +	}, {
> +		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
> +			     "jklmklmnlmnomnopnopq",
> +		.psize	= 56,
> +		.digest	= "\x41\xc0\xdb\xa2\xa9\xd6\x24\x08"
> +				"\x49\x10\x03\x76\xa8\x23\x5e\x2c"
> +				"\x82\xe1\xb9\x99\x8a\x99\x9e\x21"
> +				"\xdb\x32\xdd\x97\x49\x6d\x33\x76",
> +	},
> +};
> +
> +
> +#define SHA3_384_TEST_VECTORS	3
> +static struct hash_testvec sha3_384_tv_template[] = {
> +	{
> +		.plaintext = "",
> +		.digest	= "\x0c\x63\xa7\x5b\x84\x5e\x4f\x7d"
> +				"\x01\x10\x7d\x85\x2e\x4c\x24\x85"
> +				"\xc5\x1a\x50\xaa\xaa\x94\xfc\x61"
> +				"\x99\x5e\x71\xbb\xee\x98\x3a\x2a"
> +				"\xc3\x71\x38\x31\x26\x4a\xdb\x47"
> +				"\xfb\x6b\xd1\xe0\x58\xd5\xf0\x04",
> +	}, {
> +		.plaintext = "a",
> +		.psize	= 1,
> +		.digest	= "\x18\x15\xf7\x74\xf3\x20\x49\x1b"
> +				"\x48\x56\x9e\xfe\xc7\x94\xd2\x49"
> +				"\xee\xb5\x9a\xae\x46\xd2\x2b\xf7"
> +				"\x7d\xaf\xe2\x5c\x5e\xdc\x28\xd7"
> +				"\xea\x44\xf9\x3e\xe1\x23\x4a\xa8"
> +				"\x8f\x61\xc9\x19\x12\xa4\xcc\xd9",
> +	}, {
> +		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
> +			     "jklmklmnlmnomnopnopq",
> +		.psize	= 56,
> +		.digest	= "\x99\x1c\x66\x57\x55\xeb\x3a\x4b"
> +				"\x6b\xbd\xfb\x75\xc7\x8a\x49\x2e"
> +				"\x8c\x56\xa2\x2c\x5c\x4d\x7e\x42"
> +				"\x9b\xfd\xbc\x32\xb9\xd4\xad\x5a"
> +				"\xa0\x4a\x1f\x07\x6e\x62\xfe\xa1"
> +				"\x9e\xef\x51\xac\xd0\x65\x7c\x22",
> +	},
> +};
> +
> +
> +#define SHA3_512_TEST_VECTORS	3
> +static struct hash_testvec sha3_512_tv_template[] = {
> +	{
> +		.plaintext = "",
> +		.digest	= "\xa6\x9f\x73\xcc\xa2\x3a\x9a\xc5"
> +				"\xc8\xb5\x67\xdc\x18\x5a\x75\x6e"
> +				"\x97\xc9\x82\x16\x4f\xe2\x58\x59"
> +				"\xe0\xd1\xdc\xc1\x47\x5c\x80\xa6"
> +				"\x15\xb2\x12\x3a\xf1\xf5\xf9\x4c"
> +				"\x11\xe3\xe9\x40\x2c\x3a\xc5\x58"
> +				"\xf5\x00\x19\x9d\x95\xb6\xd3\xe3"
> +				"\x01\x75\x85\x86\x28\x1d\xcd\x26",
> +	}, {
> +		.plaintext = "a",
> +		.psize	= 1,
> +		.digest	= "\x69\x7f\x2d\x85\x61\x72\xcb\x83"
> +				"\x09\xd6\xb8\xb9\x7d\xac\x4d\xe3"
> +				"\x44\xb5\x49\xd4\xde\xe6\x1e\xdf"
> +				"\xb4\x96\x2d\x86\x98\xb7\xfa\x80"
> +				"\x3f\x4f\x93\xff\x24\x39\x35\x86"
> +				"\xe2\x8b\x5b\x95\x7a\xc3\xd1\xd3"
> +				"\x69\x42\x0c\xe5\x33\x32\x71\x2f"
> +				"\x99\x7b\xd3\x36\xd0\x9a\xb0\x2a",
> +	}, {
> +		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
> +			     "jklmklmnlmnomnopnopq",
> +		.psize	= 56,
> +		.digest	= "\x04\xa3\x71\xe8\x4e\xcf\xb5\xb8"
> +				"\xb7\x7c\xb4\x86\x10\xfc\xa8\x18"
> +				"\x2d\xd4\x57\xce\x6f\x32\x6a\x0f"
> +				"\xd3\xd7\xec\x2f\x1e\x91\x63\x6d"
> +				"\xee\x69\x1f\xbe\x0c\x98\x53\x02"
> +				"\xba\x1b\x0d\x8d\xc7\x8c\x08\x63"
> +				"\x46\xb5\x33\xb4\x9c\x03\x0d\x99"
> +				"\xa2\x7d\xaf\x11\x39\xd6\xe7\x5e",
> +	},
> +};
> +
> +
>  /*
>   * MD5 test vectors from RFC1321
>   */
> --
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 579dce0..4675459 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -72,7 +72,8 @@  static char *check[] = {
 	"cast6", "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea",
 	"khazad", "wp512", "wp384", "wp256", "tnepres", "xeta",  "fcrypt",
 	"camellia", "seed", "salsa20", "rmd128", "rmd160", "rmd256", "rmd320",
-	"lzo", "cts", "zlib", NULL
+	"lzo", "cts", "zlib", "sha3-224", "sha3-256", "sha3-384", "sha3-512",
+	NULL
 };
 
 struct tcrypt_result {
@@ -1284,6 +1285,22 @@  static int do_test(const char *alg, u32 type, u32 mask, int m)
 		ret += tcrypt_test("crct10dif");
 		break;
 
+	case 48:
+		ret += tcrypt_test("sha3-224");
+		break;
+
+	case 49:
+		ret += tcrypt_test("sha3-256");
+		break;
+
+	case 50:
+		ret += tcrypt_test("sha3-384");
+		break;
+
+	case 51:
+		ret += tcrypt_test("sha3-512");
+		break;
+
 	case 100:
 		ret += tcrypt_test("hmac(md5)");
 		break;
@@ -1691,6 +1708,22 @@  static int do_test(const char *alg, u32 type, u32 mask, int m)
 		test_hash_speed("poly1305", sec, poly1305_speed_template);
 		if (mode > 300 && mode < 400) break;
 
+	case 322:
+		test_hash_speed("sha3-224", sec, generic_hash_speed_template);
+		if (mode > 300 && mode < 400) break;
+
+	case 323:
+		test_hash_speed("sha3-256", sec, generic_hash_speed_template);
+		if (mode > 300 && mode < 400) break;
+
+	case 324:
+		test_hash_speed("sha3-384", sec, generic_hash_speed_template);
+		if (mode > 300 && mode < 400) break;
+
+	case 325:
+		test_hash_speed("sha3-512", sec, generic_hash_speed_template);
+		if (mode > 300 && mode < 400) break;
+
 	case 399:
 		break;
 
@@ -1770,6 +1803,24 @@  static int do_test(const char *alg, u32 type, u32 mask, int m)
 		test_ahash_speed("rmd320", sec, generic_hash_speed_template);
 		if (mode > 400 && mode < 500) break;
 
+	case 418:
+		test_ahash_speed("sha3-224", sec, generic_hash_speed_template);
+		if (mode > 400 && mode < 500) break;
+
+	case 419:
+		test_ahash_speed("sha3-256", sec, generic_hash_speed_template);
+		if (mode > 400 && mode < 500) break;
+
+	case 420:
+		test_ahash_speed("sha3-384", sec, generic_hash_speed_template);
+		if (mode > 400 && mode < 500) break;
+
+
+	case 421:
+		test_ahash_speed("sha3-512", sec, generic_hash_speed_template);
+		if (mode > 400 && mode < 500) break;
+
+
 	case 499:
 		break;
 
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index c727fb0..b773a56 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3659,6 +3659,46 @@  static const struct alg_test_desc alg_test_descs[] = {
 			}
 		}
 	}, {
+		.alg = "sha3-224",
+		.test = alg_test_hash,
+		.fips_allowed = 1,
+		.suite = {
+			.hash = {
+				.vecs = sha3_224_tv_template,
+				.count = SHA3_224_TEST_VECTORS
+			}
+		}
+	}, {
+		.alg = "sha3-256",
+		.test = alg_test_hash,
+		.fips_allowed = 1,
+		.suite = {
+			.hash = {
+				.vecs = sha3_256_tv_template,
+				.count = SHA3_256_TEST_VECTORS
+			}
+		}
+	}, {
+		.alg = "sha3-384",
+		.test = alg_test_hash,
+		.fips_allowed = 1,
+		.suite = {
+			.hash = {
+				.vecs = sha3_384_tv_template,
+				.count = SHA3_384_TEST_VECTORS
+			}
+		}
+	}, {
+		.alg = "sha3-512",
+		.test = alg_test_hash,
+		.fips_allowed = 1,
+		.suite = {
+			.hash = {
+				.vecs = sha3_512_tv_template,
+				.count = SHA3_512_TEST_VECTORS
+			}
+		}
+	}, {
 		.alg = "sha384",
 		.test = alg_test_hash,
 		.fips_allowed = 1,
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 487ec88..b70e3c9 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -376,6 +376,131 @@  static struct hash_testvec md4_tv_template [] = {
 	},
 };
 
+#define SHA3_224_TEST_VECTORS	3
+static struct hash_testvec sha3_224_tv_template[] = {
+	{
+		.plaintext = "",
+		.digest	= "\x6b\x4e\x03\x42\x36\x67\xdb\xb7"
+				"\x3b\x6e\x15\x45\x4f\x0e\xb1\xab"
+				"\xd4\x59\x7f\x9a\x1b\x07\x8e\x3f"
+				"\x5b\x5a\x6b\xc7",
+	}, {
+		.plaintext = "a",
+		.psize	= 1,
+		.digest	= "\x9e\x86\xff\x69\x55\x7c\xa9\x5f"
+				"\x40\x5f\x08\x12\x69\x68\x5b\x38"
+				"\xe3\xa8\x19\xb3\x09\xee\x94\x2f"
+				"\x48\x2b\x6a\x8b",
+	}, {
+		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
+				"jklmklmnlmnomnopnopq",
+		.psize	= 56,
+		.digest	= "\x8a\x24\x10\x8b\x15\x4a\xda\x21"
+				"\xc9\xfd\x55\x74\x49\x44\x79\xba"
+				"\x5c\x7e\x7a\xb7\x6e\xf2\x64\xea"
+				"\xd0\xfc\xce\x33",
+	},
+};
+
+#define SHA3_256_TEST_VECTORS	3
+static struct hash_testvec sha3_256_tv_template[] = {
+	{
+		.plaintext = "",
+		.digest	= "\xa7\xff\xc6\xf8\xbf\x1e\xd7\x66"
+				"\x51\xc1\x47\x56\xa0\x61\xd6\x62"
+				"\xf5\x80\xff\x4d\xe4\x3b\x49\xfa"
+				"\x82\xd8\x0a\x4b\x80\xf8\x43\x4a",
+	}, {
+		.plaintext = "a",
+		.psize	= 1,
+		.digest	= "\x80\x08\x4b\xf2\xfb\xa0\x24\x75"
+				"\x72\x6f\xeb\x2c\xab\x2d\x82\x15"
+				"\xea\xb1\x4b\xc6\xbd\xd8\xbf\xb2"
+				"\xc8\x15\x12\x57\x03\x2e\xcd\x8b",
+	}, {
+		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
+			     "jklmklmnlmnomnopnopq",
+		.psize	= 56,
+		.digest	= "\x41\xc0\xdb\xa2\xa9\xd6\x24\x08"
+				"\x49\x10\x03\x76\xa8\x23\x5e\x2c"
+				"\x82\xe1\xb9\x99\x8a\x99\x9e\x21"
+				"\xdb\x32\xdd\x97\x49\x6d\x33\x76",
+	},
+};
+
+
+#define SHA3_384_TEST_VECTORS	3
+static struct hash_testvec sha3_384_tv_template[] = {
+	{
+		.plaintext = "",
+		.digest	= "\x0c\x63\xa7\x5b\x84\x5e\x4f\x7d"
+				"\x01\x10\x7d\x85\x2e\x4c\x24\x85"
+				"\xc5\x1a\x50\xaa\xaa\x94\xfc\x61"
+				"\x99\x5e\x71\xbb\xee\x98\x3a\x2a"
+				"\xc3\x71\x38\x31\x26\x4a\xdb\x47"
+				"\xfb\x6b\xd1\xe0\x58\xd5\xf0\x04",
+	}, {
+		.plaintext = "a",
+		.psize	= 1,
+		.digest	= "\x18\x15\xf7\x74\xf3\x20\x49\x1b"
+				"\x48\x56\x9e\xfe\xc7\x94\xd2\x49"
+				"\xee\xb5\x9a\xae\x46\xd2\x2b\xf7"
+				"\x7d\xaf\xe2\x5c\x5e\xdc\x28\xd7"
+				"\xea\x44\xf9\x3e\xe1\x23\x4a\xa8"
+				"\x8f\x61\xc9\x19\x12\xa4\xcc\xd9",
+	}, {
+		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
+			     "jklmklmnlmnomnopnopq",
+		.psize	= 56,
+		.digest	= "\x99\x1c\x66\x57\x55\xeb\x3a\x4b"
+				"\x6b\xbd\xfb\x75\xc7\x8a\x49\x2e"
+				"\x8c\x56\xa2\x2c\x5c\x4d\x7e\x42"
+				"\x9b\xfd\xbc\x32\xb9\xd4\xad\x5a"
+				"\xa0\x4a\x1f\x07\x6e\x62\xfe\xa1"
+				"\x9e\xef\x51\xac\xd0\x65\x7c\x22",
+	},
+};
+
+
+#define SHA3_512_TEST_VECTORS	3
+static struct hash_testvec sha3_512_tv_template[] = {
+	{
+		.plaintext = "",
+		.digest	= "\xa6\x9f\x73\xcc\xa2\x3a\x9a\xc5"
+				"\xc8\xb5\x67\xdc\x18\x5a\x75\x6e"
+				"\x97\xc9\x82\x16\x4f\xe2\x58\x59"
+				"\xe0\xd1\xdc\xc1\x47\x5c\x80\xa6"
+				"\x15\xb2\x12\x3a\xf1\xf5\xf9\x4c"
+				"\x11\xe3\xe9\x40\x2c\x3a\xc5\x58"
+				"\xf5\x00\x19\x9d\x95\xb6\xd3\xe3"
+				"\x01\x75\x85\x86\x28\x1d\xcd\x26",
+	}, {
+		.plaintext = "a",
+		.psize	= 1,
+		.digest	= "\x69\x7f\x2d\x85\x61\x72\xcb\x83"
+				"\x09\xd6\xb8\xb9\x7d\xac\x4d\xe3"
+				"\x44\xb5\x49\xd4\xde\xe6\x1e\xdf"
+				"\xb4\x96\x2d\x86\x98\xb7\xfa\x80"
+				"\x3f\x4f\x93\xff\x24\x39\x35\x86"
+				"\xe2\x8b\x5b\x95\x7a\xc3\xd1\xd3"
+				"\x69\x42\x0c\xe5\x33\x32\x71\x2f"
+				"\x99\x7b\xd3\x36\xd0\x9a\xb0\x2a",
+	}, {
+		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
+			     "jklmklmnlmnomnopnopq",
+		.psize	= 56,
+		.digest	= "\x04\xa3\x71\xe8\x4e\xcf\xb5\xb8"
+				"\xb7\x7c\xb4\x86\x10\xfc\xa8\x18"
+				"\x2d\xd4\x57\xce\x6f\x32\x6a\x0f"
+				"\xd3\xd7\xec\x2f\x1e\x91\x63\x6d"
+				"\xee\x69\x1f\xbe\x0c\x98\x53\x02"
+				"\xba\x1b\x0d\x8d\xc7\x8c\x08\x63"
+				"\x46\xb5\x33\xb4\x9c\x03\x0d\x99"
+				"\xa2\x7d\xaf\x11\x39\xd6\xe7\x5e",
+	},
+};
+
+
 /*
  * MD5 test vectors from RFC1321
  */