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
use ockam_vault_core::{
AsymmetricVault, SecretAttributes, SecretPersistence, SecretType, SecretVault,
CURVE25519_SECRET_LENGTH,
};
pub fn ec_diffie_hellman_curve25519(vault: &mut (impl AsymmetricVault + SecretVault)) {
let attributes = SecretAttributes::new(
SecretType::Curve25519,
SecretPersistence::Ephemeral,
CURVE25519_SECRET_LENGTH,
);
let sk_ctx_1 = vault.secret_generate(attributes).unwrap();
let sk_ctx_2 = vault.secret_generate(attributes).unwrap();
let pk_1 = vault.secret_public_key_get(&sk_ctx_1).unwrap();
let pk_2 = vault.secret_public_key_get(&sk_ctx_2).unwrap();
let res1 = vault.ec_diffie_hellman(&sk_ctx_1, &pk_2);
assert!(res1.is_ok());
let _ss1 = res1.unwrap();
let res2 = vault.ec_diffie_hellman(&sk_ctx_2, &pk_1);
assert!(res2.is_ok());
let _ss2 = res2.unwrap();
}