When only the key is given to "enc", the IV is undefined
authorLutz Jänicke <jaenicke@openssl.org>
Tue, 3 Jul 2001 10:32:30 +0000 (10:32 +0000)
committerLutz Jänicke <jaenicke@openssl.org>
Tue, 3 Jul 2001 10:32:30 +0000 (10:32 +0000)
(found by Andy Brown <logic@warthog.com>).

CHANGES
apps/enc.c
doc/apps/enc.pod

diff --git a/CHANGES b/CHANGES
index 47582d5b4a123bf7e1b99b5801d38894b7b879ed..824156315c25589c624ce8286675497ebadbefcb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,10 @@
 
  Changes between 0.9.6a and 0.9.6b  [XX xxx XXXX]
 
+  *) When only the key is given to "enc", the IV is undefined. Print out
+     an error message in this case.
+     [Lutz Jaenicke]
+
   *) Handle special case when X509_NAME is empty in X509 printing routines.
      [Steve Henson]
 
index 2101b4cc647786d57799eb0d380a0e2a68fb1d9a..ef0e872ffebea9f7a15689334ff6b2aa752ed6b4 100644 (file)
@@ -515,6 +515,14 @@ bad:
                        BIO_printf(bio_err,"invalid hex iv value\n");
                        goto end;
                        }
+               if ((hiv == NULL) && (str == NULL))
+                       {
+                       /* No IV was explicitly set and no IV was generated
+                        * during EVP_BytesToKey. Hence the IV is undefined,
+                        * making correct decryption impossible. */
+                       BIO_printf(bio_err, "iv undefined\n");
+                       goto end;
+                       }
                if ((hkey != NULL) && !set_hex(hkey,key,24))
                        {
                        BIO_printf(bio_err,"invalid hex key value\n");
index e436ccc37e6f2fdbf60af914f07188f89c5bd946..a68ddca13944a4ff350368a343d8bba00f690efb 100644 (file)
@@ -96,12 +96,18 @@ of hex digits.
 =item B<-K key>
 
 the actual key to use: this must be represented as a string comprised only
-of hex digits.
+of hex digits. If only the key is specified, the IV must additionally specified
+using the B<-iv> option. When both a key and a password are specified, the
+key given with the B<-K> option will be used and the IV generated from the
+password will be taken. It probably does not make much sense to specify
+both key and password.
 
 =item B<-iv IV>
 
 the actual IV to use: this must be represented as a string comprised only
-of hex digits.
+of hex digits. When only the key is specified using the B<-K> option, the
+IV must explicitly be defined. When a password is being specified using
+one of the other options, the IV is generated from this password.
 
 =item B<-p>