PR: 1904
authorDr. Stephen Henson <steve@openssl.org>
Sat, 27 Mar 2010 19:27:51 +0000 (19:27 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Sat, 27 Mar 2010 19:27:51 +0000 (19:27 +0000)
Submitted by: David Woodhouse <dwmw2@infradead.org>

Pass passphrase minimum length down to UI.

crypto/evp/evp.h
crypto/evp/evp_key.c
crypto/pem/pem_lib.c
util/libeay.num

index 41fdb2b..9f9795e 100644 (file)
@@ -522,6 +522,7 @@ int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
 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);
 
index 361ea69..839d6a3 100644 (file)
@@ -89,6 +89,11 @@ char *EVP_get_pw_prompt(void)
  * in the DES library -- if someone ever wants to disable DES,
  * 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];
@@ -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);
index a547fdc..42e4861 100644 (file)
@@ -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);
index 597fbd5..007e1f8 100755 (executable)
@@ -4175,3 +4175,4 @@ X509_subject_name_hash_old              4548      EXIST::FUNCTION:MD5
 EVP_CIPHER_CTX_copy                     4549   EXIST::FUNCTION:
 UI_method_get_prompt_constructor        4550   EXIST::FUNCTION:
 UI_method_set_prompt_constructor        4551   EXIST::FUNCTION:
+EVP_read_pw_string_min                  4552   EXIST::FUNCTION: