summaryrefslogtreecommitdiff
path: root/lib/pki/pki3hack.c
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2014-11-18 15:16:24 -0800
committerNicholas Nethercote <nnethercote@mozilla.com>2014-11-18 15:16:24 -0800
commit40ab80997e8f2474a6c659334fb4eb6fa2c0c3f3 (patch)
tree84ba58ea9b93b24b22d453c8aae7ab8ccab5a0e9 /lib/pki/pki3hack.c
parent91ff991ecc874cc295eb24fc4e0e04428adb37a8 (diff)
downloadnss-hg-40ab80997e8f2474a6c659334fb4eb6fa2c0c3f3.tar.gz
Bug 1095307 - Clean up nssPKIX509_GetIssuerAndSerialFromDER(). r=relyea.NSS_3_18_BETA3
This patch: - Removes the two static issuer_and_serial_from_encoding() functions. - Rewrites nssPKIX509_GetIssuerAndSerialFromDER() to be almost identical to the issuer_and_serial_from_encoding() from pkistore.c. This new version avoids unnecessary heap allocations (and so doesn't need an |arena| argument), obtains the issuer and serial in the order suggested by the function name, and is more readable than the old version. - Tweaks nssTrustDomain_FindCertificateByEncodedCertificate() to be more like nssTrustDomain_GetCertByDERFromCache() and nssCertificateStore_FindCertificateByEncodedCertificate(), which are the other two functions that now call nssPKIX509_GetIssuerAndSerialFromDER().
Diffstat (limited to 'lib/pki/pki3hack.c')
-rw-r--r--lib/pki/pki3hack.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/pki/pki3hack.c b/lib/pki/pki3hack.c
index 6364eaf33..7430ca9f4 100644
--- a/lib/pki/pki3hack.c
+++ b/lib/pki/pki3hack.c
@@ -247,27 +247,28 @@ STAN_GetCertIdentifierFromDER(NSSArena *arenaOpt, NSSDER *der)
}
NSS_IMPLEMENT PRStatus
-nssPKIX509_GetIssuerAndSerialFromDER(NSSDER *der, NSSArena *arena,
+nssPKIX509_GetIssuerAndSerialFromDER(NSSDER *der,
NSSDER *issuer, NSSDER *serial)
{
- SECStatus secrv;
- SECItem derCert;
+ SECItem derCert = { 0 };
SECItem derIssuer = { 0 };
SECItem derSerial = { 0 };
- SECITEM_FROM_NSSITEM(&derCert, der);
- secrv = CERT_SerialNumberFromDERCert(&derCert, &derSerial);
+ SECStatus secrv;
+ derCert.data = (unsigned char *)der->data;
+ derCert.len = der->size;
+ secrv = CERT_IssuerNameFromDERCert(&derCert, &derIssuer);
if (secrv != SECSuccess) {
return PR_FAILURE;
}
- (void)nssItem_Create(arena, serial, derSerial.len, derSerial.data);
- secrv = CERT_IssuerNameFromDERCert(&derCert, &derIssuer);
+ secrv = CERT_SerialNumberFromDERCert(&derCert, &derSerial);
if (secrv != SECSuccess) {
PORT_Free(derSerial.data);
return PR_FAILURE;
}
- (void)nssItem_Create(arena, issuer, derIssuer.len, derIssuer.data);
- PORT_Free(derSerial.data);
- PORT_Free(derIssuer.data);
+ issuer->data = derIssuer.data;
+ issuer->size = derIssuer.len;
+ serial->data = derSerial.data;
+ serial->size = derSerial.len;
return PR_SUCCESS;
}