in akd_client/src/ecvrf.rs [202:223]
fn try_from(bytes: &[u8]) -> Result<Proof, Self::Error> {
let mut c_buf = [0u8; 32];
c_buf[..16].copy_from_slice(&bytes[32..48]);
let mut s_buf = [0u8; 32];
s_buf.copy_from_slice(&bytes[48..]);
let pk_point = match CompressedEdwardsY::from_slice(&bytes[..32]).decompress() {
Some(pt) => pt,
None => {
return Err(VerificationError::build(
Some(VerificationErrorType::Vrf),
Some("Failed to decompress public key into Edwards point".to_string()),
))
}
};
Ok(Proof {
gamma: pk_point,
c: ed25519_Scalar::from_bits(c_buf),
s: ed25519_Scalar::from_bits(s_buf),
})
}