mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
crypto/keypair: Use derived serialization for PublicKey and SecretKey.
This commit is contained in:
@@ -12,7 +12,7 @@ use rand::RngCore;
|
||||
|
||||
use crate::{
|
||||
crypto::{address::Address, constants::NullifierK, util::mod_r_p},
|
||||
util::serial::{Decodable, Encodable, ReadExt, WriteExt},
|
||||
util::serial::{Decodable, Encodable, ReadExt, SerialDecodable, SerialEncodable, WriteExt},
|
||||
Error, Result,
|
||||
};
|
||||
|
||||
@@ -36,7 +36,7 @@ impl Keypair {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
#[derive(Copy, Clone, PartialEq, Debug, SerialDecodable, SerialEncodable)]
|
||||
pub struct SecretKey(pub pallas::Base);
|
||||
|
||||
impl SecretKey {
|
||||
@@ -57,7 +57,7 @@ impl SecretKey {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
#[derive(Copy, Clone, PartialEq, Debug, SerialDecodable, SerialEncodable)]
|
||||
pub struct PublicKey(pub pallas::Point);
|
||||
|
||||
impl PublicKey {
|
||||
@@ -153,46 +153,6 @@ impl Decodable for pallas::Point {
|
||||
}
|
||||
}
|
||||
|
||||
impl Encodable for SecretKey {
|
||||
fn encode<S: io::Write>(&self, mut s: S) -> Result<usize> {
|
||||
s.write_slice(&self.0.to_repr()[..])?;
|
||||
Ok(32)
|
||||
}
|
||||
}
|
||||
|
||||
impl Decodable for SecretKey {
|
||||
fn decode<D: io::Read>(mut d: D) -> Result<Self> {
|
||||
let mut bytes = [0u8; 32];
|
||||
d.read_slice(&mut bytes)?;
|
||||
let result = pallas::Base::from_repr(bytes);
|
||||
if result.is_some().into() {
|
||||
Ok(SecretKey(result.unwrap()))
|
||||
} else {
|
||||
Err(Error::BadOperationType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Encodable for PublicKey {
|
||||
fn encode<S: io::Write>(&self, mut s: S) -> Result<usize> {
|
||||
s.write_slice(&self.0.to_bytes()[..])?;
|
||||
Ok(32)
|
||||
}
|
||||
}
|
||||
|
||||
impl Decodable for PublicKey {
|
||||
fn decode<D: io::Read>(mut d: D) -> Result<Self> {
|
||||
let mut bytes = [0u8; 32];
|
||||
d.read_slice(&mut bytes)?;
|
||||
let result = pallas::Point::from_bytes(&bytes);
|
||||
if result.is_some().into() {
|
||||
Ok(PublicKey(result.unwrap()))
|
||||
} else {
|
||||
Err(Error::BadOperationType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "serde")]
|
||||
impl serde::Serialize for SecretKey {
|
||||
fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
|
||||
|
||||
Reference in New Issue
Block a user