Fix a use after free crasher in the BrowserAccessibilityManagerWinTest.TestAccessible...
[chromium-blink-merge.git] / net / ssl / ssl_client_auth_cache.cc
blob4c6b0d82f153a95c6d8d5daf89e88f5a0160f0e9
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/ssl/ssl_client_auth_cache.h"
7 #include "base/logging.h"
8 #include "net/cert/x509_certificate.h"
10 namespace net {
12 SSLClientAuthCache::SSLClientAuthCache() {
13 CertDatabase::GetInstance()->AddObserver(this);
16 SSLClientAuthCache::~SSLClientAuthCache() {
17 CertDatabase::GetInstance()->RemoveObserver(this);
20 bool SSLClientAuthCache::Lookup(
21 const HostPortPair& server,
22 scoped_refptr<X509Certificate>* certificate) {
23 DCHECK(certificate);
25 AuthCacheMap::iterator iter = cache_.find(server);
26 if (iter == cache_.end())
27 return false;
29 *certificate = iter->second;
30 return true;
33 void SSLClientAuthCache::Add(const HostPortPair& server,
34 X509Certificate* value) {
35 cache_[server] = value;
37 // TODO(wtc): enforce a maximum number of entries.
40 void SSLClientAuthCache::Remove(const HostPortPair& server) {
41 cache_.erase(server);
44 void SSLClientAuthCache::OnCertAdded(const X509Certificate* cert) {
45 cache_.clear();
48 } // namespace net