Reject inappropriate private key encryption ciphers.
authorDr. Stephen Henson <steve@openssl.org>
Sat, 23 Apr 2016 12:33:05 +0000 (13:33 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 27 Apr 2016 23:04:48 +0000 (00:04 +0100)
The traditional private key encryption algorithm doesn't function
properly if the IV length of the cipher is zero. These ciphers
(e.g. ECB mode) are not suitable for private key encryption
anyway.

Reviewed-by: Emilia Käsper <emilia@openssl.org>
crypto/pem/pem_lib.c

index 5e7aa776d9b2c775f7a224eb46d7b514f1647a48..6ee3b8e0494ea3113ecc97f5303908828219ae91 100644 (file)
@@ -344,7 +344,7 @@ int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
 
     if (enc != NULL) {
         objstr = OBJ_nid2sn(EVP_CIPHER_nid(enc));
-        if (objstr == NULL) {
+        if (objstr == NULL || EVP_CIPHER_iv_length(enc) == 0) {
             PEMerr(PEM_F_PEM_ASN1_WRITE_BIO, PEM_R_UNSUPPORTED_CIPHER);
             goto err;
         }