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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_KEY_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_KEY_H_
12 // Key for user authentication. The class supports hashing of plain text
13 // passwords to generate keys as well as the use of pre-hashed keys.
17 // Plain text password.
18 KEY_TYPE_PASSWORD_PLAIN,
19 // SHA256 of salt + password, first half only, lower-case hex encoded.
20 KEY_TYPE_SALTED_SHA256_TOP_HALF,
21 // PBKDF2 with 256 bit AES and 1234 iterations, base64 encoded.
22 KEY_TYPE_SALTED_PBKDF2_AES256_1234,
26 Key(const Key& other);
27 explicit Key(const std::string& plain_text_password);
28 Key(KeyType key_type, const std::string& salt, const std::string& secret);
31 bool operator==(const Key& other) const;
33 KeyType GetKeyType() const;
34 const std::string& GetSecret() const;
35 const std::string& GetLabel() const;
37 void SetLabel(const std::string& label);
41 void Transform(KeyType target_key_type, const std::string& salt);
50 } // namespace chromeos
52 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_KEY_H_