return String();
}
- rsa = RSA_new();
pkey = EVP_PKEY_new();
spki = NETSCAPE_SPKI_new();
if (!EVP_PKEY_assign_RSA(pkey, rsa))
return SSLErrorHandler(rsa, pkey, spki);
- if (!SSLPrivateKeyStoreTizen::getInstance()->storePrivateKey(url, pkey))
- return SSLErrorHandler(rsa, pkey, spki);
+ SSLPrivateKeyStoreTizen::getInstance()->storePrivateKey(url, pkey);
if (!NETSCAPE_SPKI_set_pubkey(spki, pkey))
- return SSLErrorHandler(rsa, pkey, spki);
+ return SSLErrorHandler(0, pkey, spki);
if (!ASN1_STRING_set((ASN1_STRING *)spki->spkac->challenge, challengeString.utf8().data(), challengeString.length()))
- return SSLErrorHandler(rsa, pkey, spki);
+ return SSLErrorHandler(0, pkey, spki);
if (!NETSCAPE_SPKI_sign(spki, pkey, EVP_md5()))
- return SSLErrorHandler(rsa, pkey, spki);
+ return SSLErrorHandler(0, pkey, spki);
char* spkistr = NETSCAPE_SPKI_b64_encode(spki);
String result(spkistr);
return s_SSLPrivateKeyStoreTizen;
}
-bool SSLPrivateKeyStoreTizen::storePrivateKey(const KURL& url, EVP_PKEY* pkey)
+void SSLPrivateKeyStoreTizen::storePrivateKey(const KURL& url, EVP_PKEY* pkey)
{
- PrivateKeyMap::AddResult result = m_privateKeyMap.set(url.host(), pkey);
- return result.isNewEntry;
+ EVP_PKEY* oldPkey = static_cast<EVP_PKEY*>(m_privateKeyMap.take(url.host()));
+ if (oldPkey)
+ EVP_PKEY_free(oldPkey);
+
+ m_privateKeyMap.set(url.host(), pkey);
}
EVP_PKEY* SSLPrivateKeyStoreTizen::fetchPrivateKey(const KURL& url)