diff options
author | Nicholas Nethercote <nnethercote@mozilla.com> | 2014-11-18 15:16:24 -0800 |
---|---|---|
committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2014-11-18 15:16:24 -0800 |
commit | 40ab80997e8f2474a6c659334fb4eb6fa2c0c3f3 (patch) | |
tree | 84ba58ea9b93b24b22d453c8aae7ab8ccab5a0e9 /lib/pki/pki3hack.c | |
parent | 91ff991ecc874cc295eb24fc4e0e04428adb37a8 (diff) | |
download | nss-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.c | 21 |
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; } |