pub fn raw_key_agreement(
    alg: RawKeyAgreement,
    key_id: Id,
    peer_key: &[u8],
    output: &mut [u8]
) -> Result<usize>
Expand description

Perform a key agreement and return the raw shared secret.

Example

use psa_crypto::operations::{key_agreement, key_management};
use psa_crypto::types::key::{Attributes, Type, Lifetime, Policy, UsageFlags, EccFamily};
use psa_crypto::types::algorithm::{KeyAgreement, RawKeyAgreement};



let alg = RawKeyAgreement::Ecdh;

psa_crypto::init().unwrap();
let my_key = key_management::import(attributes, None, &OUR_KEY_DATA).unwrap();
let mut output = vec![0; attributes.raw_key_agreement_output_size(alg).unwrap()];
let size = key_agreement::raw_key_agreement(alg, my_key, &PEER_PUBLIC_KEY, &mut output).unwrap();
output.resize(size, 0);