Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // This file includes code SSLClientSocketNSS::DoVerifyCertComplete() derived | 5 // This file includes code SSLClientSocketNSS::DoVerifyCertComplete() derived |
| 6 // from AuthCertificateCallback() in | 6 // from AuthCertificateCallback() in |
| 7 // mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp. | 7 // mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp. |
| 8 | 8 |
| 9 /* ***** BEGIN LICENSE BLOCK ***** | 9 /* ***** BEGIN LICENSE BLOCK ***** |
| 10 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 10 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 326 | 326 |
| 327 // Returns the current certificate chain as a vector of DER-encoded | 327 // Returns the current certificate chain as a vector of DER-encoded |
| 328 // base::StringPieces. The returned vector remains valid until Reset is | 328 // base::StringPieces. The returned vector remains valid until Reset is |
| 329 // called. | 329 // called. |
| 330 std::vector<base::StringPiece> AsStringPieceVector() const; | 330 std::vector<base::StringPiece> AsStringPieceVector() const; |
| 331 | 331 |
| 332 bool empty() const { return certs_.empty(); } | 332 bool empty() const { return certs_.empty(); } |
| 333 size_t size() const { return certs_.size(); } | 333 size_t size() const { return certs_.size(); } |
| 334 | 334 |
| 335 CERTCertificate* operator[](size_t index) const { | 335 CERTCertificate* operator[](size_t index) const { |
| 336 DCHECK_LT(index, certs_.size()); | 336 DCHECK_LT(index, size()); |
| 337 return certs_[index]; | 337 return certs_[index]; |
| 338 } | 338 } |
| 339 | 339 |
| 340 private: | 340 private: |
| 341 std::vector<CERTCertificate*> certs_; | 341 std::vector<CERTCertificate*> certs_; |
| 342 }; | 342 }; |
| 343 | 343 |
| 344 PeerCertificateChain::PeerCertificateChain( | 344 PeerCertificateChain::PeerCertificateChain( |
| 345 const PeerCertificateChain& other) { | 345 const PeerCertificateChain& other) { |
| 346 *this = other; | 346 *this = other; |
| 347 } | 347 } |
| 348 | 348 |
| 349 PeerCertificateChain::~PeerCertificateChain() { | 349 PeerCertificateChain::~PeerCertificateChain() { |
| 350 Reset(NULL); | 350 Reset(NULL); |
| 351 } | 351 } |
| 352 | 352 |
| 353 PeerCertificateChain& PeerCertificateChain::operator=( | 353 PeerCertificateChain& PeerCertificateChain::operator=( |
| 354 const PeerCertificateChain& other) { | 354 const PeerCertificateChain& other) { |
| 355 if (this == &other) | 355 if (this == &other) |
| 356 return *this; | 356 return *this; |
| 357 | 357 |
| 358 Reset(NULL); | 358 Reset(NULL); |
| 359 certs_.reserve(other.certs_.size()); | 359 certs_.reserve(other.size()); |
| 360 for (size_t i = 0; i < other.certs_.size(); ++i) | 360 for (size_t i = 0; i < other.size(); ++i) |
|
Ryan Sleevi
2014/03/26 21:22:45
This = not lgtm
Not sure why Clang griped about t
Nico
2014/03/26 21:35:12
Why is this? It calls others.size(), not this->siz
Ryan Sleevi
2014/03/26 21:42:20
Because it's inconsistently coupling implementatio
Nico
2014/03/26 21:43:52
Ok, deleted size() instead.
| |
| 361 certs_.push_back(CERT_DupCertificate(other.certs_[i])); | 361 certs_.push_back(CERT_DupCertificate(other.certs_[i])); |
| 362 | 362 |
| 363 return *this; | 363 return *this; |
| 364 } | 364 } |
| 365 | 365 |
| 366 void PeerCertificateChain::Reset(PRFileDesc* nss_fd) { | 366 void PeerCertificateChain::Reset(PRFileDesc* nss_fd) { |
| 367 for (size_t i = 0; i < certs_.size(); ++i) | 367 for (size_t i = 0; i < size(); ++i) |
| 368 CERT_DestroyCertificate(certs_[i]); | 368 CERT_DestroyCertificate(certs_[i]); |
| 369 certs_.clear(); | 369 certs_.clear(); |
| 370 | 370 |
| 371 if (nss_fd == NULL) | 371 if (nss_fd == NULL) |
| 372 return; | 372 return; |
| 373 | 373 |
| 374 CERTCertList* list = SSL_PeerCertificateChain(nss_fd); | 374 CERTCertList* list = SSL_PeerCertificateChain(nss_fd); |
| 375 // The handshake on |nss_fd| may not have completed. | 375 // The handshake on |nss_fd| may not have completed. |
| 376 if (list == NULL) | 376 if (list == NULL) |
| 377 return; | 377 return; |
| 378 | 378 |
| 379 for (CERTCertListNode* node = CERT_LIST_HEAD(list); | 379 for (CERTCertListNode* node = CERT_LIST_HEAD(list); |
| 380 !CERT_LIST_END(node, list); node = CERT_LIST_NEXT(node)) { | 380 !CERT_LIST_END(node, list); node = CERT_LIST_NEXT(node)) { |
| 381 certs_.push_back(CERT_DupCertificate(node->cert)); | 381 certs_.push_back(CERT_DupCertificate(node->cert)); |
| 382 } | 382 } |
| 383 CERT_DestroyCertList(list); | 383 CERT_DestroyCertList(list); |
| 384 } | 384 } |
| 385 | 385 |
| 386 std::vector<base::StringPiece> | 386 std::vector<base::StringPiece> |
| 387 PeerCertificateChain::AsStringPieceVector() const { | 387 PeerCertificateChain::AsStringPieceVector() const { |
| 388 std::vector<base::StringPiece> v(certs_.size()); | 388 std::vector<base::StringPiece> v(size()); |
| 389 for (unsigned i = 0; i < certs_.size(); i++) { | 389 for (unsigned i = 0; i < size(); i++) { |
|
Ryan Sleevi
2014/03/26 21:22:45
Ditto this - inconsistent with using certs_[i] imm
Nico
2014/03/26 21:35:12
Ditto "I don't understand" :-)
| |
| 390 v[i] = base::StringPiece( | 390 v[i] = base::StringPiece( |
| 391 reinterpret_cast<const char*>(certs_[i]->derCert.data), | 391 reinterpret_cast<const char*>(certs_[i]->derCert.data), |
| 392 certs_[i]->derCert.len); | 392 certs_[i]->derCert.len); |
| 393 } | 393 } |
| 394 | 394 |
| 395 return v; | 395 return v; |
| 396 } | 396 } |
| 397 | 397 |
| 398 // HandshakeState is a helper struct used to pass handshake state between | 398 // HandshakeState is a helper struct used to pass handshake state between |
| 399 // the NSS task runner and the network task runner. | 399 // the NSS task runner and the network task runner. |
| (...skipping 3192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3592 scoped_refptr<X509Certificate> | 3592 scoped_refptr<X509Certificate> |
| 3593 SSLClientSocketNSS::GetUnverifiedServerCertificateChain() const { | 3593 SSLClientSocketNSS::GetUnverifiedServerCertificateChain() const { |
| 3594 return core_->state().server_cert.get(); | 3594 return core_->state().server_cert.get(); |
| 3595 } | 3595 } |
| 3596 | 3596 |
| 3597 ServerBoundCertService* SSLClientSocketNSS::GetServerBoundCertService() const { | 3597 ServerBoundCertService* SSLClientSocketNSS::GetServerBoundCertService() const { |
| 3598 return server_bound_cert_service_; | 3598 return server_bound_cert_service_; |
| 3599 } | 3599 } |
| 3600 | 3600 |
| 3601 } // namespace net | 3601 } // namespace net |
| OLD | NEW |