summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2014-06-06 22:48:33 +0400
committerWerner Koch <wk@gnupg.org>2014-06-28 10:45:07 +0200
commit7533b2ad46f42e98d9dba52e88e79c0311d2d3b7 (patch)
tree921940d15424980a12094eef083f8f1c758c969a /tests
parent25d6af77e2336b5979ddbe8b90978fe5b61dfaf9 (diff)
downloadlibgcrypt-7533b2ad46f42e98d9dba52e88e79c0311d2d3b7.tar.gz
Update PBKDF2 tests with GOST R 34.11-94 test cases
* tests/t-kdf.c (check_pbkdf2): Add MD_GOSTR3411_CP test cases. -- TC26 (Technical Comitee for standardization "Cryptography and security mechanisms") published a document with test vectors for PBKDF2 used with GOST R 34.11-94 message digest function. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/t-kdf.c70
1 files changed, 67 insertions, 3 deletions
diff --git a/tests/t-kdf.c b/tests/t-kdf.c
index adbe6cc0..8e728d54 100644
--- a/tests/t-kdf.c
+++ b/tests/t-kdf.c
@@ -864,6 +864,7 @@ check_pbkdf2 (void)
size_t plen; /* Length of P. */
const char *salt;
size_t saltlen;
+ int hashalgo;
unsigned long c; /* Iterations. */
int dklen; /* Requested key length. */
const char *dk; /* Derived key. */
@@ -872,6 +873,7 @@ check_pbkdf2 (void)
{
"password", 8,
"salt", 4,
+ GCRY_MD_SHA1,
1,
20,
"\x0c\x60\xc8\x0f\x96\x1f\x0e\x71\xf3\xa9"
@@ -880,6 +882,7 @@ check_pbkdf2 (void)
{
"password", 8,
"salt", 4,
+ GCRY_MD_SHA1,
2,
20,
"\xea\x6c\x01\x4d\xc7\x2d\x6f\x8c\xcd\x1e"
@@ -888,6 +891,7 @@ check_pbkdf2 (void)
{
"password", 8,
"salt", 4,
+ GCRY_MD_SHA1,
4096,
20,
"\x4b\x00\x79\x01\xb7\x65\x48\x9a\xbe\xad"
@@ -896,6 +900,7 @@ check_pbkdf2 (void)
{
"password", 8,
"salt", 4,
+ GCRY_MD_SHA1,
16777216,
20,
"\xee\xfe\x3d\x61\xcd\x4d\xa4\xe4\xe9\x94"
@@ -905,6 +910,7 @@ check_pbkdf2 (void)
{
"passwordPASSWORDpassword", 24,
"saltSALTsaltSALTsaltSALTsaltSALTsalt", 36,
+ GCRY_MD_SHA1,
4096,
25,
"\x3d\x2e\xec\x4f\xe4\x1c\x84\x9b\x80\xc8"
@@ -914,6 +920,7 @@ check_pbkdf2 (void)
{
"pass\0word", 9,
"sa\0lt", 5,
+ GCRY_MD_SHA1,
4096,
16,
"\x56\xfa\x6a\xa7\x55\x48\x09\x9d\xcc\x37"
@@ -922,15 +929,71 @@ check_pbkdf2 (void)
{ /* empty password test, not in RFC-6070 */
"", 0,
"salt", 4,
+ GCRY_MD_SHA1,
2,
20,
"\x13\x3a\x4c\xe8\x37\xb4\xd2\x52\x1e\xe2"
"\xbf\x03\xe1\x1c\x71\xca\x79\x4e\x07\x97"
+ },
+ {
+ "password", 8,
+ "salt", 4,
+ GCRY_MD_GOSTR3411_CP,
+ 1,
+ 32,
+ "\x73\x14\xe7\xc0\x4f\xb2\xe6\x62\xc5\x43\x67\x42\x53\xf6\x8b\xd0"
+ "\xb7\x34\x45\xd0\x7f\x24\x1b\xed\x87\x28\x82\xda\x21\x66\x2d\x58"
+ },
+ {
+ "password", 8,
+ "salt", 4,
+ GCRY_MD_GOSTR3411_CP,
+ 2,
+ 32,
+ "\x99\x0d\xfa\x2b\xd9\x65\x63\x9b\xa4\x8b\x07\xb7\x92\x77\x5d\xf7"
+ "\x9f\x2d\xb3\x4f\xef\x25\xf2\x74\x37\x88\x72\xfe\xd7\xed\x1b\xb3"
+ },
+ {
+ "password", 8,
+ "salt", 4,
+ GCRY_MD_GOSTR3411_CP,
+ 4096,
+ 32,
+ "\x1f\x18\x29\xa9\x4b\xdf\xf5\xbe\x10\xd0\xae\xb3\x6a\xf4\x98\xe7"
+ "\xa9\x74\x67\xf3\xb3\x11\x16\xa5\xa7\xc1\xaf\xff\x9d\xea\xda\xfe"
+ },
+ /* { -- takes too long (4-5 min) to calculate
+ "password", 8,
+ "salt", 4,
+ GCRY_MD_GOSTR3411_CP,
+ 16777216,
+ 32,
+ "\xa5\x7a\xe5\xa6\x08\x83\x96\xd1\x20\x85\x0c\x5c\x09\xde\x0a\x52"
+ "\x51\x00\x93\x8a\x59\xb1\xb5\xc3\xf7\x81\x09\x10\xd0\x5f\xcd\x97"
+ }, */
+ {
+ "passwordPASSWORDpassword", 24,
+ "saltSALTsaltSALTsaltSALTsaltSALTsalt", 36,
+ GCRY_MD_GOSTR3411_CP,
+ 4096,
+ 40,
+ "\x78\x83\x58\xc6\x9c\xb2\xdb\xe2\x51\xa7\xbb\x17\xd5\xf4\x24\x1f"
+ "\x26\x5a\x79\x2a\x35\xbe\xcd\xe8\xd5\x6f\x32\x6b\x49\xc8\x50\x47"
+ "\xb7\x63\x8a\xcb\x47\x64\xb1\xfd"
+ },
+ {
+ "pass\0word", 9,
+ "sa\0lt", 5,
+ GCRY_MD_GOSTR3411_CP,
+ 4096,
+ 20,
+ "\x43\xe0\x6c\x55\x90\xb0\x8c\x02\x25\x24"
+ "\x23\x73\x12\x7e\xdf\x9c\x8e\x9c\x32\x91"
}
};
int tvidx;
gpg_error_t err;
- unsigned char outbuf[32];
+ unsigned char outbuf[40];
int i;
for (tvidx=0; tvidx < DIM(tv); tvidx++)
@@ -938,10 +1001,11 @@ check_pbkdf2 (void)
if (tv[tvidx].disabled)
continue;
if (verbose)
- fprintf (stderr, "checking PBKDF2 test vector %d\n", tvidx);
+ fprintf (stderr, "checking PBKDF2 test vector %d algo %d\n", tvidx,
+ tv[tvidx].hashalgo);
assert (tv[tvidx].dklen <= sizeof outbuf);
err = gcry_kdf_derive (tv[tvidx].p, tv[tvidx].plen,
- GCRY_KDF_PBKDF2, GCRY_MD_SHA1,
+ GCRY_KDF_PBKDF2, tv[tvidx].hashalgo,
tv[tvidx].salt, tv[tvidx].saltlen,
tv[tvidx].c, tv[tvidx].dklen, outbuf);
if (err)