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