| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/settings/token_encryptor.h" | 5 #include "chrome/browser/chromeos/settings/token_encryptor.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 #include <stdint.h> |
| 9 |
| 7 #include <vector> | 10 #include <vector> |
| 8 | 11 |
| 9 #include "base/logging.h" | 12 #include "base/logging.h" |
| 10 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 11 #include "base/strings/string_util.h" | 14 #include "base/strings/string_util.h" |
| 12 #include "base/sys_info.h" | 15 #include "base/sys_info.h" |
| 13 #include "chromeos/cryptohome/system_salt_getter.h" | 16 #include "chromeos/cryptohome/system_salt_getter.h" |
| 14 #include "crypto/encryptor.h" | 17 #include "crypto/encryptor.h" |
| 15 #include "crypto/nss_util.h" | 18 #include "crypto/nss_util.h" |
| 16 #include "crypto/sha2.h" | 19 #include "crypto/sha2.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 | 93 |
| 91 return base::ToLowerASCII( | 94 return base::ToLowerASCII( |
| 92 base::HexEncode(reinterpret_cast<const void*>(encoded_token.data()), | 95 base::HexEncode(reinterpret_cast<const void*>(encoded_token.data()), |
| 93 encoded_token.size())); | 96 encoded_token.size())); |
| 94 } | 97 } |
| 95 | 98 |
| 96 std::string CryptohomeTokenEncryptor::DecryptTokenWithKey( | 99 std::string CryptohomeTokenEncryptor::DecryptTokenWithKey( |
| 97 crypto::SymmetricKey* key, | 100 crypto::SymmetricKey* key, |
| 98 const std::string& salt, | 101 const std::string& salt, |
| 99 const std::string& encrypted_token_hex) { | 102 const std::string& encrypted_token_hex) { |
| 100 std::vector<uint8> encrypted_token_bytes; | 103 std::vector<uint8_t> encrypted_token_bytes; |
| 101 if (!base::HexStringToBytes(encrypted_token_hex, &encrypted_token_bytes)) { | 104 if (!base::HexStringToBytes(encrypted_token_hex, &encrypted_token_bytes)) { |
| 102 LOG(WARNING) << "Corrupt encrypted token found."; | 105 LOG(WARNING) << "Corrupt encrypted token found."; |
| 103 return std::string(); | 106 return std::string(); |
| 104 } | 107 } |
| 105 | 108 |
| 106 std::string encrypted_token( | 109 std::string encrypted_token( |
| 107 reinterpret_cast<char*>(encrypted_token_bytes.data()), | 110 reinterpret_cast<char*>(encrypted_token_bytes.data()), |
| 108 encrypted_token_bytes.size()); | 111 encrypted_token_bytes.size()); |
| 109 crypto::Encryptor encryptor; | 112 crypto::Encryptor encryptor; |
| 110 if (!encryptor.Init(key, crypto::Encryptor::CTR, std::string())) { | 113 if (!encryptor.Init(key, crypto::Encryptor::CTR, std::string())) { |
| 111 LOG(WARNING) << "Failed to initialize Encryptor."; | 114 LOG(WARNING) << "Failed to initialize Encryptor."; |
| 112 return std::string(); | 115 return std::string(); |
| 113 } | 116 } |
| 114 | 117 |
| 115 std::string nonce = salt.substr(0, kNonceSize); | 118 std::string nonce = salt.substr(0, kNonceSize); |
| 116 std::string token; | 119 std::string token; |
| 117 CHECK(encryptor.SetCounter(nonce)); | 120 CHECK(encryptor.SetCounter(nonce)); |
| 118 if (!encryptor.Decrypt(encrypted_token, &token)) { | 121 if (!encryptor.Decrypt(encrypted_token, &token)) { |
| 119 LOG(WARNING) << "Failed to decrypt token."; | 122 LOG(WARNING) << "Failed to decrypt token."; |
| 120 return std::string(); | 123 return std::string(); |
| 121 } | 124 } |
| 122 return token; | 125 return token; |
| 123 } | 126 } |
| 124 | 127 |
| 125 } // namespace chromeos | 128 } // namespace chromeos |
| OLD | NEW |