pub fn derive_shared_key( private_key: &ReusableSecret, public_key_pem: &str, ) -> Result<[u8; 32], String>