summaryrefslogtreecommitdiff
path: root/tests/basic.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2011-06-09 09:05:15 +0200
committerWerner Koch <wk@gnupg.org>2011-06-09 09:05:15 +0200
commit3762d82871a0fc84f13e6dffffcff0513dd248c0 (patch)
treead75061e3a10ddbabfd72f2eeaad285a7d0e633e /tests/basic.c
parent9d7628939af5d8fbfea69f91c8b02aea0f9d4744 (diff)
parent41811f6d8b93f32b5e3cc04ae3ad921a6c0aedc8 (diff)
downloadlibgcrypt-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.c44
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);