1//! [TCG] (Trusted Computing Group) protocols.
2//!
3//! These protocols provide access to the [TPM][tpm] (Trusted Platform Module).
4//!
5//! There are two versions of the protocol. The original protocol is in
6//! the [`v1`] module. It is used with TPM 1.1 and 1.2 devices. The
7//! newer protocol in the [`v2`] module is generally provided for TPM
8//! 2.0 devices, although the spec indicates it can be used for older
9//! TPM versions as well.
10//!
11//! [TCG]: https://trustedcomputinggroup.org/
12//! [TPM]: https://en.wikipedia.org/wiki/Trusted_Platform_Module
13
14pub mod v1;
15pub mod v2;
16
17mod enums;
18pub use enums::*;
19
20use bitflags::bitflags;
21
22/// Platform Configuration Register (PCR) index.
23#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
24#[repr(transparent)]
25pub struct PcrIndex(pub u32);
26
27bitflags! {
28 /// Hash algorithms the protocol can provide.
29 ///
30 /// The [`v1`] protocol only supports SHA1.
31 #[derive(Default)]
32 #[repr(transparent)]
33 pub struct HashAlgorithm: u32 {
34 /// SHA-1 hash.
35 const SHA1 = 0x0000_0001;
36
37 /// SHA-256 hash.
38 const SHA256 = 0x0000_0002;
39
40 /// SHA-384 hash.
41 const SHA384 = 0x0000_0004;
42
43 /// SHA-512 hash.
44 const SHA512 = 0x0000_0008;
45
46 /// SM3-256 hash.
47 const SM3_256 = 0x0000_0010;
48 }
49}
50