generate_keypair/
generate_keypair.rs1use base64::engine::general_purpose::STANDARD;
2use base64::Engine;
3use swift_secure_enclave_tool_rs::{
4 generate_keypair, is_secure_enclave_supported, KeyMaterial, KeyPurpose,
5};
6
7fn main() {
8 println!(
9 "Secure Enclave supported: {}",
10 is_secure_enclave_supported().unwrap()
11 );
12
13 let ecdsa_key_material_require_bio = generate_keypair(KeyPurpose::Signing, true).unwrap();
14 print_key_material("Signing key [require bio]", &ecdsa_key_material_require_bio);
15
16 let ecdsa_key_material_no_bio = generate_keypair(KeyPurpose::Signing, true).unwrap();
17 print_key_material("Signing key [no bio]", &ecdsa_key_material_no_bio);
18
19 let ecdsa_key_material_require_bio = generate_keypair(KeyPurpose::KeyAgreement, true).unwrap();
20 print_key_material(
21 "Key agreement key [require bio]",
22 &ecdsa_key_material_require_bio,
23 );
24
25 let ecdsa_key_material_no_bio = generate_keypair(KeyPurpose::KeyAgreement, true).unwrap();
26 print_key_material("Key agreement key [no bio]", &ecdsa_key_material_no_bio);
27}
28
29fn print_key_material(prefix: &str, key_material: &KeyMaterial) {
30 println!("\n{}", prefix);
31 println!(
32 "Public key point:\n{}",
33 hex::encode(&key_material.public_key_point)
34 );
35 println!(
36 "\nPublic key:\n{}",
37 STANDARD.encode(&key_material.public_key_der)
38 );
39 println!(
40 "\nPrivate key representation:\n{}",
41 STANDARD.encode(&key_material.private_key_representation)
42 );
43}