summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2010-03-27 19:31:55 +0000
committerDr. Stephen Henson <steve@openssl.org>2010-03-27 19:31:55 +0000
commit08df41277a2e0048af93ae33094923040a4e7f13 (patch)
treea33d0f483ffe9c07d03ddb1f7fe70703fcee4815 /crypto
parentac495542a663b241a598e9bd13bf8d2d7b8720be (diff)
PR: 1904
Submitted by: David Woodhouse <dwmw2@infradead.org> Pass passphrase minimum length down to UI.
Diffstat (limited to 'crypto')
-rw-r--r--crypto/evp/evp.h1
-rw-r--r--crypto/evp/evp_key.c9
-rw-r--r--crypto/pem/pem_lib.c2
3 files changed, 9 insertions, 3 deletions
diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h
index d8ae457e6b..037f14be23 100644
--- a/crypto/evp/evp.h
+++ b/crypto/evp/evp.h
@@ -523,6 +523,7 @@ __owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
__owur int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);
int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify);
+int EVP_read_pw_string_min(char *buf,int minlen,int maxlen,const char *prompt,int verify);
void EVP_set_pw_prompt(const char *prompt);
char * EVP_get_pw_prompt(void);
diff --git a/crypto/evp/evp_key.c b/crypto/evp/evp_key.c
index a22fa5036e..7961fbebf2 100644
--- a/crypto/evp/evp_key.c
+++ b/crypto/evp/evp_key.c
@@ -90,6 +90,11 @@ char *EVP_get_pw_prompt(void)
* this function will fail */
int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
{
+ return EVP_read_pw_string_min(buf, 0, len, prompt, verify);
+ }
+
+int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt, int verify)
+ {
int ret;
char buff[BUFSIZ];
UI *ui;
@@ -97,10 +102,10 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
if ((prompt == NULL) && (prompt_string[0] != '\0'))
prompt=prompt_string;
ui = UI_new();
- UI_add_input_string(ui,prompt,0,buf,0,(len>=BUFSIZ)?BUFSIZ-1:len);
+ UI_add_input_string(ui,prompt,0,buf,min,(len>=BUFSIZ)?BUFSIZ-1:len);
if (verify)
UI_add_verify_string(ui,prompt,0,
- buff,0,(len>=BUFSIZ)?BUFSIZ-1:len,buf);
+ buff,min,(len>=BUFSIZ)?BUFSIZ-1:len,buf);
ret = UI_process(ui);
UI_free(ui);
OPENSSL_cleanse(buff,BUFSIZ);
diff --git a/crypto/pem/pem_lib.c b/crypto/pem/pem_lib.c
index 27f0544c06..18cde7c2d9 100644
--- a/crypto/pem/pem_lib.c
+++ b/crypto/pem/pem_lib.c
@@ -105,7 +105,7 @@ int PEM_def_callback(char *buf, int num, int w, void *key)
for (;;)
{
- i=EVP_read_pw_string(buf,num,prompt,w);
+ i=EVP_read_pw_string_min(buf,MIN_LENGTH,num,prompt,w);
if (i != 0)
{
PEMerr(PEM_F_PEM_DEF_CALLBACK,PEM_R_PROBLEMS_GETTING_PASSWORD);