+pub(super) fn next_hop_packet_pubkey<T: secp256k1::Signing + secp256k1::Verification>(secp_ctx: &Secp256k1<T>, mut packet_pubkey: PublicKey, packet_shared_secret: &[u8; 32]) -> Result<PublicKey, secp256k1::Error> {
+ let blinding_factor = {
+ let mut sha = Sha256::engine();
+ sha.input(&packet_pubkey.serialize()[..]);
+ sha.input(packet_shared_secret);
+ Sha256::from_engine(sha).into_inner()
+ };
+
+ packet_pubkey.mul_assign(secp_ctx, &blinding_factor[..]).map(|_| packet_pubkey)
+}
+