#![allow(clippy::uninlined_format_args)] // TODO: Remove this in another PR //! Simple example of building a signed pod and verifying it //! //! Run: `cargo run --release --example signed_pod` use std::collections::HashSet; use pod2::{ backends::plonky2::{primitives::ec::schnorr::SecretKey, signedpod::Signer}, frontend::SignedPodBuilder, middleware::{containers::Set, Params, Value}, }; fn main() -> Result<(), Box> { let params = Params::default(); // Create a schnorr key pair to sign the pod let sk = SecretKey::new_rand(); let pk = sk.public_key(); println!("Public key: {}\n", pk); let signer = Signer(sk); // Build the signed pod let mut builder = SignedPodBuilder::new(¶ms); // The values can be String, i64, bool, Array, Set, Dictionary, ... builder.insert("name", "Alice"); builder.insert("lucky_number", 42); builder.insert("human", true); let friends_set: HashSet = ["Bob", "Charlie", "Dave"] .into_iter() .map(Value::from) .collect(); builder.insert( "friends", Set::new(params.max_merkle_proofs_containers, friends_set)?, ); // Sign the pod and verify it let pod = builder.sign(&signer)?; pod.verify()?; println!("{}", pod); Ok(()) }