From c1d75edf9686f24cc8ca6015be70678897ceecb0 Mon Sep 17 00:00:00 2001 From: "ddrinan%netscape.com" Date: Thu, 2 Aug 2001 23:52:25 +0000 Subject: [PATCH] Bug 86860 - cert issuer details. r=javi,sr=blizzard git-svn-id: svn://10.0.0.236/trunk@100246 18797224-902f-48f8-a5cc-f745e15eee43 --- .../pki/resources/content/viewCertDetails.js | 14 +---- .../manager/ssl/public/nsIX509Cert.idl | 2 + .../manager/ssl/src/nsNSSCallbacks.cpp | 2 +- .../manager/ssl/src/nsNSSCertificate.cpp | 63 +++++++++++-------- .../manager/ssl/src/nsNSSCertificate.h | 1 - 5 files changed, 43 insertions(+), 39 deletions(-) diff --git a/mozilla/security/manager/pki/resources/content/viewCertDetails.js b/mozilla/security/manager/pki/resources/content/viewCertDetails.js index 9172ee983a1..196b7fa0db3 100644 --- a/mozilla/security/manager/pki/resources/content/viewCertDetails.js +++ b/mozilla/security/manager/pki/resources/content/viewCertDetails.js @@ -225,18 +225,10 @@ function DisplayGeneralDataFromCert(cert) addAttributeFromCert('validityend', cert.expiresDate); //Now to populate the fields that correspond to the issuer. - var issuer = cert.issuer; var issuerCommonname, issuerOrg, issuerOrgUnit; - if (issuer) { - issuerCommonname = issuer.commonName; - issuerOrg = issuer.organization; - issuerOrgUnit = issuer.organizationalUnit; - } else { - var unknownIssuer = bundle.GetStringFromName('unknownIssuer'); - issuerCommonname = unknownIssuer; - issuerOrg = unknownIssuer; - issuerOrgUnit = unknownIssuer; - } + issuerCommonname = cert.issuerCommonName; + issuerOrg = cert.issuerOrganization; + issuerOrgUnit = cert.issuerOrganizationalUnit; addAttributeFromCert('issuercommonname', issuerCommonname); addAttributeFromCert('issuerorganization', issuerOrg); addAttributeFromCert('issuerorgunit', issuerOrgUnit); diff --git a/mozilla/security/manager/ssl/public/nsIX509Cert.idl b/mozilla/security/manager/ssl/public/nsIX509Cert.idl index 5e7a1bff569..e5fa173b8ba 100644 --- a/mozilla/security/manager/ssl/public/nsIX509Cert.idl +++ b/mozilla/security/manager/ssl/public/nsIX509Cert.idl @@ -124,7 +124,9 @@ interface nsIX509Cert : nsISupports { readonly attribute wstring issuedDate; readonly attribute wstring expiresDate; readonly attribute wstring tokenName; + readonly attribute wstring issuerCommonName; readonly attribute wstring issuerOrganization; + readonly attribute wstring issuerOrganizationUnit; readonly attribute nsIX509Cert issuer; readonly attribute nsIX509CertValidity validity; diff --git a/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp b/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp index 4012dafc791..70e0ed233d0 100644 --- a/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp @@ -207,7 +207,7 @@ void PR_CALLBACK HandshakeCallback(PRFileDesc* fd, void* client_data) { nsIWebProgressListener::STATE_SECURE_LOW); CERTCertificate *peerCert = SSL_PeerCertificate(fd); - char* caName = CERT_GetOrgName(&peerCert->subject); + char* caName = CERT_GetOrgName(&peerCert->issuer); CERT_DestroyCertificate(peerCert); if (!caName) { caName = signer; diff --git a/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp b/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp index 1fc9633237a..0d244b11018 100644 --- a/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp @@ -32,7 +32,7 @@ * may use your version of this file under either the MPL or the * GPL. * - * $Id: nsNSSCertificate.cpp,v 1.40 2001-08-01 23:05:08 javi%netscape.com Exp $ + * $Id: nsNSSCertificate.cpp,v 1.41 2001-08-02 23:52:14 ddrinan%netscape.com Exp $ */ #include "prmem.h" @@ -683,37 +683,48 @@ nsNSSCertificate::GetOrganization(PRUnichar **aOrganization) return NS_OK; } +NS_IMETHODIMP +nsNSSCertificate::GetIssuerCommonName(PRUnichar **aCommonName) +{ + NS_ENSURE_ARG(aCommonName); + *aCommonName = nsnull; + if (mCert) { + char *commonName = CERT_GetCommonName(&mCert->issuer); + if (commonName) { + nsAutoString cn = NS_ConvertASCIItoUCS2(commonName); + *aCommonName = cn.ToNewUnicode(); + } + } + return NS_OK; +} + NS_IMETHODIMP nsNSSCertificate::GetIssuerOrganization(PRUnichar **aOrganization) { NS_ENSURE_ARG(aOrganization); - if (mIssuerOrg.Length() == 0) { - PRBool failed = PR_TRUE; - CERTCertificate *issuer; - issuer = CERT_FindCertIssuer(mCert, PR_Now(), certUsageSSLClient); - if (issuer) { - char *org = CERT_GetOrgName(&issuer->subject); - if (org) { - mIssuerOrg = NS_ConvertASCIItoUCS2(org); - failed = PR_FALSE; - } - } - if (failed) { - nsresult rv; - nsCOMPtr nssComponent( - do_GetService(kNSSComponentCID, &rv)); - if (NS_FAILED(rv)) return rv; - if (!issuer) { - rv = nssComponent->GetPIPNSSBundleString( - NS_LITERAL_STRING("UnknownCertIssuer").get(), mIssuerOrg); - } else { /* !org */ - rv = nssComponent->GetPIPNSSBundleString( - NS_LITERAL_STRING("UnknownCertOrg").get(), mIssuerOrg); - } - if (NS_FAILED(rv)) return rv; + *aOrganization = nsnull; + if (mCert) { + char *organization = CERT_GetOrgName(&mCert->issuer); + if (organization) { + nsAutoString org = NS_ConvertASCIItoUCS2(organization); + *aOrganization = org.ToNewUnicode(); + } + } + return NS_OK; +} + +NS_IMETHODIMP +nsNSSCertificate::GetIssuerOrganizationUnit(PRUnichar **aOrganizationUnit) +{ + NS_ENSURE_ARG(aOrganizationUnit); + *aOrganizationUnit = nsnull; + if (mCert) { + char *organizationUnit = CERT_GetOrgUnitName(&mCert->issuer); + if (organizationUnit) { + nsAutoString orgUnit = NS_ConvertASCIItoUCS2(organizationUnit); + *aOrganizationUnit = orgUnit.ToNewUnicode(); } } - *aOrganization = mIssuerOrg.ToNewUnicode(); return NS_OK; } diff --git a/mozilla/security/manager/ssl/src/nsNSSCertificate.h b/mozilla/security/manager/ssl/src/nsNSSCertificate.h index 786b3d30c86..b9fd201ee3a 100644 --- a/mozilla/security/manager/ssl/src/nsNSSCertificate.h +++ b/mozilla/security/manager/ssl/src/nsNSSCertificate.h @@ -64,7 +64,6 @@ public: private: CERTCertificate *mCert; - nsString mIssuerOrg; PRBool mPermDelete; PRUint32 mCertType; nsCOMPtr mASN1Structure;