OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "base/sha1.h" | 7 #include "base/sha1.h" |
8 #include "crypto/sha2.h" | 8 #include "crypto/sha2.h" |
| 9 #include "net/cert/internal/cert_errors.h" |
9 #include "net/cert/internal/parse_ocsp.h" | 10 #include "net/cert/internal/parse_ocsp.h" |
10 #include "net/der/encode_values.h" | 11 #include "net/der/encode_values.h" |
11 | 12 |
12 namespace net { | 13 namespace net { |
13 | 14 |
14 OCSPCertID::OCSPCertID() {} | 15 OCSPCertID::OCSPCertID() {} |
15 OCSPCertID::~OCSPCertID() {} | 16 OCSPCertID::~OCSPCertID() {} |
16 | 17 |
17 OCSPSingleResponse::OCSPSingleResponse() {} | 18 OCSPSingleResponse::OCSPSingleResponse() {} |
18 OCSPSingleResponse::~OCSPSingleResponse() {} | 19 OCSPSingleResponse::~OCSPSingleResponse() {} |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 | 494 |
494 } // namespace | 495 } // namespace |
495 | 496 |
496 bool GetOCSPCertStatus(const OCSPResponseData& response_data, | 497 bool GetOCSPCertStatus(const OCSPResponseData& response_data, |
497 const der::Input& issuer_tbs_certificate_tlv, | 498 const der::Input& issuer_tbs_certificate_tlv, |
498 const der::Input& cert_tbs_certificate_tlv, | 499 const der::Input& cert_tbs_certificate_tlv, |
499 OCSPCertStatus* out) { | 500 OCSPCertStatus* out) { |
500 out->status = OCSPRevocationStatus::GOOD; | 501 out->status = OCSPRevocationStatus::GOOD; |
501 | 502 |
502 ParsedTbsCertificate tbs_cert; | 503 ParsedTbsCertificate tbs_cert; |
503 if (!ParseTbsCertificate(cert_tbs_certificate_tlv, {}, &tbs_cert)) | 504 // TODO(crbug.com/634443): Propagate the errors. |
| 505 CertErrors errors; |
| 506 if (!ParseTbsCertificate(cert_tbs_certificate_tlv, {}, &tbs_cert, &errors)) |
504 return false; | 507 return false; |
505 ParsedTbsCertificate issuer_tbs_cert; | 508 ParsedTbsCertificate issuer_tbs_cert; |
506 if (!ParseTbsCertificate(issuer_tbs_certificate_tlv, {}, &issuer_tbs_cert)) | 509 if (!ParseTbsCertificate(issuer_tbs_certificate_tlv, {}, &issuer_tbs_cert, |
| 510 &errors)) |
507 return false; | 511 return false; |
508 | 512 |
509 bool found = false; | 513 bool found = false; |
510 for (const auto& response : response_data.responses) { | 514 for (const auto& response : response_data.responses) { |
511 OCSPSingleResponse single_response; | 515 OCSPSingleResponse single_response; |
512 if (!ParseOCSPSingleResponse(response, &single_response)) | 516 if (!ParseOCSPSingleResponse(response, &single_response)) |
513 return false; | 517 return false; |
514 if (CheckCertID(single_response.cert_id_tlv, tbs_cert, issuer_tbs_cert, | 518 if (CheckCertID(single_response.cert_id_tlv, tbs_cert, issuer_tbs_cert, |
515 tbs_cert.serial_number)) { | 519 tbs_cert.serial_number)) { |
516 OCSPCertStatus new_status = single_response.cert_status; | 520 OCSPCertStatus new_status = single_response.cert_status; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 &earliest_this_update)) { | 552 &earliest_this_update)) { |
549 return false; | 553 return false; |
550 } | 554 } |
551 if (response.this_update < earliest_this_update) | 555 if (response.this_update < earliest_this_update) |
552 return false; // Response is too old. | 556 return false; // Response is too old. |
553 | 557 |
554 return true; | 558 return true; |
555 } | 559 } |
556 | 560 |
557 } // namespace net | 561 } // namespace net |
OLD | NEW |