//! [TCG] (Trusted Computing Group) protocols. //! //! These protocols provide access to the [TPM][tpm] (Trusted Platform Module). //! //! There are two versions of the protocol. The original protocol is in //! the [`v1`] module. It is used with TPM 1.1 and 1.2 devices. The //! newer protocol in the [`v2`] module is generally provided for TPM //! 2.0 devices, although the spec indicates it can be used for older //! TPM versions as well. //! //! [TCG]: https://trustedcomputinggroup.org/ //! [TPM]: https://en.wikipedia.org/wiki/Trusted_Platform_Module pub mod v1; pub mod v2; mod enums; pub use enums::*; use bitflags::bitflags; /// Platform Configuration Register (PCR) index. #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] #[repr(transparent)] pub struct PcrIndex(pub u32); bitflags! { /// Hash algorithms the protocol can provide. /// /// The [`v1`] protocol only supports SHA1. #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] #[repr(transparent)] pub struct HashAlgorithm: u32 { /// SHA-1 hash. const SHA1 = 0x0000_0001; /// SHA-256 hash. const SHA256 = 0x0000_0002; /// SHA-384 hash. const SHA384 = 0x0000_0004; /// SHA-512 hash. const SHA512 = 0x0000_0008; /// SM3-256 hash. const SM3_256 = 0x0000_0010; } }