blob: 1a8aaad81accaf76612e019f35e566f77d2a086e [file] [log] [blame]
// Copyright (c) 2012 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.
#include "cryptohome/username_passkey.h"
#include <brillo/secure_blob.h>
#include "cryptohome/crypto.h"
#include "cryptohome/obfuscated_username.h"
namespace cryptohome {
using brillo::SecureBlob;
UsernamePasskey::UsernamePasskey(const char *username,
const brillo::SecureBlob& passkey)
: username_(username, strlen(username)),
passkey_() {
passkey_.assign(passkey.begin(), passkey.end());
}
UsernamePasskey::~UsernamePasskey() {
}
void UsernamePasskey::Assign(const UsernamePasskey& rhs) {
username_.assign(rhs.username());
key_data_ = rhs.key_data();
SecureBlob passkey;
rhs.GetPasskey(&passkey);
passkey_.swap(passkey);
challenge_credentials_keyset_info_ = rhs.challenge_credentials_keyset_info_;
}
void UsernamePasskey::set_key_data(const KeyData& data) {
key_data_ = data;
}
void UsernamePasskey::set_challenge_credentials_keyset_info(
const SerializedVaultKeyset_SignatureChallengeInfo&
challenge_credentials_keyset_info) {
challenge_credentials_keyset_info_ = challenge_credentials_keyset_info;
}
const KeyData& UsernamePasskey::key_data() const {
return key_data_;
}
const SerializedVaultKeyset_SignatureChallengeInfo&
UsernamePasskey::challenge_credentials_keyset_info() const {
return challenge_credentials_keyset_info_;
}
std::string UsernamePasskey::username() const {
return username_;
}
std::string UsernamePasskey::GetObfuscatedUsername(
const brillo::SecureBlob &system_salt) const {
return BuildObfuscatedUsername(username_, system_salt);
}
void UsernamePasskey::GetPasskey(SecureBlob* passkey) const {
*passkey = passkey_;
}
} // namespace cryptohome