OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/base/openssl_util.h" | 5 #include "net/base/openssl_util.h" |
6 | 6 |
7 #include <openssl/err.h> | 7 #include <openssl/err.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/platform_thread.h" | 10 #include "base/platform_thread.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 SSL_load_error_strings(); | 28 SSL_load_error_strings(); |
29 SSL_library_init(); | 29 SSL_library_init(); |
30 OpenSSL_add_all_algorithms(); | 30 OpenSSL_add_all_algorithms(); |
31 return SSL_CTX_new(SSLv23_client_method()); | 31 return SSL_CTX_new(SSLv23_client_method()); |
32 } | 32 } |
33 | 33 |
34 } // namespace | 34 } // namespace |
35 | 35 |
36 OpenSSLInitSingleton::OpenSSLInitSingleton() | 36 OpenSSLInitSingleton::OpenSSLInitSingleton() |
37 : ssl_ctx_(CreateSSL_CTX()), | 37 : ssl_ctx_(CreateSSL_CTX()), |
38 store_(X509_STORE_new()) { | 38 store_(NULL) { |
39 CHECK(ssl_ctx_.get()); | 39 CHECK(ssl_ctx_.get()); |
40 CHECK(store_.get()); | |
41 | 40 |
| 41 ReinitializeStore(); |
42 SSL_CTX_set_cert_verify_callback(ssl_ctx_.get(), NoOpVerifyCallback, NULL); | 42 SSL_CTX_set_cert_verify_callback(ssl_ctx_.get(), NoOpVerifyCallback, NULL); |
43 X509_STORE_set_default_paths(store_.get()); | |
44 // TODO(bulach): Enable CRL (see X509_STORE_set_flags(X509_V_FLAG_CRL_CHECK)). | |
45 int num_locks = CRYPTO_num_locks(); | 43 int num_locks = CRYPTO_num_locks(); |
46 for (int i = 0; i < num_locks; ++i) | 44 for (int i = 0; i < num_locks; ++i) |
47 locks_.push_back(new Lock()); | 45 locks_.push_back(new Lock()); |
48 CRYPTO_set_locking_callback(LockingCallback); | 46 CRYPTO_set_locking_callback(LockingCallback); |
49 CRYPTO_set_id_callback(CurrentThreadId); | 47 CRYPTO_set_id_callback(CurrentThreadId); |
50 } | 48 } |
51 | 49 |
52 OpenSSLInitSingleton::~OpenSSLInitSingleton() { | 50 OpenSSLInitSingleton::~OpenSSLInitSingleton() { |
53 CRYPTO_set_locking_callback(NULL); | 51 CRYPTO_set_locking_callback(NULL); |
54 EVP_cleanup(); | 52 EVP_cleanup(); |
(...skipping 20 matching lines...) Expand all Loading... |
75 int n, | 73 int n, |
76 const char* file, | 74 const char* file, |
77 int line) { | 75 int line) { |
78 CHECK_LT(static_cast<size_t>(n), locks_.size()); | 76 CHECK_LT(static_cast<size_t>(n), locks_.size()); |
79 if (mode & CRYPTO_LOCK) | 77 if (mode & CRYPTO_LOCK) |
80 locks_[n]->Acquire(); | 78 locks_[n]->Acquire(); |
81 else | 79 else |
82 locks_[n]->Release(); | 80 locks_[n]->Release(); |
83 } | 81 } |
84 | 82 |
| 83 void OpenSSLInitSingleton::ReinitializeStore() { |
| 84 store_.reset(X509_STORE_new()); |
| 85 CHECK(store_.get()); |
| 86 X509_STORE_set_default_paths(store_.get()); |
| 87 // TODO(bulach): Enable CRL (see X509_STORE_set_flags(X509_V_FLAG_CRL_CHECK)). |
| 88 } |
| 89 |
85 } // namespace net | 90 } // namespace net |
86 | 91 |
OLD | NEW |