| // Copyright 2018 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. |
| |
| #ifndef AUTHPOLICY_CRYPTOHOME_CLIENT_H_ |
| #define AUTHPOLICY_CRYPTOHOME_CLIENT_H_ |
| |
| #include <memory> |
| #include <string> |
| #include <utility> |
| |
| #include <cryptohome/proto_bindings/UserDataAuth.pb.h> |
| #include <user_data_auth-client/user_data_auth/dbus-proxies.h> |
| |
| namespace dbus { |
| class ObjectProxy; |
| } |
| |
| namespace brillo { |
| namespace dbus_utils { |
| class DBusObject; |
| } |
| } // namespace brillo |
| |
| namespace authpolicy { |
| |
| // Exposes methods from the Cryptohome daemon. |
| class CryptohomeClient { |
| public: |
| explicit CryptohomeClient(brillo::dbus_utils::DBusObject* dbus_object); |
| CryptohomeClient(const CryptohomeClient&) = delete; |
| CryptohomeClient& operator=(const CryptohomeClient&) = delete; |
| |
| virtual ~CryptohomeClient(); |
| |
| // Exposes Cryptohome's GetSanitizedUsername(). This is a 32-byte lowercase |
| // hex string that is also used as user directory. Returns an empty string on |
| // error. |
| std::string GetSanitizedUsername(const std::string& account_id_key); |
| |
| // Testing method for overriding the dbus proxy. |
| void set_cryptohome_misc_proxy_for_testing( |
| std::unique_ptr<org::chromium::CryptohomeMiscInterfaceProxyInterface> |
| proxy) { |
| cryptohome_misc_proxy_ = std::move(proxy); |
| } |
| |
| private: |
| // DBus proxy for contacting cryptohome. |
| std::unique_ptr<org::chromium::CryptohomeMiscInterfaceProxyInterface> |
| cryptohome_misc_proxy_; |
| }; |
| |
| } // namespace authpolicy |
| |
| #endif // AUTHPOLICY_CRYPTOHOME_CLIENT_H_ |