create_primary/
create_primary.rs1use std::fmt::Write;
5
6use wolftpm::{Device, Hierarchy, KeyAlg};
7
8fn hex(b: &[u8]) -> String {
9 let mut encoded = String::with_capacity(b.len() * 2);
10 for byte in b {
11 write!(encoded, "{byte:02x}").expect("writing to a String cannot fail");
12 }
13 encoded
14}
15
16fn main() -> Result<(), Box<dyn std::error::Error>> {
17 let dev = Device::open()?;
18 println!("wolfTPM initialized");
19
20 let mut r = [0u8; 16];
21 dev.get_random(&mut r)?;
22 println!("GetRandom: {}", hex(&r));
23
24 let ecc = dev.create_primary(Hierarchy::Owner, KeyAlg::EccP256, None)?;
25 println!("ECC SRK handle: 0x{:08x}", ecc.handle());
26
27 let rsa = dev.create_primary(Hierarchy::Owner, KeyAlg::Rsa, None)?;
28 println!("RSA SRK handle: 0x{:08x}", rsa.handle());
29
30 Ok(())
31}