static void remove_certificate_entry ( nssCertificateStore *store, NSSCertificate *cert ) { certificate_hash_entry *entry; entry = (certificate_hash_entry *) nssHash_Lookup(store->issuer_and_serial, cert); if (entry) { nssHash_Remove(store->issuer_and_serial, cert); if (entry->trust) { nssTrust_Destroy(entry->trust); } if (entry->profile) { nssSMIMEProfile_Destroy(entry->profile); } nss_ZFreeIf(entry); } }
NSS_EXTERN PRStatus nssCertificateStore_AddSMIMEProfile ( nssCertificateStore *store, nssSMIMEProfile *profile ) { NSSCertificate *cert; certificate_hash_entry *entry; cert = profile->certificate; PZ_Lock(store->lock); entry = (certificate_hash_entry *) nssHash_Lookup(store->issuer_and_serial, cert); if (entry) { nssSMIMEProfile* newProfile = nssSMIMEProfile_AddRef(profile); if (entry->profile) { nssSMIMEProfile_Destroy(entry->profile); } entry->profile = newProfile; } PZ_Unlock(store->lock); return (entry) ? PR_SUCCESS : PR_FAILURE; }