int PEM_def_callback(char *buf, int num, int rwflag, void *userdata) { int i, min_len; const char *prompt; /* We assume that the user passes a default password as userdata */ if (userdata) { i = strlen(userdata); i = (i > num) ? num : i; memcpy(buf, userdata, i); return i; } prompt = EVP_get_pw_prompt(); if (prompt == NULL) prompt = "Enter PEM pass phrase:"; /* * rwflag == 0 means decryption * rwflag == 1 means encryption * * We assume that for encryption, we want a minimum length, while for * decryption, we cannot know any minimum length, so we assume zero. */ min_len = rwflag ? MIN_LENGTH : 0; i = EVP_read_pw_string_min(buf, min_len, num, prompt, rwflag); if (i != 0) { PEMerr(PEM_F_PEM_DEF_CALLBACK, PEM_R_PROBLEMS_GETTING_PASSWORD); memset(buf, 0, (unsigned int)num); return -1; } return strlen(buf); }
int PEM_def_callback(char *buf, int num, int w, void *key) { int i,j; const char *prompt; if (key) { i = strlen(key); i = (i > num) ? num : i; memcpy(buf, key, i); return i; } prompt = EVP_get_pw_prompt(); if (prompt == NULL) prompt = "Enter PEM pass phrase:"; for (;;) { i = EVP_read_pw_string(buf, num, prompt, w); if (i != 0) { memset(buf, 0, (unsigned int)num); return(-1); } j = strlen(buf); if (j < OSSL_PASS_MIN_LENGTH) { fprintf(stderr, "phrase is too short, needs to be at least %d chars\n", OSSL_PASS_MIN_LENGTH); } else break; } return j; }
int PEM_def_callback(char *buf, int num, int w, void *key) { int i, j; const char *prompt; if (key) { i = strlen(key); i = (i > num) ? num : i; memcpy(buf, key, i); return (i); } prompt = EVP_get_pw_prompt(); if (prompt == NULL) prompt = "Enter PEM pass phrase:"; for (;;) { 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); memset(buf, 0, (unsigned int)num); return (-1); } j = strlen(buf); if (j < MIN_LENGTH) { fprintf(stderr, "phrase is too short, needs to be at least %d chars\n", MIN_LENGTH); } else break; } return (j); }
int PEM_def_callback(char *buf, int num, int w, void *key) { #if defined(OPENSSL_NO_STDIO) || defined(OPENSSL_NO_UI) int i; #else int i, j; const char *prompt; #endif if (key) { i = strlen(key); i = (i > num) ? num : i; memcpy(buf, key, i); return i; } #if defined(OPENSSL_NO_STDIO) || defined(OPENSSL_NO_UI) PEMerr(PEM_F_PEM_DEF_CALLBACK, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return -1; #else prompt = EVP_get_pw_prompt(); if (prompt == NULL) prompt = "Enter PEM pass phrase:"; for (;;) { /* * We assume that w == 0 means decryption, * while w == 1 means encryption */ int min_len = w ? MIN_LENGTH : 0; i = EVP_read_pw_string_min(buf, min_len, num, prompt, w); if (i != 0) { PEMerr(PEM_F_PEM_DEF_CALLBACK, PEM_R_PROBLEMS_GETTING_PASSWORD); memset(buf, 0, (unsigned int)num); return -1; } j = strlen(buf); if (min_len && j < min_len) { fprintf(stderr, "phrase is too short, needs to be at least %d chars\n", min_len); } else break; } return j; #endif }
int PEM_def_callback(char *buf, int num, int w, void *key) { #ifdef OPENSSL_NO_FP_API /* We should not ever call the default callback routine from * windows. */ PEMerr(PEM_F_PEM_DEF_CALLBACK,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return(-1); #else int i,j; const char *prompt; if(key) { i=strlen(key); i=(i > num)?num:i; memcpy(buf,key,i); return(i); } prompt=EVP_get_pw_prompt(); if (prompt == NULL) prompt="Enter PEM pass phrase:"; for (;;) { i=EVP_read_pw_string(buf,num,prompt,w); if (i != 0) { PEMerr(PEM_F_PEM_DEF_CALLBACK,PEM_R_PROBLEMS_GETTING_PASSWORD); memset(buf,0,(unsigned int)num); return(-1); } j=strlen(buf); if (j < MIN_LENGTH) { fprintf(stderr,"phrase is too short, needs to be at least %d chars\n",MIN_LENGTH); } else break; } return(j); #endif }
/* XXX LSSL ABI XXX return value and `num' ought to be size_t */ int PEM_def_callback(char *buf, int num, int w, void *key) { size_t l; int i; const char *prompt; if (key) { l = strlen(key); if (num < 0) return -1; if (l > (size_t)num) l = (size_t)num; memcpy(buf, key, l); return (int)l; } prompt = EVP_get_pw_prompt(); if (prompt == NULL) prompt = "Enter PEM pass phrase:"; for (;;) { 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); memset(buf, 0, num); return (-1); } l = strlen(buf); if (l < MIN_LENGTH) { fprintf(stderr, "phrase is too short, " "needs to be at least %zu chars\n", (size_t)MIN_LENGTH); } else break; } return (int)l; }