diff options
author | mcgreer%netscape.com <devnull@localhost> | 2001-07-24 19:26:53 +0000 |
---|---|---|
committer | mcgreer%netscape.com <devnull@localhost> | 2001-07-24 19:26:53 +0000 |
commit | 305468ad30e8a8ae559845a247d153da0df23a82 (patch) | |
tree | 7cc98fe8c1ab30b4764340c83ae3fcb8bb4cc7fa | |
parent | 1b37f09ac48b270642652c056cf00a58d597af65 (diff) | |
download | nss-hg-305468ad30e8a8ae559845a247d153da0df23a82.tar.gz |
fix for 90510, listing individual certs from token
-rw-r--r-- | security/nss/cmd/certutil/certutil.c | 22 |
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; |