Orchard: add a serde helper for pallas::Base

This commit is contained in:
Deirdre Connolly 2021-03-15 02:19:20 -04:00 committed by Deirdre Connolly
parent 41a41db923
commit d11a4419ac
2 changed files with 18 additions and 3 deletions

View File

@ -1,11 +1,12 @@
use std::io;
use halo2::{arithmetic::FieldExt, pasta::pallas};
use halo2::pasta::pallas;
use crate::{
primitives::redpallas::{self, SpendAuth},
serialization::{
ReadZcashExt, SerializationError, WriteZcashExt, ZcashDeserialize, ZcashSerialize,
serde_helpers, ReadZcashExt, SerializationError, WriteZcashExt, ZcashDeserialize,
ZcashSerialize,
},
};
@ -30,7 +31,8 @@ pub struct Action {
pub nullifier: note::Nullifier,
/// The randomized validating key for spendAuthSig,
pub rk: redpallas::VerificationKeyBytes<SpendAuth>,
/// The 𝑥-coordinate of the note commitment for the output note.
/// The x-coordinate of the note commitment for the output note.
#[serde(with = "serde_helpers::Base")]
pub cm_x: pallas::Base,
/// An encoding of an ephemeral Pallas public key.
pub ephemeral_key: keys::EphemeralPublicKey,

View File

@ -64,6 +64,19 @@ impl From<Scalar> for pallas::Scalar {
}
}
#[derive(Deserialize, Serialize)]
#[serde(remote = "pallas::Base")]
pub struct Base {
#[serde(getter = "pallas::Base::to_bytes")]
bytes: [u8; 32],
}
impl From<Base> for pallas::Base {
fn from(local: Base) -> Self {
pallas::Base::from_bytes(&local.bytes).unwrap()
}
}
#[derive(Deserialize, Serialize)]
#[serde(remote = "futures::future::Either")]
pub enum Either<A, B> {