| Index: chrome/browser/chromeos/login/auth/key.cc
|
| diff --git a/chrome/browser/chromeos/login/auth/key.cc b/chrome/browser/chromeos/login/auth/key.cc
|
| deleted file mode 100644
|
| index ab6abd86500843945a3494a6fb07542188f0f651..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/login/auth/key.cc
|
| +++ /dev/null
|
| @@ -1,117 +0,0 @@
|
| -// Copyright 2014 The Chromium 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 "chrome/browser/chromeos/login/auth/key.h"
|
| -
|
| -#include "base/base64.h"
|
| -#include "base/logging.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "crypto/sha2.h"
|
| -#include "crypto/symmetric_key.h"
|
| -
|
| -namespace chromeos {
|
| -
|
| -namespace {
|
| -
|
| -// Parameters for the transformation to KEY_TYPE_SALTED_AES256_1234.
|
| -const int kNumIterations = 1234;
|
| -const int kKeySizeInBits = 256;
|
| -
|
| -} // namespace
|
| -
|
| -Key::Key() : key_type_(KEY_TYPE_PASSWORD_PLAIN) {
|
| -}
|
| -
|
| -Key::Key(const Key& other) : key_type_(other.key_type_),
|
| - salt_(other.salt_),
|
| - secret_(other.secret_),
|
| - label_(other.label_) {
|
| -}
|
| -
|
| -Key::Key(const std::string& plain_text_password)
|
| - : key_type_(KEY_TYPE_PASSWORD_PLAIN),
|
| - secret_(plain_text_password) {
|
| -}
|
| -
|
| -Key::Key(KeyType key_type, const std::string& salt, const std::string& secret)
|
| - : key_type_(key_type),
|
| - salt_(salt),
|
| - secret_(secret) {
|
| -
|
| -}
|
| -
|
| -Key::~Key() {
|
| -}
|
| -
|
| -bool Key::operator==(const Key& other) const {
|
| - return other.key_type_ == key_type_ &&
|
| - other.salt_ == salt_ &&
|
| - other.secret_ == secret_ &&
|
| - other.label_ == label_;
|
| -}
|
| -
|
| -Key::KeyType Key::GetKeyType() const {
|
| - return key_type_;
|
| -}
|
| -
|
| -const std::string& Key::GetSecret() const {
|
| - return secret_;
|
| -}
|
| -
|
| -const std::string& Key::GetLabel() const {
|
| - return label_;
|
| -}
|
| -
|
| -void Key::SetLabel(const std::string& label) {
|
| - label_ = label;
|
| -}
|
| -
|
| -void Key::ClearSecret() {
|
| - secret_.clear();
|
| -}
|
| -
|
| -void Key::Transform(KeyType target_key_type, const std::string& salt) {
|
| - if (key_type_ != KEY_TYPE_PASSWORD_PLAIN) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| - switch (target_key_type) {
|
| - case KEY_TYPE_SALTED_SHA256_TOP_HALF: {
|
| - // TODO(stevenjb/nkostylev): Handle empty salt gracefully.
|
| - CHECK(!salt.empty());
|
| - char hash[crypto::kSHA256Length];
|
| - crypto::SHA256HashString(salt + secret_, &hash, sizeof(hash));
|
| -
|
| - // Keep only the first half of the hash for 'weak' hashing so that the
|
| - // plain text secret cannot be reconstructed even if the hashing is
|
| - // reversed.
|
| - secret_ = StringToLowerASCII(base::HexEncode(
|
| - reinterpret_cast<const void*>(hash), sizeof(hash) / 2));
|
| - break;
|
| - } case KEY_TYPE_SALTED_PBKDF2_AES256_1234: {
|
| - scoped_ptr<crypto::SymmetricKey> key(
|
| - crypto::SymmetricKey::DeriveKeyFromPassword(crypto::SymmetricKey::AES,
|
| - secret_,
|
| - salt,
|
| - kNumIterations,
|
| - kKeySizeInBits));
|
| - std::string raw_secret;
|
| - key->GetRawKey(&raw_secret);
|
| - base::Base64Encode(raw_secret, &secret_);
|
| - break;
|
| - } default:
|
| - // The resulting key will be sent to cryptohomed. It should always be
|
| - // hashed. If hashing fails, crash instead of sending a plain-text key.
|
| - CHECK(false);
|
| - return;
|
| - }
|
| -
|
| - key_type_ = target_key_type;
|
| - salt_ = salt;
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|