mc->szMutexFile = NULL;
mc->pMutex = NULL;
mc->aRandSeed = apr_array_make(pPool, 4, sizeof(ssl_randseed_t));
- mc->tPrivateKey = ssl_ds_table_make(pPool, sizeof(ssl_asn1_t));
+ mc->tPrivateKey = apr_hash_make(pPool);
mc->tPublicCert = ssl_ds_table_make(pPool, sizeof(ssl_asn1_t));
mc->tTmpKeys = apr_hash_make(pPool);
#ifdef SSL_EXPERIMENTAL_ENGINE
*/
ok = FALSE;
cp = apr_psprintf(p, "%s:RSA", cpVHostID);
- if ((asn1 = (ssl_asn1_t *)ssl_ds_table_get(mc->tPrivateKey, cp)) != NULL) {
+ if ((asn1 = ssl_asn1_table_get(mc->tPrivateKey, cp)) != NULL) {
ssl_log(s, SSL_LOG_TRACE,
"Init: (%s) Configuring RSA server private key", cpVHostID);
ucp = asn1->cpData;
ok = TRUE;
}
cp = apr_psprintf(p, "%s:DSA", cpVHostID);
- if ((asn1 = (ssl_asn1_t *)ssl_ds_table_get(mc->tPrivateKey, cp)) != NULL) {
+ if ((asn1 = ssl_asn1_table_get(mc->tPrivateKey, cp)) != NULL) {
ssl_log(s, SSL_LOG_TRACE,
"Init: (%s) Configuring DSA server private key", cpVHostID);
ucp = asn1->cpData;
EVP_PKEY *pPrivateKey;
ssl_asn1_t *asn1;
unsigned char *ucp;
+ long int length;
X509 *pX509Cert;
BOOL bReadable;
ssl_ds_array *aPassPhrase;
!(isterm = isatty(fileno(stdout)))) /* XXX: apr_isatty() */
{
char *key_id = apr_psprintf(p, "%s:%s", cpVHostID, "RSA"); /* XXX: check for DSA key too? */
- ssl_asn1_t *asn1 = (ssl_asn1_t *)ssl_ds_table_get(mc->tPrivateKey, key_id);
+ ssl_asn1_t *asn1 = ssl_asn1_table_get(mc->tPrivateKey, key_id);
if (asn1 && (asn1->source_mtime == pkey_mtime)) {
ssl_log(pServ, SSL_LOG_INFO,
* RSA structure which do not survive DSO reloads!)
*/
cp = apr_psprintf(mc->pPool, "%s:%s", cpVHostID, an);
- asn1 = (ssl_asn1_t *)ssl_ds_table_push(mc->tPrivateKey, cp);
- asn1->nData = i2d_PrivateKey(pPrivateKey, NULL);
- asn1->cpData = apr_palloc(mc->pPool, asn1->nData);
- ucp = asn1->cpData; i2d_PrivateKey(pPrivateKey, &ucp); /* 2nd arg increments */
-
- asn1->source_mtime = pkey_mtime;
+ length = i2d_PrivateKey(pPrivateKey, NULL);
+ ucp = ssl_asn1_table_set(mc->tPrivateKey, cp, length);
+ (void)i2d_PrivateKey(pPrivateKey, &ucp); /* 2nd arg increments */
+
+ if (nPassPhraseDialogCur != 0) {
+ /* remember mtime of encrypted keys */
+ asn1 = ssl_asn1_table_get(mc->tPrivateKey, cp);
+ asn1->source_mtime = pkey_mtime;
+ }
/*
* Free the private key structure