generate_mlkem_keypair

Function generate_mlkem_keypair 

Source
pub fn generate_mlkem_keypair(
    key_ml_kem: KeyMlKem,
    control_flag: ControlFlag,
) -> XResult<KeyMaterial>
Examples found in repository?
examples/generate_mlkem_keypair.rs (line 11)
5fn main() {
6    println!(
7        "Secure Enclave supported: {}",
8        is_secure_enclave_supported().unwrap()
9    );
10
11    let mlkem_key_material = generate_mlkem_keypair(KeyMlKem::MlKem768, ControlFlag::None).unwrap();
12    print_key_material("Signing key [none]", &mlkem_key_material);
13
14    let recover_mlkem_key_material = recover_mlkem_keypair(
15        KeyMlKem::MlKem768,
16        &mlkem_key_material.private_key_representation,
17    )
18    .unwrap();
19    print_key_material("Signing key [none]", &recover_mlkem_key_material);
20
21    // ---------------------------------------------------------------------------------------------
22
23    let mlkem_key_material =
24        generate_mlkem_keypair(KeyMlKem::MlKem1024, ControlFlag::None).unwrap();
25    print_key_material("Signing key [none]", &mlkem_key_material);
26
27    // ---------------------------------------------------------------------------------------------
28    // ONLY runs on MacBook M4 Air
29    use base64::engine::general_purpose::STANDARD;
30    let shared_secret = private_key_mlkem_ecdh(KeyMlKem::MlKem768,
31                           &STANDARD.decode("BIIFzTGCBckwggWBDAJyazGCBXkwCwwDYmlkBASQp+B0MIIEq\
32                           QwDcHViBIIEoLAzEZGpLJFDvbpTLNNAaDxwD0R2MwqEhQmLLJUmd/SsrJ5TG2h3J/A8Kl7oLl\
33                           DHOKa5YwtQIX+ltW/ULhPclqZphxW6pNRGzmcDSqNMHbl7B88xo+4oT6gBCg2Ceb5xlCwheKf\
34                           KbytBwcnhw5boprCsMHQjzIXkGUvpZpQhM/snu252GgecgyxaV4cHUSzWkaKhZAHAgljsJ+gI\
35                           ao7pVvpGzOPRzQiTzpKTXik7O7jEeeNkiQAnuYCKVWklGLgEMi+Lplv2yL8DOX0Zv1kEJDK4v\
36                           x9igAcgJKkYDFzpZxXbmmFhTb3Cvdhier2jxDhswM66EG8ZRUIRQBPaJ5hYmapkKXUjKHi2u4\
37                           D3sMM4zwPqHyTrxgkDu83IBfkMhhvxl1oYx86pBx9jLVoHIOArKFvToBWUroVBEaVBC9Acxe9\
38                           gHwlHXJ/4TtdcdVSaFWmRvr1bEHJStP0kG10AscqEoL5HLa74KkrcvQ03ErV1VRg3O4AsfKj1\
39                           ZX7ArYzWB8EmY5NlgFRbK0KlhfAFVTGEgcaHbAUMWbYzhzECOvgRWwdhHe0VMboGqwSgoJDJw\
40                           K2YVrkwKy3Isya0I55SOR/Esm4oWJPMGYglvL/ENQGBxw2FiOoEXyiCpZVbO66XLCwVr3yjEh\
41                           y8jkRxXnUCHhLjO26MmvGmph7oWB2AE1YEzRz7OjMQu7E6dobMVvi3xPA8bZOYr10BRc73rD8\
42                           lGHeYbKLqWIA2fMqgnlyBCHIQWakTjcZiCcGmSpcyLuHbrjblIRCZRk9YDVQBZuNMFAeiApC6\
43                           i8/auenLZeuLKYJXbZOhw9l0vwqarb/Tiid2WG6FZ6nLPsEVw+2Mh6E6bV46twgDdDLYEWTSE\
44                           vOrMBGcRpz3s/pSkdKkgtUQbagKlY8rnwzmp7l0yHxDBd5boO8mkrCYRSz5fDoLcV1XatZzij\
45                           2KojFzfYcbJBHlbBYnE3nVHDLZQwbRziUps9bACXfHL2sggQnaLNmxAS8Fs0Cqfof1D1z3FNr\
46                           ndTthTVBEveoYdcdYrEwjpXWjq2yIUcWsynqJo7tGApJjVN7jpeprz1bTQdiKicmgxYwow5w4\
47                           UiyjpSpnwhn2n5MgA6lran9FYpFrdZtWUqpalAiwxacjF2bVqYwjrXDEaslqcKATRP+oxcPpi\
48                           wUAcl6ZZ1VpBOKlY8bJSBOYXlD6Nx/IY8kIcTLVejpKuLVBoCAhvWHqYPpUfxjLh+BLfDCBR/\
49                           GEUaIJuyoJEmmkeAIkQy7crDlEce6sjJpYJ6qhelQUSnZgc6YDIAnyXWBYPkn5i+O3Y9NUyyI\
50                           lLsmiZ9eXAqo3ADx8NNDsbj/6R6eLV41DTM28gqnGBvtZnHiVg2CkV710xzyXIslAeNfzxyZS\
51                           NFQjsancjTjawd7bpbyhOjuFCXFnvJnEzFYJoSZTPGTHxvhrgm27RB0rL1HCEA6KvrXLP0RFn\
52                           kB7cqfhB+hZnCm6Rx8JVPQWivdiJ2Xorc9ByT0JxsojdA/7UU3Dt42ZuhVWppDjExrLJ+xyVG\
53                           U5j/cHKKklpQCYKM5SScSB96VALTKgwxDqwyal8uuXyRPsNk0DAkIIdjRcMAgMA3JrbwIBADA\
54                           HDAJrdAIBDTBWDAJ3awRQ9UfdL/b9xH9f6z6gO1AXEG8yrAqNqaczy1T/3b005vIxQwNQ3c5h\
55                           VxGzFZ/vXVCA/IaOgVL29oW/o3K+y2bVcYif3Pkzhu8x+hErFeDblyowBwwCYmMCAQkwBwwCa\
56                           3YCAQIwFwwDa2lkBBCA0Qs1yUNJH5GKKpvCJ0JbMCcMA3JrbQQgO36DoueqBsQMk3MdB8T1Tm\
57                           YjaGMjTOVe58lu2Uo8xlQwQgwCZWQxPDA6DANhY2wxMzAIDANvY2sBAQEwCQwEb2RlbAEBATA\
58                           JDARvc2duAQEBMAcMAm9hAQEBMAgMA29rZAEBAQ==").unwrap(),
59                           &STANDARD.decode("h47sMRkMBJ4XCF932REsgU6245kAZtLl8OlrtxCKpTxf+g8td\
60                           VHrXhVGAQyA2cP/YdpI3KdhCnn3xMqAR73Iu6nc4GoEvDHxvI/E3CvBEI+/gfqACWb0VTrX6H\
61                           ks4tRZ3vDhzkTCwdjXV7udO62eN4JHLUoH3ml5O9rPLZHwP1dEkXIwfWuXY2fjLxpcTuoWhw3\
62                           3K3mS4NeGSm1WAJdFojVo8sRiH5NuOI/GXFHY+Hm1CKRou/kQCS+1wN+5qXDDYAf1sVIR7ZdF\
63                           bSnaWPijzkvVJEHR1cQmerpHThcd+zjrYGBCo6Rd4LlN8cfTuad+d88yTcUwLZfMhL6akTZTu\
64                           AVQllFMhdxIQQnCsK2iI8/MRCG0tJJm91YKz2voUDOZcQBetULSFzVnsi8fIJ8hhP1yzHJkyU\
65                           bKiYiJW5uZBJ1ye9SEYvWBTWQdpmEMKuM55vUuZq9tGYkja2oT9rkhrI1bGMy5RN0mauOsHCM\
66                           8OvCe8TeggZeAD8INv9sCkBgm9Hk4gjUkIV6e//pshbwSXasgdzB02teP/K5OfmELP+IK75Pz\
67                           sgPSPWuTfMWlCK4xjE9seCZjqCB8lQ0/gQE6TnKGPPYEjFHP6q89HgDUMDqa4h8YXV2XHWLro\
68                           LMXrWG/lLkPIPI1vJT3+Hij4eON/3IMK713nEUKzNVwaANtIqP+Mp3zIRORSOFI+KRjdfdGBS\
69                           3ciBtVr7rIc+38/uQQKXLl1ELLmc6r569UXgelKy+H4W8koFdMOrJXb1YH7uM+zCV2hfZ8D+R\
70                           SOETd9NZEjGOHVCLDALbuxwgbwRgBNBDIoS7eIRFo3lIQO0kRlsS5n47UeyqeL2/vKtblGP/p\
71                           t6OUprgM21JISHLvc9Ezl3UQhl9QHjCdHEiL1W3vzncxluu9Z39bwf7JX9vLafImrPoWKPAu/\
72                           V89mf6cX6ly/stGzzp3tCxuGUopsNWJ760rXzPkxHqSNOPU9tWxKD94bNJgtztGGMBp7/HGFI\
73                           2ftdZE5JU/a+e8R2VLTXAeG6ByhrTmD008KPiKK72QBRYuwC7MvxHLyIn2BhnoHO6KDcUhpLJ\
74                           sPPWc/odxWLU72XAg2MD3yZnsQodYphVbeQiFH/qUscTTcjSYp0xCeiPoXDwtqyCySKkRHvr6\
75                           xtbECTTS6M0Q+Ahf7A2vZrEAUKAktPmX15F0ctl13/XMH1766uf8ptSns0vTeO6RaS5Fv1SOh\
76                           Yc7WXoPhink1SE4VQe47bvWskJ3QJZC7AsEe8dZjoifFCNwK1VYBhvzQXs3ZYcVsjtArjXJOd\
77                           TJiVKHhz2fcoMjtGIa2UtNRt/YVhfBvwa1LQJWko8wV5YNUuRxx+YNcTEs+rjXfpY1l+9laNs\
78                           vTCYrPODXud9wFKR8R7zAA1+thSyUvLgdwTylgBp38G74tNBxk70Fh8E9C09D809Clipj7dib\
79                           vpz1ANsgnqx9yv0=").unwrap()
80    ).unwrap();
81    println!("Shared secret: {}", hex::encode(&shared_secret));
82}