Chromium Code Reviews| Index: chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
| diff --git a/chrome/browser/chromeos/platform_keys/platform_keys_service.cc b/chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
| index d4c38a66f3bdbe549cac32bb84082b2ed1fc8208..78cd351f80856a9bd82b5ba34c183387a597d69f 100644 |
| --- a/chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
| +++ b/chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
| @@ -498,7 +498,30 @@ class PlatformKeysService::SelectTask : public Task { |
| DoStep(); |
| return; |
| } |
| - matches_.swap(*matches); |
| + |
| + // If the type field does not contain any entries, all certificate types |
| + // shall be returned. |
| + if (request_.certificate_key_types.size() == 0) { |
| + matches_.swap(*matches); |
| + DoStep(); |
| + return; |
| + } |
| + |
| + // Filter the retrieved certificates allowing only those whose type is |
| + // contained in the type list of the certificate request. |
| + for (scoped_refptr<net::X509Certificate>& certificate : *matches) { |
| + net::X509Certificate::PublicKeyType key_type_tmp = |
|
pneubeck (no reviews)
2015/05/19 10:09:00
maybe key_type_tmp -> actual_key_type
cschuet (SLOW)
2015/05/19 11:36:23
Done.
|
| + net::X509Certificate::kPublicKeyTypeUnknown; |
| + size_t key_size_bits_tmp = 0; |
|
pneubeck (no reviews)
2015/05/19 10:09:00
maybe s/_tmp//
or maybe call it unused_key_size
cschuet (SLOW)
2015/05/19 11:36:23
Done.
|
| + net::X509Certificate::GetPublicKeyInfo(certificate->os_cert_handle(), |
| + &key_size_bits_tmp, &key_type_tmp); |
| + const std::vector<net::X509Certificate::PublicKeyType>& accepted_types = |
| + request_.certificate_key_types; |
| + if (std::find(accepted_types.begin(), accepted_types.end(), |
| + key_type_tmp) != accepted_types.end()) { |
| + matches_.push_back(certificate.Pass()); |
| + } |
| + } |
| DoStep(); |
| } |