summaryrefslogtreecommitdiff
path: root/security/nss
diff options
context:
space:
mode:
authorian.mcgreer%sun.com <devnull@localhost>2002-12-03 20:53:02 +0000
committerian.mcgreer%sun.com <devnull@localhost>2002-12-03 20:53:02 +0000
commit3c17d52ce532a4ba04d4d5683c98a42c17adc654 (patch)
tree22bc8bd99ee72f6236fed84d2b21bc75b2481ee1 /security/nss
parent7c1b29ec33ceed71bcac077a81a014577466ffec (diff)
downloadnss-hg-3c17d52ce532a4ba04d4d5683c98a42c17adc654.tar.gz
make pkiutil work with multiple instance certs
Diffstat (limited to 'security/nss')
-rw-r--r--security/nss/cmd/pkiutil/pkiobject.c16
-rw-r--r--security/nss/lib/nss/nss.def2
-rw-r--r--security/nss/lib/pki/certificate.c16
3 files changed, 31 insertions, 3 deletions
diff --git a/security/nss/cmd/pkiutil/pkiobject.c b/security/nss/cmd/pkiutil/pkiobject.c
index 6f2841f41..4052b2140 100644
--- a/security/nss/cmd/pkiutil/pkiobject.c
+++ b/security/nss/cmd/pkiutil/pkiobject.c
@@ -437,18 +437,28 @@ dump_cert_info
PRStatus status;
PRUint32 i, j;
NSSToken **tokens, **tp;
-
- tokens = NSSCertificate_GetTokens(c, NULL);
+ /* XXX
+ * When we do searches by nickname, we only get instances of the
+ * cert for that nickname. An instance on another token with a
+ * different label will not match. Should the library do the
+ * this workaround?
+ */
+ NSSDER *issuer = NSSCertificate_GetIssuer(c);
+ NSSDER *serial = NSSCertificate_GetSerialNumber(c);
+ NSSCertificate *cp = NSSTrustDomain_FindCertificateByIssuerAndSerialNumber(td, issuer, serial);
+
+ tokens = NSSCertificate_GetTokens(cp, NULL);
if (tokens) {
for (tp = tokens; *tp; tp++) {
PR_fprintf(rtData->output.file,
"nickname \"%s\" on token \"%s\"\n",
- NSSCertificate_GetNickname(c, *tp),
+ NSSCertificate_GetNickname(cp, *tp),
NSSToken_GetName(*tp));
}
NSSTokenArray_Destroy(tokens);
PR_fprintf(rtData->output.file, "\n");
}
+ NSSCertificate_Destroy(cp);
return PR_SUCCESS;
}
diff --git a/security/nss/lib/nss/nss.def b/security/nss/lib/nss/nss.def
index 3b815436e..85ca7c518 100644
--- a/security/nss/lib/nss/nss.def
+++ b/security/nss/lib/nss/nss.def
@@ -107,8 +107,10 @@ NSSCertificate_BuildChain;
NSSCertificate_GetTokens;
;+#NSSCertificate_GetSlot;
;+#NSSCertificate_GetModule;
+NSSCertificate_GetIssuer;
NSSCertificate_GetNickname;
NSSCertificate_GetDecoding;
+NSSCertificate_GetSerialNumber;
NSSCertificate_GetType;
NSSCertificate_GetTrustedUsages;
NSSCertificate_SetTrustedUsages;
diff --git a/security/nss/lib/pki/certificate.c b/security/nss/lib/pki/certificate.c
index b56818255..14343efb5 100644
--- a/security/nss/lib/pki/certificate.c
+++ b/security/nss/lib/pki/certificate.c
@@ -286,6 +286,14 @@ nssCertificate_GetIssuer (
}
NSS_IMPLEMENT NSSDER *
+NSSCertificate_GetIssuer (
+ NSSCertificate *c
+)
+{
+ return nssCertificate_GetIssuer(c);
+}
+
+NSS_IMPLEMENT NSSDER *
nssCertificate_GetSerialNumber (
NSSCertificate *c
)
@@ -298,6 +306,14 @@ nssCertificate_GetSerialNumber (
}
NSS_IMPLEMENT NSSDER *
+NSSCertificate_GetSerialNumber (
+ NSSCertificate *c
+)
+{
+ return nssCertificate_GetSerialNumber(c);
+}
+
+NSS_IMPLEMENT NSSDER *
nssCertificate_GetSubject (
NSSCertificate *c
)