Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1582)

Side by Side Diff: components/cast_certificate/cast_cert_validator.cc

Issue 2303673004: Hook up Chrome Cast sender to Cast CRL. (Closed)
Patch Set: Cleaned up unused headers. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/cast_certificate/cast_cert_validator.h" 5 #include "components/cast_certificate/cast_cert_validator.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 // INTEGER (non-minimal encoding). 247 // INTEGER (non-minimal encoding).
248 // 248 //
249 // Allow these sorts of serial numbers. 249 // Allow these sorts of serial numbers.
250 // 250 //
251 // TODO(eroman): At some point in the future this workaround will no longer be 251 // TODO(eroman): At some point in the future this workaround will no longer be
252 // necessary. Should revisit this for removal in 2017 if not earlier. 252 // necessary. Should revisit this for removal in 2017 if not earlier.
253 options.allow_invalid_serial_numbers = true; 253 options.allow_invalid_serial_numbers = true;
254 return options; 254 return options;
255 } 255 }
256 256
257 } // namespace
258
257 // Verifies a cast device certficate given a chain of DER-encoded certificates. 259 // Verifies a cast device certficate given a chain of DER-encoded certificates.
258 bool VerifyDeviceCert(const std::vector<std::string>& certs, 260 bool VerifyDeviceCertUsingCustomTrustStore(
259 const base::Time& time, 261 const std::vector<std::string>& certs,
260 std::unique_ptr<CertVerificationContext>* context, 262 const base::Time& time,
261 CastDeviceCertPolicy* policy, 263 std::unique_ptr<CertVerificationContext>* context,
262 const CastCRL* crl, 264 CastDeviceCertPolicy* policy,
263 CRLPolicy crl_policy, 265 const CastCRL* crl,
264 net::TrustStore* trust_store) { 266 CRLPolicy crl_policy,
267 net::TrustStore* trust_store) {
268 if (!trust_store)
269 return false;
270
265 if (certs.empty()) 271 if (certs.empty())
266 return false; 272 return false;
267 273
268 // No reference to these ParsedCertificates is kept past the end of this 274 // No reference to these ParsedCertificates is kept past the end of this
269 // function, so using EXTERNAL_REFERENCE here is safe. 275 // function, so using EXTERNAL_REFERENCE here is safe.
270 scoped_refptr<net::ParsedCertificate> target_cert; 276 scoped_refptr<net::ParsedCertificate> target_cert;
271 net::CertIssuerSourceStatic intermediate_cert_issuer_source; 277 net::CertIssuerSourceStatic intermediate_cert_issuer_source;
272 for (size_t i = 0; i < certs.size(); ++i) { 278 for (size_t i = 0; i < certs.size(); ++i) {
273 scoped_refptr<net::ParsedCertificate> cert( 279 scoped_refptr<net::ParsedCertificate> cert(
274 net::ParsedCertificate::CreateFromCertificateData( 280 net::ParsedCertificate::CreateFromCertificateData(
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 return false; 324 return false;
319 325
320 if (!crl->CheckRevocation(result.paths[result.best_result_index]->path, 326 if (!crl->CheckRevocation(result.paths[result.best_result_index]->path,
321 time)) { 327 time)) {
322 return false; 328 return false;
323 } 329 }
324 } 330 }
325 return true; 331 return true;
326 } 332 }
327 333
328 } // namespace
329
330 bool VerifyDeviceCert(const std::vector<std::string>& certs, 334 bool VerifyDeviceCert(const std::vector<std::string>& certs,
331 const base::Time& time, 335 const base::Time& time,
332 std::unique_ptr<CertVerificationContext>* context, 336 std::unique_ptr<CertVerificationContext>* context,
333 CastDeviceCertPolicy* policy, 337 CastDeviceCertPolicy* policy,
334 const CastCRL* crl, 338 const CastCRL* crl,
335 CRLPolicy crl_policy) { 339 CRLPolicy crl_policy) {
336 return VerifyDeviceCert(certs, time, context, policy, crl, crl_policy, 340 return VerifyDeviceCertUsingCustomTrustStore(
337 &CastTrustStore::Get()); 341 certs, time, context, policy, crl, crl_policy, &CastTrustStore::Get());
338 }
339
340 bool VerifyDeviceCertForTest(const std::vector<std::string>& certs,
341 const base::Time& time,
342 std::unique_ptr<CertVerificationContext>* context,
343 CastDeviceCertPolicy* policy,
344 const CastCRL* crl,
345 CRLPolicy crl_policy,
346 net::TrustStore* trust_store) {
347 return VerifyDeviceCert(certs, time, context, policy, crl, crl_policy,
348 trust_store);
349 } 342 }
350 343
351 std::unique_ptr<CertVerificationContext> CertVerificationContextImplForTest( 344 std::unique_ptr<CertVerificationContext> CertVerificationContextImplForTest(
352 const base::StringPiece& spki) { 345 const base::StringPiece& spki) {
353 // Use a bogus CommonName, since this is just exposed for testing signature 346 // Use a bogus CommonName, since this is just exposed for testing signature
354 // verification by unittests. 347 // verification by unittests.
355 return base::WrapUnique( 348 return base::WrapUnique(
356 new CertVerificationContextImpl(net::der::Input(spki), "CommonName")); 349 new CertVerificationContextImpl(net::der::Input(spki), "CommonName"));
357 } 350 }
358 351
359 } // namespace cast_certificate 352 } // namespace cast_certificate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698