| // Copyright (c) 2012 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 "components/ownership/mock_owner_key_util.h" | 
 |  | 
 | #include <pk11pub.h> | 
 |  | 
 | #include "base/files/file_path.h" | 
 | #include "base/logging.h" | 
 | #include "crypto/nss_key_util.h" | 
 | #include "crypto/nss_util.h" | 
 | #include "crypto/rsa_private_key.h" | 
 |  | 
 | namespace ownership { | 
 |  | 
 | MockOwnerKeyUtil::MockOwnerKeyUtil() { | 
 | } | 
 |  | 
 | MockOwnerKeyUtil::~MockOwnerKeyUtil() { | 
 | } | 
 |  | 
 | bool MockOwnerKeyUtil::ImportPublicKey(std::vector<uint8_t>* output) { | 
 |   *output = public_key_; | 
 |   return !public_key_.empty(); | 
 | } | 
 |  | 
 | crypto::ScopedSECKEYPrivateKey MockOwnerKeyUtil::FindPrivateKeyInSlot( | 
 |     const std::vector<uint8_t>& key, | 
 |     PK11SlotInfo* slot) { | 
 |   if (!private_key_) | 
 |     return nullptr; | 
 |   return crypto::ScopedSECKEYPrivateKey( | 
 |       SECKEY_CopyPrivateKey(private_key_.get())); | 
 | } | 
 |  | 
 | bool MockOwnerKeyUtil::IsPublicKeyPresent() { | 
 |   return !public_key_.empty(); | 
 | } | 
 |  | 
 | void MockOwnerKeyUtil::Clear() { | 
 |   public_key_.clear(); | 
 |   private_key_.reset(); | 
 | } | 
 |  | 
 | void MockOwnerKeyUtil::SetPublicKey(const std::vector<uint8_t>& key) { | 
 |   public_key_ = key; | 
 | } | 
 |  | 
 | void MockOwnerKeyUtil::SetPublicKeyFromPrivateKey( | 
 |     const crypto::RSAPrivateKey& key) { | 
 |   CHECK(key.ExportPublicKey(&public_key_)); | 
 | } | 
 |  | 
 | void MockOwnerKeyUtil::SetPrivateKey( | 
 |     std::unique_ptr<crypto::RSAPrivateKey> key) { | 
 |   crypto::EnsureNSSInit(); | 
 |  | 
 |   CHECK(key->ExportPublicKey(&public_key_)); | 
 |  | 
 |   std::vector<uint8_t> key_exported; | 
 |   CHECK(key->ExportPrivateKey(&key_exported)); | 
 |  | 
 |   crypto::ScopedPK11Slot slot(PK11_GetInternalSlot()); | 
 |   CHECK(slot); | 
 |   private_key_ = crypto::ImportNSSKeyFromPrivateKeyInfo( | 
 |       slot.get(), key_exported, false /* not permanent */); | 
 |   CHECK(private_key_); | 
 | } | 
 |  | 
 | }  // namespace ownership |