in src/lib.rs [83:116]
fn try_encrypt(
private_key: &str,
public_key: &str,
remote_pub_key: &str,
auth_secret: &str,
salt: &str,
pad_length: usize,
rs: u32,
plaintext: &str,
) -> Result<String> {
let cryptographer = crypto::holder::get_cryptographer();
let private_key = hex::decode(private_key).unwrap();
let public_key = hex::decode(public_key).unwrap();
let ec_key = EcKeyComponents::new(private_key, public_key);
let local_key_pair = cryptographer.import_key_pair(&ec_key)?;
let remote_pub_key = hex::decode(remote_pub_key).unwrap();
let remote_pub_key = cryptographer.import_public_key(&remote_pub_key).unwrap();
let auth_secret = hex::decode(auth_secret).unwrap();
let salt = Some(hex::decode(salt).unwrap());
let plaintext = plaintext.as_bytes();
let params = WebPushParams {
rs,
pad_length,
salt,
};
let ciphertext = aes128gcm::encrypt(
&*local_key_pair,
&*remote_pub_key,
&auth_secret,
plaintext,
params,
)?;
Ok(hex::encode(ciphertext))
}