提交 915c6a21 编写于 作者: R Richard Levitte

Stop assuming the IV is 8 bytes long, use the real size instead.

This is especially important for AES that has a 16 bytes IV.
上级 58706d59
...@@ -350,7 +350,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, ...@@ -350,7 +350,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc,
/* create the right magic header stuff */ /* create the right magic header stuff */
buf[0]='\0'; buf[0]='\0';
PEM_proc_type(buf,PEM_TYPE_ENCRYPTED); PEM_proc_type(buf,PEM_TYPE_ENCRYPTED);
PEM_dek_info(buf,objstr,8,(char *)iv); PEM_dek_info(buf,objstr,enc->iv_len,(char *)iv);
/* use the normal code to write things out */ /* use the normal code to write things out */
i=PEM_write_bio(bp,PEM_STRING_RSA,buf,data,i); i=PEM_write_bio(bp,PEM_STRING_RSA,buf,data,i);
......
...@@ -335,7 +335,7 @@ int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x, ...@@ -335,7 +335,7 @@ int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x,
kstr=(unsigned char *)buf; kstr=(unsigned char *)buf;
} }
RAND_add(data,i,0);/* put in the RSA key. */ RAND_add(data,i,0);/* put in the RSA key. */
if (RAND_pseudo_bytes(iv,8) < 0) /* Generate a salt */ if (RAND_pseudo_bytes(iv,enc->iv_len) < 0) /* Generate a salt */
goto err; goto err;
/* The 'iv' is used as the iv and as a salt. It is /* The 'iv' is used as the iv and as a salt. It is
* NOT taken from the BytesToKey function */ * NOT taken from the BytesToKey function */
...@@ -345,7 +345,7 @@ int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x, ...@@ -345,7 +345,7 @@ int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x,
buf[0]='\0'; buf[0]='\0';
PEM_proc_type(buf,PEM_TYPE_ENCRYPTED); PEM_proc_type(buf,PEM_TYPE_ENCRYPTED);
PEM_dek_info(buf,objstr,8,(char *)iv); PEM_dek_info(buf,objstr,enc->iv_len,(char *)iv);
/* k=strlen(buf); */ /* k=strlen(buf); */
EVP_CIPHER_CTX_init(&ctx); EVP_CIPHER_CTX_init(&ctx);
...@@ -471,7 +471,7 @@ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher) ...@@ -471,7 +471,7 @@ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher)
PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO,PEM_R_UNSUPPORTED_ENCRYPTION); PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO,PEM_R_UNSUPPORTED_ENCRYPTION);
return(0); return(0);
} }
if (!load_iv((unsigned char **)&header,&(cipher->iv[0]),8)) return(0); if (!load_iv((unsigned char **)&header,&(cipher->iv[0]),enc->iv_len)) return(0);
return(1); return(1);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册