Home | History | Annotate | Download | only in dbus
      1 // Copyright 2013 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.
      4 
      5 #ifndef CHROMEOS_DBUS_CRYPTOHOME_CLIENT_STUB_H_
      6 #define CHROMEOS_DBUS_CRYPTOHOME_CLIENT_STUB_H_
      7 
      8 #include <map>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/weak_ptr.h"
     12 #include "chromeos/dbus/cryptohome_client.h"
     13 
     14 namespace chromeos {
     15 
     16 class CryptohomeClientStubImpl : public CryptohomeClient {
     17  public:
     18   CryptohomeClientStubImpl();
     19   virtual ~CryptohomeClientStubImpl();
     20 
     21   virtual void SetAsyncCallStatusHandlers(
     22       const AsyncCallStatusHandler& handler,
     23       const AsyncCallStatusWithDataHandler& data_handler) OVERRIDE;
     24   virtual void ResetAsyncCallStatusHandlers() OVERRIDE;
     25   virtual void IsMounted(const BoolDBusMethodCallback& callback) OVERRIDE;
     26   virtual bool Unmount(bool* success) OVERRIDE;
     27   virtual void AsyncCheckKey(const std::string& username,
     28                              const std::string& key,
     29                              const AsyncMethodCallback& callback) OVERRIDE;
     30   virtual void AsyncMigrateKey(const std::string& username,
     31                                const std::string& from_key,
     32                                const std::string& to_key,
     33                                const AsyncMethodCallback& callback) OVERRIDE;
     34   virtual void AsyncRemove(const std::string& username,
     35                            const AsyncMethodCallback& callback) OVERRIDE;
     36   virtual bool GetSystemSalt(std::vector<uint8>* salt) OVERRIDE;
     37   virtual void GetSanitizedUsername(
     38       const std::string& username,
     39       const StringDBusMethodCallback& callback) OVERRIDE;
     40   virtual std::string BlockingGetSanitizedUsername(
     41       const std::string& username) OVERRIDE;
     42   virtual void AsyncMount(const std::string& username,
     43                           const std::string& key,
     44                           int flags,
     45                           const AsyncMethodCallback& callback) OVERRIDE;
     46   virtual void AsyncAddKey(const std::string& username,
     47                            const std::string& key,
     48                            const std::string& new_key,
     49                            const AsyncMethodCallback& callback) OVERRIDE;
     50   virtual void AsyncMountGuest(const AsyncMethodCallback& callback) OVERRIDE;
     51   virtual void AsyncMountPublic(const std::string& public_mount_id,
     52                                 int flags,
     53                                 const AsyncMethodCallback& callback) OVERRIDE;
     54   virtual void TpmIsReady(const BoolDBusMethodCallback& callback) OVERRIDE;
     55   virtual void TpmIsEnabled(const BoolDBusMethodCallback& callback) OVERRIDE;
     56   virtual bool CallTpmIsEnabledAndBlock(bool* enabled) OVERRIDE;
     57   virtual void TpmGetPassword(
     58       const StringDBusMethodCallback& callback) OVERRIDE;
     59   virtual void TpmIsOwned(const BoolDBusMethodCallback& callback) OVERRIDE;
     60   virtual bool CallTpmIsOwnedAndBlock(bool* owned) OVERRIDE;
     61   virtual void TpmIsBeingOwned(const BoolDBusMethodCallback& callback) OVERRIDE;
     62   virtual bool CallTpmIsBeingOwnedAndBlock(bool* owning) OVERRIDE;
     63   virtual void TpmCanAttemptOwnership(
     64       const VoidDBusMethodCallback& callback) OVERRIDE;
     65   virtual void TpmClearStoredPassword(
     66       const VoidDBusMethodCallback& callback) OVERRIDE;
     67   virtual bool CallTpmClearStoredPasswordAndBlock() OVERRIDE;
     68   virtual void Pkcs11IsTpmTokenReady(
     69       const BoolDBusMethodCallback& callback) OVERRIDE;
     70   virtual void Pkcs11GetTpmTokenInfo(
     71       const Pkcs11GetTpmTokenInfoCallback& callback) OVERRIDE;
     72   virtual bool InstallAttributesGet(const std::string& name,
     73                                     std::vector<uint8>* value,
     74                                     bool* successful) OVERRIDE;
     75   virtual bool InstallAttributesSet(const std::string& name,
     76                                     const std::vector<uint8>& value,
     77                                     bool* successful) OVERRIDE;
     78   virtual bool InstallAttributesFinalize(bool* successful) OVERRIDE;
     79   virtual void InstallAttributesIsReady(
     80       const BoolDBusMethodCallback& callback) OVERRIDE;
     81   virtual bool InstallAttributesIsInvalid(bool* is_invalid) OVERRIDE;
     82   virtual bool InstallAttributesIsFirstInstall(bool* is_first_install) OVERRIDE;
     83   virtual void TpmAttestationIsPrepared(
     84       const BoolDBusMethodCallback& callback) OVERRIDE;
     85   virtual void TpmAttestationIsEnrolled(
     86       const BoolDBusMethodCallback& callback) OVERRIDE;
     87   virtual void AsyncTpmAttestationCreateEnrollRequest(
     88       const AsyncMethodCallback& callback) OVERRIDE;
     89   virtual void AsyncTpmAttestationEnroll(
     90       const std::string& pca_response,
     91       const AsyncMethodCallback& callback) OVERRIDE;
     92   virtual void AsyncTpmAttestationCreateCertRequest(
     93       int options,
     94       const AsyncMethodCallback& callback) OVERRIDE;
     95   virtual void AsyncTpmAttestationFinishCertRequest(
     96       const std::string& pca_response,
     97       attestation::AttestationKeyType key_type,
     98       const std::string& key_name,
     99       const AsyncMethodCallback& callback) OVERRIDE;
    100   virtual void TpmAttestationDoesKeyExist(
    101       attestation::AttestationKeyType key_type,
    102       const std::string& key_name,
    103       const BoolDBusMethodCallback& callback) OVERRIDE;
    104   virtual void TpmAttestationGetCertificate(
    105       attestation::AttestationKeyType key_type,
    106       const std::string& key_name,
    107       const DataMethodCallback& callback) OVERRIDE;
    108   virtual void TpmAttestationGetPublicKey(
    109       attestation::AttestationKeyType key_type,
    110       const std::string& key_name,
    111       const DataMethodCallback& callback) OVERRIDE;
    112   virtual void TpmAttestationRegisterKey(
    113       attestation::AttestationKeyType key_type,
    114       const std::string& key_name,
    115       const AsyncMethodCallback& callback) OVERRIDE;
    116   virtual void TpmAttestationSignEnterpriseChallenge(
    117       attestation::AttestationKeyType key_type,
    118       const std::string& key_name,
    119       const std::string& domain,
    120       const std::string& device_id,
    121       attestation::AttestationChallengeOptions options,
    122       const std::string& challenge,
    123       const AsyncMethodCallback& callback) OVERRIDE;
    124   virtual void TpmAttestationSignSimpleChallenge(
    125       attestation::AttestationKeyType key_type,
    126       const std::string& key_name,
    127       const std::string& challenge,
    128       const AsyncMethodCallback& callback) OVERRIDE;
    129   virtual void TpmAttestationGetKeyPayload(
    130       attestation::AttestationKeyType key_type,
    131       const std::string& key_name,
    132       const DataMethodCallback& callback) OVERRIDE;
    133   virtual void TpmAttestationSetKeyPayload(
    134       attestation::AttestationKeyType key_type,
    135       const std::string& key_name,
    136       const std::string& payload,
    137       const BoolDBusMethodCallback& callback) OVERRIDE;
    138 
    139  private:
    140   // Posts tasks which return fake results to the UI thread.
    141   void ReturnAsyncMethodResult(const AsyncMethodCallback& callback,
    142                                bool returns_data);
    143 
    144   // This method is used to implement ReturnAsyncMethodResult.
    145   void ReturnAsyncMethodResultInternal(const AsyncMethodCallback& callback,
    146                                        bool returns_data);
    147 
    148   int async_call_id_;
    149   AsyncCallStatusHandler async_call_status_handler_;
    150   AsyncCallStatusWithDataHandler async_call_status_data_handler_;
    151   int tpm_is_ready_counter_;
    152 
    153   // A stub store for InstallAttributes, mapping an attribute name to the
    154   // associated data blob. Used to implement InstallAttributesSet and -Get.
    155   std::map<std::string, std::vector<uint8> > install_attrs_;
    156   bool locked_;
    157   base::WeakPtrFactory<CryptohomeClientStubImpl> weak_ptr_factory_;
    158 
    159   DISALLOW_COPY_AND_ASSIGN(CryptohomeClientStubImpl);
    160 };
    161 
    162 }  // namespace chromeos
    163 
    164 #endif  // CHROMEOS_DBUS_CRYPTOHOME_CLIENT_STUB_H_
    165