Define main types for the library.

This commit is contained in:
Henry de Valence 2019-12-02 21:58:19 -08:00
parent 8bdb8580ff
commit 156c6b6e7c
4 changed files with 99 additions and 0 deletions

View File

@ -10,6 +10,9 @@ mod secret_key;
mod signature;
pub use error::Error;
pub use public_key::{PublicKey, PublicKeyBytes};
pub use secret_key::{SecretKey, SecretKeyBytes};
pub use signature::Signature;
#[cfg(test)]
mod tests {

View File

@ -0,0 +1,41 @@
use std::convert::TryFrom;
use crate::Error;
/// A refinement type indicating that the inner `[u8; 32]` represents an
/// encoding of a RedJubJub public key.
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
pub struct PublicKeyBytes(pub [u8; 32]);
impl From<[u8; 32]> for PublicKeyBytes {
fn from(raw: [u8; 32]) -> PublicKeyBytes {
PublicKeyBytes(raw)
}
}
impl From<PublicKeyBytes> for [u8; 32] {
fn from(refined: PublicKeyBytes) -> [u8; 32] {
refined.0
}
}
/// A RedJubJub public key.
// XXX PartialEq, Eq?
#[derive(Copy, Clone, Debug)]
pub struct PublicKey {
// fields
}
impl From<PublicKey> for PublicKeyBytes {
fn from(pk: PublicKey) -> PublicKeyBytes {
unimplemented!();
}
}
impl TryFrom<PublicKeyBytes> for PublicKey {
type Error = Error;
fn try_from(bytes: PublicKeyBytes) -> Result<Self, Self::Error> {
unimplemented!();
}
}

View File

@ -0,0 +1,41 @@
use std::convert::TryFrom;
use crate::Error;
/// A refinement type indicating that the inner `[u8; 32]` represents an
/// encoding of a RedJubJub secret key.
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
pub struct SecretKeyBytes(pub [u8; 32]);
impl From<[u8; 32]> for SecretKeyBytes {
fn from(raw: [u8; 32]) -> SecretKeyBytes {
SecretKeyBytes(raw)
}
}
impl From<SecretKeyBytes> for [u8; 32] {
fn from(refined: SecretKeyBytes) -> [u8; 32] {
refined.0
}
}
/// A RedJubJub secret key.
// XXX PartialEq, Eq?
#[derive(Copy, Clone, Debug)]
pub struct SecretKey {
// fields
}
impl From<SecretKey> for SecretKeyBytes {
fn from(pk: SecretKey) -> SecretKeyBytes {
unimplemented!();
}
}
impl TryFrom<SecretKeyBytes> for SecretKey {
type Error = Error;
fn try_from(bytes: SecretKeyBytes) -> Result<Self, Self::Error> {
unimplemented!();
}
}

View File

@ -0,0 +1,14 @@
/// A RedJubJub signature.
pub struct Signature(pub [u8; 64]);
impl From<[u8; 64]> for Signature {
fn from(bytes: [u8; 64]) -> Signature {
Signature(bytes)
}
}
impl From<Signature> for [u8; 64] {
fn from(s: Signature) -> [u8; 64] {
s.0
}
}