OLD | NEW |
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 "chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.
h" | 5 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.
h" |
6 | 6 |
7 #include <cryptohi.h> | 7 #include <cryptohi.h> |
8 #include <keyhi.h> | 8 #include <keyhi.h> |
| 9 #include <stdint.h> |
9 | 10 |
10 #include "base/base64.h" | 11 #include "base/base64.h" |
11 #include "base/bind.h" | 12 #include "base/bind.h" |
12 #include "base/location.h" | 13 #include "base/location.h" |
13 #include "base/logging.h" | 14 #include "base/logging.h" |
14 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
15 #include "base/prefs/pref_registry_simple.h" | 16 #include "base/prefs/pref_registry_simple.h" |
16 #include "base/prefs/pref_service.h" | 17 #include "base/prefs/pref_service.h" |
17 #include "base/prefs/scoped_user_pref_update.h" | 18 #include "base/prefs/scoped_user_pref_update.h" |
18 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 } | 80 } |
80 | 81 |
81 // Checks if a private RSA key associated with |public_key| can be found in | 82 // Checks if a private RSA key associated with |public_key| can be found in |
82 // |slot|. |slot| must be non-null. | 83 // |slot|. |slot| must be non-null. |
83 // Must be called on a worker thread. | 84 // Must be called on a worker thread. |
84 crypto::ScopedSECKEYPrivateKey GetPrivateKeyOnWorkerThread( | 85 crypto::ScopedSECKEYPrivateKey GetPrivateKeyOnWorkerThread( |
85 PK11SlotInfo* slot, | 86 PK11SlotInfo* slot, |
86 const std::string& public_key) { | 87 const std::string& public_key) { |
87 CHECK(slot); | 88 CHECK(slot); |
88 | 89 |
89 const uint8* public_key_uint8 = | 90 const uint8_t* public_key_uint8 = |
90 reinterpret_cast<const uint8*>(public_key.data()); | 91 reinterpret_cast<const uint8_t*>(public_key.data()); |
91 std::vector<uint8> public_key_vector( | 92 std::vector<uint8_t> public_key_vector(public_key_uint8, |
92 public_key_uint8, public_key_uint8 + public_key.size()); | 93 public_key_uint8 + public_key.size()); |
93 | 94 |
94 crypto::ScopedSECKEYPrivateKey rsa_key( | 95 crypto::ScopedSECKEYPrivateKey rsa_key( |
95 crypto::FindNSSKeyFromPublicKeyInfoInSlot(public_key_vector, slot)); | 96 crypto::FindNSSKeyFromPublicKeyInfoInSlot(public_key_vector, slot)); |
96 if (!rsa_key || SECKEY_GetPrivateKeyType(rsa_key.get()) != rsaKey) | 97 if (!rsa_key || SECKEY_GetPrivateKeyType(rsa_key.get()) != rsaKey) |
97 return nullptr; | 98 return nullptr; |
98 return rsa_key.Pass(); | 99 return rsa_key.Pass(); |
99 } | 100 } |
100 | 101 |
101 // Signs |data| using a private key associated with |public_key| and stored in | 102 // Signs |data| using a private key associated with |public_key| and stored in |
102 // |slot|. Once the data is signed, callback is run on |response_task_runner|. | 103 // |slot|. Once the data is signed, callback is run on |response_task_runner|. |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 // If key creation failed, reset the state machine. | 390 // If key creation failed, reset the state machine. |
390 create_tpm_key_state_ = | 391 create_tpm_key_state_ = |
391 public_key.empty() ? CREATE_TPM_KEY_NOT_STARTED : CREATE_TPM_KEY_DONE; | 392 public_key.empty() ? CREATE_TPM_KEY_NOT_STARTED : CREATE_TPM_KEY_DONE; |
392 } | 393 } |
393 | 394 |
394 void EasyUnlockTpmKeyManager::OnDataSigned( | 395 void EasyUnlockTpmKeyManager::OnDataSigned( |
395 const base::Callback<void(const std::string&)>& callback, | 396 const base::Callback<void(const std::string&)>& callback, |
396 const std::string& signature) { | 397 const std::string& signature) { |
397 callback.Run(signature); | 398 callback.Run(signature); |
398 } | 399 } |
OLD | NEW |