diff options
author | Werner Koch <wk@gnupg.org> | 2011-06-09 09:05:15 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2011-06-09 09:05:15 +0200 |
commit | 3762d82871a0fc84f13e6dffffcff0513dd248c0 (patch) | |
tree | ad75061e3a10ddbabfd72f2eeaad285a7d0e633e /tests/basic.c | |
parent | 9d7628939af5d8fbfea69f91c8b02aea0f9d4744 (diff) | |
parent | 41811f6d8b93f32b5e3cc04ae3ad921a6c0aedc8 (diff) | |
download | libgcrypt-3762d82871a0fc84f13e6dffffcff0513dd248c0.tar.gz |
Merge branch 'master' into ueno-pss
Solved conflicts:
cipher/ChangeLog
cipher/pubkey.c
tests/ChangeLog
tests/basic.c
Diffstat (limited to 'tests/basic.c')
-rw-r--r-- | tests/basic.c | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/tests/basic.c b/tests/basic.c index a4d83e60..0c669386 100644 --- a/tests/basic.c +++ b/tests/basic.c @@ -56,6 +56,7 @@ test_spec_pubkey_t; static int verbose; static int error_count; static int in_fips_mode; +static int die_on_error; static void fail (const char *format, ...) @@ -66,6 +67,8 @@ fail (const char *format, ...) vfprintf (stderr, format, arg_ptr); va_end (arg_ptr); error_count++; + if (die_on_error) + exit (1); } static void @@ -2386,56 +2389,79 @@ check_pubkey_crypt (int n, gcry_sexp_t skey, gcry_sexp_t pkey, int algo) const char *data; const char *hint; int unpadded; - int expected_rc; + int encrypt_expected_rc; + int decrypt_expected_rc; } datas[] = { { "(data\n (flags pkcs1)\n" " (value #11223344556677889900AA#))\n", NULL, 0, + 0, 0 }, { "(data\n (flags pkcs1)\n" " (value #11223344556677889900AA#))\n", "(flags pkcs1)", 1, + 0, 0 }, { "(data\n (flags oaep)\n" " (value #11223344556677889900AA#))\n", "(flags oaep)", 1, + 0, 0 }, { "(data\n (flags oaep)\n (hash-algo sha1)\n" " (value #11223344556677889900AA#))\n", "(flags oaep)(hash-algo sha1)", 1, + 0, 0 }, { "(data\n (flags oaep)\n (hash-algo sha1)\n (label \"test\")\n" " (value #11223344556677889900AA#))\n", "(flags oaep)(hash-algo sha1)(label \"test\")", 1, + 0, 0 }, { "(data\n (flags )\n" " (value #11223344556677889900AA#))\n", NULL, 1, + 0, 0 }, { "(data\n (flags )\n" " (value #0090223344556677889900AA#))\n", NULL, 1, + 0, 0 }, { "(data\n (flags raw)\n" " (value #11223344556677889900AA#))\n", NULL, 1, + 0, 0 }, { "(data\n (flags pkcs1)\n" " (hash sha1 #11223344556677889900AABBCCDDEEFF10203040#))\n", NULL, 0, - GPG_ERR_CONFLICT }, + GPG_ERR_CONFLICT, + 0}, { "(data\n (flags raw foo)\n" " (hash sha1 #11223344556677889900AABBCCDDEEFF10203040#))\n", NULL, 0, - GPG_ERR_INV_FLAG }, + GPG_ERR_INV_FLAG, + 0}, + { "(data\n (flags raw)\n" + " (value #11223344556677889900AA#))\n", + "(flags oaep)", + 1, + 0, + GPG_ERR_ENCODING_PROBLEM }, + { "(data\n (flags oaep)\n" + " (value #11223344556677889900AA#))\n", + "(flags pkcs1)", + 1, + 0, + GPG_ERR_ENCODING_PROBLEM }, { "(data\n (flags pss)\n" " (value #11223344556677889900AA#))\n", NULL, @@ -2457,7 +2483,7 @@ check_pubkey_crypt (int n, gcry_sexp_t skey, gcry_sexp_t pkey, int algo) die ("converting data failed: %s\n", gpg_strerror (rc)); rc = gcry_pk_encrypt (&ciph, data, pkey); - if (gcry_err_code (rc) != datas[dataidx].expected_rc) + if (gcry_err_code (rc) != datas[dataidx].encrypt_expected_rc) fail ("gcry_pk_encrypt failed: %s\n", gpg_strerror (rc)); if (!rc) @@ -2498,9 +2524,10 @@ check_pubkey_crypt (int n, gcry_sexp_t skey, gcry_sexp_t pkey, int algo) ciph = list; } rc = gcry_pk_decrypt (&plain, ciph, skey); - if (rc) + if (gcry_err_code (rc) != datas[dataidx].decrypt_expected_rc) fail ("gcry_pk_decrypt failed: %s\n", gpg_strerror (rc)); - else if (datas[dataidx].unpadded) + + if (!rc && datas[dataidx].unpadded) { gcry_sexp_t p1, p2; @@ -2810,6 +2837,11 @@ main (int argc, char **argv) verbose += 2; argc--; argv++; } + else if (!strcmp (*argv, "--die")) + { + die_on_error = 1; + argc--; argv++; + } } gcry_control (GCRYCTL_SET_VERBOSITY, (int)verbose); |