snarkvm_algorithms/snark/varuna/data_structures/
certificate.rs1use crate::polycommit::sonic_pc;
17use snarkvm_curves::PairingEngine;
18use snarkvm_utilities::{FromBytes, ToBytes, into_io_error, serialize::*};
19use std::io::{self, Read, Write};
20
21#[derive(Clone, Debug, PartialEq, Eq, CanonicalSerialize, CanonicalDeserialize)]
23pub struct Certificate<E: PairingEngine> {
24 pub pc_proof: sonic_pc::BatchLCProof<E>,
26}
27
28impl<E: PairingEngine> Certificate<E> {
29 pub fn new(pc_proof: sonic_pc::BatchLCProof<E>) -> Self {
31 Self { pc_proof }
32 }
33}
34
35impl<E: PairingEngine> ToBytes for Certificate<E> {
36 fn write_le<W: Write>(&self, mut w: W) -> io::Result<()> {
37 Self::serialize_compressed(self, &mut w)
38 .map_err(|err| into_io_error(anyhow::Error::from(err).context("Failed to serialize certificate")))
39 }
40}
41
42impl<E: PairingEngine> FromBytes for Certificate<E> {
43 fn read_le<R: Read>(mut r: R) -> io::Result<Self> {
44 Self::deserialize_compressed(&mut r)
45 .map_err(|err| into_io_error(anyhow::Error::from(err).context("Failed to deserialize certificate")))
46 }
47}