snarkvm_algorithms/snark/varuna/data_structures/
certificate.rs1use crate::polycommit::sonic_pc;
17use snarkvm_curves::PairingEngine;
18use snarkvm_utilities::{FromBytes, ToBytes, 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).map_err(|_| error("Failed to serialize certificate"))
38 }
39}
40
41impl<E: PairingEngine> FromBytes for Certificate<E> {
42 fn read_le<R: Read>(mut r: R) -> io::Result<Self> {
43 Self::deserialize_compressed(&mut r).map_err(|_| error("Failed to deserialize certificate"))
44 }
45}