| // Copyright 2022 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIBHWSEC_FACTORY_FACTORY_H_ |
| #define LIBHWSEC_FACTORY_FACTORY_H_ |
| |
| #include <memory> |
| #include <utility> |
| |
| #include "libhwsec/frontend/arc_attestation/frontend.h" |
| #include "libhwsec/frontend/attestation/frontend.h" |
| #include "libhwsec/frontend/bootlockbox/frontend.h" |
| #include "libhwsec/frontend/chaps/frontend.h" |
| #include "libhwsec/frontend/client/frontend.h" |
| #include "libhwsec/frontend/cryptohome/frontend.h" |
| #include "libhwsec/frontend/local_data_migration/frontend.h" |
| #include "libhwsec/frontend/oobe_config/frontend.h" |
| #include "libhwsec/frontend/optee-plugin/frontend.h" |
| #include "libhwsec/frontend/pinweaver_manager/frontend.h" |
| #include "libhwsec/frontend/recovery_crypto/frontend.h" |
| #include "libhwsec/frontend/u2fd/frontend.h" |
| #include "libhwsec/frontend/u2fd/vendor_frontend.h" |
| #include "libhwsec/hwsec_export.h" |
| |
| // Factory holds the ownership of the middleware and backend. |
| // And generates different frontend for different usage. |
| |
| namespace hwsec { |
| |
| class Factory { |
| public: |
| virtual ~Factory() = default; |
| virtual std::unique_ptr<const CryptohomeFrontend> GetCryptohomeFrontend() = 0; |
| virtual std::unique_ptr<const PinWeaverManagerFrontend> |
| GetPinWeaverManagerFrontend() = 0; |
| virtual std::unique_ptr<const RecoveryCryptoFrontend> |
| GetRecoveryCryptoFrontend() = 0; |
| virtual std::unique_ptr<const ClientFrontend> GetClientFrontend() = 0; |
| virtual std::unique_ptr<const ChapsFrontend> GetChapsFrontend() = 0; |
| virtual std::unique_ptr<const U2fFrontend> GetU2fFrontend() = 0; |
| virtual std::unique_ptr<const U2fVendorFrontend> GetU2fVendorFrontend() = 0; |
| virtual std::unique_ptr<const OpteePluginFrontend> |
| GetOpteePluginFrontend() = 0; |
| virtual std::unique_ptr<const BootLockboxFrontend> |
| GetBootLockboxFrontend() = 0; |
| virtual std::unique_ptr<const OobeConfigFrontend> GetOobeConfigFrontend() = 0; |
| virtual std::unique_ptr<const LocalDataMigrationFrontend> |
| GetLocalDataMigrationFrontend() = 0; |
| virtual std::unique_ptr<const AttestationFrontend> |
| GetAttestationFrontend() = 0; |
| virtual std::unique_ptr<const ArcAttestationFrontend> |
| GetArcAttestationFrontend() = 0; |
| }; |
| |
| } // namespace hwsec |
| |
| #endif // LIBHWSEC_FACTORY_FACTORY_H_ |