diff options
author | rsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-30 08:47:47 +0000 |
---|---|---|
committer | rsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-30 08:47:47 +0000 |
commit | eb8414e82812f8847a9eb7ab90fd191632ad3e8a (patch) | |
tree | 26970431a27bead05c2bbc82ece3a50f78224c74 /net/base/x509_certificate_mac.cc | |
parent | f4f8ed0a5e96e5020b302d66b6866e9ae97b478b (diff) | |
download | chromium_src-eb8414e82812f8847a9eb7ab90fd191632ad3e8a.zip chromium_src-eb8414e82812f8847a9eb7ab90fd191632ad3e8a.tar.gz chromium_src-eb8414e82812f8847a9eb7ab90fd191632ad3e8a.tar.bz2 |
Return the constructed certificate chain in X509Certificate::Verify()
BUG=65540
TEST=net_unittests --gtest_filter=X509CertificateTest.VerifyReturn*
Review URL: http://codereview.chromium.org/6874039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94832 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/x509_certificate_mac.cc')
-rw-r--r-- | net/base/x509_certificate_mac.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/base/x509_certificate_mac.cc b/net/base/x509_certificate_mac.cc index 88ff95f..ef69748 100644 --- a/net/base/x509_certificate_mac.cc +++ b/net/base/x509_certificate_mac.cc @@ -832,6 +832,23 @@ int X509Certificate::VerifyInternal(const std::string& hostname, return NetErrorFromOSStatus(status); ScopedCFTypeRef<CFArrayRef> scoped_completed_chain(completed_chain); + SecCertificateRef verified_cert = NULL; + std::vector<SecCertificateRef> verified_chain; + for (CFIndex i = 0, count = CFArrayGetCount(completed_chain); + i < count; ++i) { + SecCertificateRef chain_cert = reinterpret_cast<SecCertificateRef>( + const_cast<void*>(CFArrayGetValueAtIndex(completed_chain, i))); + if (i == 0) { + verified_cert = chain_cert; + } else { + verified_chain.push_back(chain_cert); + } + } + if (verified_cert) { + verify_result->verified_cert = CreateFromHandle(verified_cert, + verified_chain); + } + // Evaluate the results OSStatus cssm_result; switch (trust_result) { |