hscrypto: Use derive_more, and derive Deref for public keys.

This commit is contained in:
Nick Mathewson 2023-01-25 13:48:40 -05:00
parent fe6575ef98
commit 386de7587e
3 changed files with 4 additions and 32 deletions

1
Cargo.lock generated
View File

@ -3903,6 +3903,7 @@ dependencies = [
name = "tor-hscrypto"
version = "0.1.0"
dependencies = [
"derive_more",
"digest 0.10.6",
"hex-literal",
"humantime 2.1.0",

View File

@ -15,6 +15,7 @@ repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
default = []
[dependencies]
derive_more = "0.99.3"
digest = "0.10.0"
paste = "1"
rand_core = "0.6.2"

View File

@ -10,44 +10,14 @@ macro_rules! define_pk_keypair {
} => {
paste::paste!{
$(#[$meta])*
#[derive(Clone,Debug)]
#[derive(Clone,Debug,derive_more::From,derive_more::Deref,derive_more::Into,derive_more::AsRef)]
pub struct $pk ($pkt);
impl AsRef<$pkt> for $pk {
fn as_ref(&self) -> &$pkt {
&self.0
}
}
impl From<$pkt> for $pk {
fn from(inp: $pkt) -> Self {
Self(inp)
}
}
impl From<$pk> for $pkt {
fn from(inp: $pk) -> Self {
inp.0
}
}
#[doc = concat!("The private counterpart of a [`", stringify!($pk), "Key'].")]
$(#[$sk_meta])*
#[derive(derive_more::From,derive_more::Into,derive_more::AsRef)]
pub struct $sk ($skt);
impl AsRef<$skt> for $sk {
fn as_ref(&self) -> &$skt {
&self.0
}
}
impl From<$skt> for $sk {
fn from(inp: $skt) -> Self {
Self(inp)
}
}
impl From<$sk> for $skt {
fn from(inp: $sk) -> $skt {
inp.0
}
}
impl std::fmt::Debug for $sk
{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {