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