in akd/src/ecvrf/ecvrf_impl.rs [302:322]
fn try_from(bytes: &[u8]) -> std::result::Result<Proof, VrfError> {
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(VrfError::PublicKey(
"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),
})
}