summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcgreer%netscape.com <devnull@localhost>2001-07-24 19:26:53 +0000
committermcgreer%netscape.com <devnull@localhost>2001-07-24 19:26:53 +0000
commit305468ad30e8a8ae559845a247d153da0df23a82 (patch)
tree7cc98fe8c1ab30b4764340c83ae3fcb8bb4cc7fa
parent1b37f09ac48b270642652c056cf00a58d597af65 (diff)
downloadnss-hg-305468ad30e8a8ae559845a247d153da0df23a82.tar.gz
fix for 90510, listing individual certs from token
-rw-r--r--security/nss/cmd/certutil/certutil.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/security/nss/cmd/certutil/certutil.c b/security/nss/cmd/certutil/certutil.c
index 02350a903..0483ce0f3 100644
--- a/security/nss/cmd/certutil/certutil.c
+++ b/security/nss/cmd/certutil/certutil.c
@@ -511,6 +511,7 @@ printCertCB(CERTCertificate *cert, void *arg)
{
SECStatus rv;
SECItem data;
+ CERTCertTrust *trust = (CERTCertTrust *)arg;
data.data = cert->derCert.data;
data.len = cert->derCert.len;
@@ -521,8 +522,13 @@ printCertCB(CERTCertificate *cert, void *arg)
SECU_PrintError(progName, "problem printing certificate");
return(SECFailure);
}
- SECU_PrintTrustFlags(stdout, &cert->dbEntry->trust,
- "Certificate Trust Flags", 1);
+ if (trust) {
+ SECU_PrintTrustFlags(stdout, trust,
+ "Certificate Trust Flags", 1);
+ } else {
+ SECU_PrintTrustFlags(stdout, &cert->dbEntry->trust,
+ "Certificate Trust Flags", 1);
+ }
printf("\n");
@@ -581,7 +587,17 @@ listCerts(CERTCertDBHandle *handle, char *name, PK11SlotInfo *slot,
/* List certs on a non-internal slot. */
if (PK11_NeedLogin(slot))
PK11_Authenticate(slot, PR_TRUE, pwarg);
- rv = PK11_TraverseCertsInSlot(slot, SECU_PrintCertNickname, stdout);
+ if (name) {
+ CERTCertificate *the_cert;
+ the_cert = PK11_FindCertFromNickname(name, NULL);
+ if (!the_cert) {
+ SECU_PrintError(progName, "Could not find: %s\n", name);
+ return SECFailure;
+ }
+ rv = printCertCB(the_cert, the_cert->trust);
+ } else {
+ rv = PK11_TraverseCertsInSlot(slot, SECU_PrintCertNickname, stdout);
+ }
if (rv) {
SECU_PrintError(progName, "problem printing certificate nicknames");
return SECFailure;