in src/legacy.rs [65:103]
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<AesGcmTestPayload> {
let cryptographer = crate::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 encrypted_block = aesgcm::encrypt(
&*local_key_pair,
&*remote_pub_key,
&auth_secret,
plaintext,
params,
)?;
Ok(AesGcmTestPayload {
dh: hex::encode(encrypted_block.dh),
salt: hex::encode(encrypted_block.salt),
rs: encrypted_block.rs,
ciphertext: hex::encode(encrypted_block.ciphertext),
})
}