EVP_PKEY *pkey;
const unsigned char *ptr;
+ ERR_clear_error();
+
/* perhaps it's an encrypted private key, so try again */
- ssl_load_encrypted_pkey(s, ptemp, i, &pphrases);
+ ssl_load_encrypted_pkey(s, ptemp, i, keyfile, &pphrases);
if (!(asn1 = ssl_asn1_table_get(mc->tPrivateKey, key_id)) ||
!(ptr = asn1->cpData) ||
}
apr_status_t ssl_load_encrypted_pkey(server_rec *s, apr_pool_t *p, int idx,
+ const char *pkey_file,
apr_array_header_t **pphrases)
{
SSLModConfigRec *mc = myModConfig(s);
apr_status_t rv;
pphrase_cb_arg_t ppcb_arg;
- ppcb_arg.pkey_file = APR_ARRAY_IDX(sc->server->pks->key_files, idx,
- const char *);
-
- if (!ppcb_arg.pkey_file) {
+ if (!pkey_file) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s, APLOGNO(02573)
"Init: No private key specified for %s", key_id);
return ssl_die(s);
}
- else if ((rv = exists_and_readable(ppcb_arg.pkey_file, p,
- &pkey_mtime)) != APR_SUCCESS ) {
+ else if ((rv = exists_and_readable(pkey_file, p, &pkey_mtime))
+ != APR_SUCCESS ) {
ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s, APLOGNO(02574)
- "Init: Can't open server private key file %s",
- ppcb_arg.pkey_file);
+ "Init: Can't open server private key file %s", pkey_file);
return ssl_die(s);
}
ppcb_arg.nPassPhraseDialogCur = 0;
ppcb_arg.bPassPhraseDialogOnce = TRUE;
ppcb_arg.key_id = key_id;
+ ppcb_arg.pkey_file = pkey_file;
/*
* if the private key is encrypted and SSLPassPhraseDialog
/** Pass Phrase Support */
apr_status_t ssl_load_encrypted_pkey(server_rec *, apr_pool_t *, int,
- apr_array_header_t **);
+ const char *, apr_array_header_t **);
/** Diffie-Hellman Parameter Support */
DH *ssl_dh_GetParamFromFile(const char *);