|
36 | 36 |
|
37 | 37 | #if defined(CRASHPAD_USE_BORINGSSL) |
38 | 38 | #include <openssl/ssl.h> |
| 39 | +#if BUILDFLAG(IS_ANDROID) |
| 40 | +#include "util/backtrace/android_cert_store.h" |
| 41 | +#endif |
39 | 42 | #endif |
40 | 43 |
|
41 | 44 | namespace crashpad { |
@@ -121,14 +124,41 @@ class SSLStream : public Stream { |
121 | 124 | SSL_CTX_set_verify(ctx_.get(), SSL_VERIFY_PEER, nullptr); |
122 | 125 | SSL_CTX_set_verify_depth(ctx_.get(), 5); |
123 | 126 |
|
| 127 | +#if BUILDFLAG(IS_ANDROID) |
| 128 | + { |
| 129 | + namespace cs = crashpad::backtrace::android_cert_store; |
| 130 | + auto result = cs::create(root_cert_path); |
| 131 | + if (result == cs::create_result::failure) { |
| 132 | + LOG(ERROR) << "Failed to create AndroidCertStore"; |
| 133 | + return false; |
| 134 | + } |
| 135 | + } |
| 136 | +#endif |
| 137 | + |
124 | 138 | if (!root_cert_path.empty()) { |
| 139 | +#if BUILDFLAG(IS_ANDROID) |
| 140 | + auto path = root_cert_path.value() + "/backtrace-cacert.pem"; |
| 141 | + if (SSL_CTX_load_verify_locations( |
| 142 | + ctx_.get(), path.c_str(), nullptr) <= 0) { |
| 143 | + LOG(ERROR) << "SSL_CTX_load_verify_locations"; |
| 144 | + return false; |
| 145 | + } |
| 146 | +#else |
125 | 147 | if (SSL_CTX_load_verify_locations( |
126 | 148 | ctx_.get(), root_cert_path.value().c_str(), nullptr) <= 0) { |
127 | 149 | LOG(ERROR) << "SSL_CTX_load_verify_locations"; |
128 | 150 | return false; |
129 | 151 | } |
| 152 | +#endif |
130 | 153 | } else { |
131 | | -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) |
| 154 | +#if BUILDFLAG(IS_ANDROID) |
| 155 | + auto path = root_cert_path.value() + "/backtrace-cacert.pem"; |
| 156 | + if (SSL_CTX_load_verify_locations( |
| 157 | + ctx_.get(), path.c_str(), nullptr) <= 0) { |
| 158 | + LOG(ERROR) << "SSL_CTX_load_verify_locations"; |
| 159 | + return false; |
| 160 | + } |
| 161 | +#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) |
132 | 162 | if (SSL_CTX_load_verify_locations( |
133 | 163 | ctx_.get(), nullptr, "/etc/ssl/certs") <= 0) { |
134 | 164 | LOG(ERROR) << "SSL_CTX_load_verify_locations"; |
@@ -165,7 +195,8 @@ class SSLStream : public Stream { |
165 | 195 | return false; |
166 | 196 | } |
167 | 197 |
|
168 | | - if (SSL_connect(ssl_.get()) <= 0) { |
| 198 | + int connect = SSL_connect(ssl_.get()); |
| 199 | + if (connect <= 0) { |
169 | 200 | LOG(ERROR) << "SSL_connect"; |
170 | 201 | return false; |
171 | 202 | } |
|
0 commit comments