Index: src/platform/cryptohome/username_passkey.h |
diff --git a/src/platform/cryptohome/username_passkey.h b/src/platform/cryptohome/username_passkey.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e2dc99f67891babb3ee176dbe1cfdb2556cc0bbd |
--- /dev/null |
+++ b/src/platform/cryptohome/username_passkey.h |
@@ -0,0 +1,60 @@ |
+// Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// UsernamePasskey wraps a username/passkey pair that can be used to |
+// authenticate a user. |
+ |
+#ifndef CRYPTOHOME_USERNAME_PASSKEY_H_ |
+#define CRYPTOHOME_USERNAME_PASSKEY_H_ |
+ |
+#include "cryptohome/credentials.h" |
+ |
+#include <string.h> |
+ |
+#include "base/basictypes.h" |
+ |
+namespace cryptohome { |
+ |
+class UsernamePasskey : public Credentials { |
+ public: |
+ // Constructs UsernamePasskey from username strings and passkeys |
+ UsernamePasskey(const char *username, const int username_length, |
+ const char *passkey, const int passkey_length); |
+ UsernamePasskey(const char *username, const int username_length, |
+ const chromeos::Blob& passkey); |
+ UsernamePasskey(const char *username, const int username_length, |
+ const std::string& passkey); |
+ UsernamePasskey(const UsernamePasskey& rhs); |
+ |
+ ~UsernamePasskey(); |
+ |
+ UsernamePasskey& operator=(const UsernamePasskey& rhs); |
+ |
+ // Constructs UsernamePasskey from a username and password, converting the |
+ // password to a passkey using the given salt |
+ static UsernamePasskey FromUsernamePassword(const char* username, |
+ const char* password, |
+ const chromeos::Blob& salt); |
+ |
+ // Overridden from cryptohome::Credentials |
+ void GetFullUsername(char *name_buffer, int length) const; |
+ std::string GetFullUsername() const; |
+ void GetPartialUsername(char *name_buffer, int length) const; |
+ std::string GetObfuscatedUsername(const chromeos::Blob &system_salt) const; |
+ SecureBlob GetPasskey() const; |
+ |
+ private: |
+ static SecureBlob PasswordToPasskey(const char *password, |
+ const chromeos::Blob& salt); |
+ static void AsciiEncodeToBuffer(const unsigned char* source, |
+ int source_length, char* buffer, |
+ int buffer_length); |
+ |
+ std::string username_; |
+ SecureBlob passkey_; |
+}; |
+ |
+} // namespace cryptohome |
+ |
+#endif // CRYPTOHOME_USERNAME_PASSKEY_H_ |