michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsCertificatePrincipal.h" michael@0: michael@0: NS_IMPL_ISUPPORTS(nsCertificatePrincipal, nsICertificatePrincipal) michael@0: michael@0: NS_IMETHODIMP michael@0: nsCertificatePrincipal::GetFingerprint(nsACString& aFingerprint) michael@0: { michael@0: aFingerprint = mFingerprint; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsCertificatePrincipal::GetSubjectName(nsACString& aSubjectName) michael@0: { michael@0: aSubjectName = mSubjectName; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsCertificatePrincipal::GetPrettyName(nsACString& aPrettyName) michael@0: { michael@0: aPrettyName = mPrettyName; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsCertificatePrincipal::GetCertificate(nsISupports** aCert) michael@0: { michael@0: nsCOMPtr cert = mCert; michael@0: cert.forget(aCert); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsCertificatePrincipal::GetHasCertificate(bool* rv) michael@0: { michael@0: *rv = true; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsCertificatePrincipal::Equals(nsICertificatePrincipal* aOther, bool* rv) michael@0: { michael@0: nsAutoCString str; michael@0: aOther->GetFingerprint(str); michael@0: if (!str.Equals(mFingerprint)) { michael@0: *rv = false; michael@0: return NS_OK; michael@0: } michael@0: michael@0: // If either subject name is empty, just let the result stand, but if they're michael@0: // both non-empty, only claim equality if they're equal. michael@0: if (!mSubjectName.IsEmpty()) { michael@0: // Check the other principal's subject name michael@0: aOther->GetSubjectName(str); michael@0: *rv = str.Equals(mSubjectName) || str.IsEmpty(); michael@0: return NS_OK; michael@0: } michael@0: michael@0: *rv = true; michael@0: return NS_OK; michael@0: }