summaryrefslogtreecommitdiff
path: root/tests/fipsdrv.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2008-10-30 10:23:17 +0000
committerWerner Koch <wk@gnupg.org>2008-10-30 10:23:17 +0000
commit961c8915316510f7c5fd2cb3dc5ae9b8000d91eb (patch)
treede4fb1596e82976bd4a0616f634ab977e534f978 /tests/fipsdrv.c
parent3f204a1533f15446f3579e648f0cf70639c4bc49 (diff)
downloadlibgcrypt-961c8915316510f7c5fd2cb3dc5ae9b8000d91eb.tar.gz
Fix ECB mode test
Diffstat (limited to 'tests/fipsdrv.c')
-rw-r--r--tests/fipsdrv.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/tests/fipsdrv.c b/tests/fipsdrv.c
index 1d5efbf9..054ad71d 100644
--- a/tests/fipsdrv.c
+++ b/tests/fipsdrv.c
@@ -867,10 +867,13 @@ run_encrypt_decrypt (int encrypt_mode,
die ("gcry_cipher_setkey failed with keylen %u: %s\n",
(unsigned int)key_buflen, gpg_strerror (err));
- err = gcry_cipher_setiv (hd, iv_buffer, iv_buflen);
- if (err)
- die ("gcry_cipher_setiv failed with ivlen %u: %s\n",
- (unsigned int)iv_buflen, gpg_strerror (err));
+ if (iv_buffer)
+ {
+ err = gcry_cipher_setiv (hd, iv_buffer, iv_buflen);
+ if (err)
+ die ("gcry_cipher_setiv failed with ivlen %u: %s\n",
+ (unsigned int)iv_buflen, gpg_strerror (err));
+ }
inbuf = data? NULL : gcry_xmalloc (datalen);
outbuflen = datalen;
@@ -1508,11 +1511,19 @@ main (int argc, char **argv)
cipher_algo = map_openssl_cipher_name (algo_string, &cipher_mode);
if (!cipher_algo)
die ("cipher algorithm `%s' is not supported\n", algo_string);
- if (!iv_string)
- die ("option --iv is required in this mode\n");
- iv_buffer = hex2buffer (iv_string, &iv_buflen);
- if (!iv_buffer)
- die ("invalid value for IV\n");
+ if (cipher_mode != GCRY_CIPHER_MODE_ECB)
+ {
+ if (!iv_string)
+ die ("option --iv is required in this mode\n");
+ iv_buffer = hex2buffer (iv_string, &iv_buflen);
+ if (!iv_buffer)
+ die ("invalid value for IV\n");
+ }
+ else
+ {
+ iv_buffer = NULL;
+ iv_buflen = 0;
+ }
if (!key_string)
die ("option --key is required in this mode\n");
key_buffer = hex2buffer (key_string, &key_buflen);