1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
//! [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;
}
}