| // Copyright 2019 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 BIOD_CRYPTO_INIT_BIO_CRYPTO_INIT_H_ |
| #define BIOD_CRYPTO_INIT_BIO_CRYPTO_INIT_H_ |
| |
| #include <memory> |
| #include <utility> |
| |
| #include <base/files/file_path.h> |
| #include <base/files/scoped_file.h> |
| #include <brillo/secure_blob.h> |
| #include <chromeos/ec/ec_commands.h> |
| #include <libec/ec_command_factory.h> |
| |
| namespace biod { |
| |
| class BioCryptoInit { |
| public: |
| explicit BioCryptoInit( |
| std::unique_ptr<ec::EcCommandFactoryInterface> ec_command_factory) |
| : ec_command_factory_(std::move(ec_command_factory)) {} |
| virtual ~BioCryptoInit() = default; |
| |
| virtual bool DoProgramSeed(const brillo::SecureVector& tpm_seed); |
| virtual bool NukeFile(const base::FilePath& filepath); |
| virtual bool CrosFpTemplateVersionCompatible( |
| const uint32_t firmware_fp_template_format_version, |
| const uint32_t biod_fp_template_format_version); |
| |
| protected: |
| virtual bool InitCrosFp(); |
| virtual base::Optional<uint32_t> GetFirmwareTemplateVersion(); |
| virtual bool WriteSeedToCrosFp(const brillo::SecureVector& seed); |
| virtual base::ScopedFD OpenCrosFpDevice(); |
| virtual bool WaitOnEcBoot(const base::ScopedFD& cros_fp_fd, |
| ec_current_image expected_image); |
| |
| private: |
| std::unique_ptr<ec::EcCommandFactoryInterface> ec_command_factory_; |
| base::ScopedFD cros_fp_fd_; |
| }; |
| |
| } // namespace biod |
| |
| #endif // BIOD_CRYPTO_INIT_BIO_CRYPTO_INIT_H_ |