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 "components/os_crypt/os_crypt.h" | 5 #include "components/os_crypt/os_crypt.h" |
6 | 6 |
7 #include <CommonCrypto/CommonCryptor.h> // for kCCBlockSizeAES128 | 7 #include <CommonCrypto/CommonCryptor.h> // for kCCBlockSizeAES128 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // returning. | 70 // returning. |
71 key_is_cached = true; | 71 key_is_cached = true; |
72 | 72 |
73 if (password.empty()) | 73 if (password.empty()) |
74 return cached_encryption_key; | 74 return cached_encryption_key; |
75 | 75 |
76 std::string salt(kSalt); | 76 std::string salt(kSalt); |
77 | 77 |
78 // Create an encryption key from our password and salt. The key is | 78 // Create an encryption key from our password and salt. The key is |
79 // intentionally leaked. | 79 // intentionally leaked. |
80 cached_encryption_key = | 80 cached_encryption_key = crypto::SymmetricKey::DeriveKeyFromPassword( |
81 crypto::SymmetricKey::DeriveKeyFromPassword(crypto::SymmetricKey::AES, | 81 crypto::SymmetricKey::AES, password, salt, |
82 password, | 82 kEncryptionIterations, kDerivedKeySizeInBits) |
83 salt, | 83 .release(); |
84 kEncryptionIterations, | |
85 kDerivedKeySizeInBits); | |
86 ANNOTATE_LEAKING_OBJECT_PTR(cached_encryption_key); | 84 ANNOTATE_LEAKING_OBJECT_PTR(cached_encryption_key); |
87 DCHECK(cached_encryption_key); | 85 DCHECK(cached_encryption_key); |
88 return cached_encryption_key; | 86 return cached_encryption_key; |
89 } | 87 } |
90 | 88 |
91 } // namespace | 89 } // namespace |
92 | 90 |
93 bool OSCrypt::EncryptString16(const base::string16& plaintext, | 91 bool OSCrypt::EncryptString16(const base::string16& plaintext, |
94 std::string* ciphertext) { | 92 std::string* ciphertext) { |
95 return EncryptString(base::UTF16ToUTF8(plaintext), ciphertext); | 93 return EncryptString(base::UTF16ToUTF8(plaintext), ciphertext); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 if (!encryptor.Decrypt(raw_ciphertext, plaintext)) | 160 if (!encryptor.Decrypt(raw_ciphertext, plaintext)) |
163 return false; | 161 return false; |
164 | 162 |
165 return true; | 163 return true; |
166 } | 164 } |
167 | 165 |
168 void OSCrypt::UseMockKeychain(bool use_mock) { | 166 void OSCrypt::UseMockKeychain(bool use_mock) { |
169 use_mock_keychain = use_mock; | 167 use_mock_keychain = use_mock; |
170 } | 168 } |
171 | 169 |
OLD | NEW |