Skip to content
This repository has been archived by the owner on Feb 25, 2021. It is now read-only.

Commit

Permalink
Remove toplevel 'signature' re-exports; add encoding::Error
Browse files Browse the repository at this point in the history
This removes many of the types previously re-exported from the toplevel
of the `signatory` crate. This includes all of the types that come from
the `signature` crate.

Additionally this splits out a `signatory::encoding::Error` which is
unique from `signatory::signature::Error` and used to handle
encoding/decoding strings as well as reading/writing from files, in
which case it's nice to provide some additional debugging information
like the filename.
  • Loading branch information
tony-iqlusion committed Aug 11, 2019
1 parent 104817e commit 2fc2cb0
Show file tree
Hide file tree
Showing 36 changed files with 377 additions and 205 deletions.
6 changes: 5 additions & 1 deletion signatory-dalek/benches/ed25519.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@
extern crate criterion;

use criterion::Criterion;
use signatory::{ed25519, test_vector::TestVector, Signature, Signer, Verifier};
use signatory::{
ed25519,
signature::{Signature, Signer, Verifier},
test_vector::TestVector,
};
use signatory_dalek::{Ed25519Signer, Ed25519Verifier};

/// Test vector to use for benchmarking
Expand Down
11 changes: 7 additions & 4 deletions signatory-dalek/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@
extern crate signatory;

use signatory::{
digest::Digest, ed25519, generic_array::typenum::U64, DigestSigner, DigestVerifier, Error,
PublicKeyed, Signature, Signer, Verifier,
ed25519,
generic_array::typenum::U64,
public_key::PublicKeyed,
signature::{digest::Digest, DigestSigner, DigestVerifier, Error, Signature, Signer, Verifier},
};

/// Ed25519 signature provider for ed25519-dalek
Expand All @@ -48,7 +50,7 @@ impl PublicKeyed<ed25519::PublicKey> for Ed25519Signer {
impl Signer<ed25519::Signature> for Ed25519Signer {
fn try_sign(&self, msg: &[u8]) -> Result<ed25519::Signature, Error> {
let signature = self.0.sign(msg).to_bytes();
Ok(Signature::from_bytes(&signature[..]).unwrap())
Ok(ed25519::Signature::from_bytes(&signature[..]).unwrap())
}
}

Expand All @@ -62,7 +64,8 @@ where
let context: Option<&'static [u8]> = None;

let signature =
Signature::from_bytes(&self.0.sign_prehashed(digest, context).to_bytes()[..]).unwrap();
ed25519::Signature::from_bytes(&self.0.sign_prehashed(digest, context).to_bytes()[..])
.unwrap();

Ok(signature)
}
Expand Down
1 change: 0 additions & 1 deletion signatory-ledger-tm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ circle-ci = { repository = "tendermint/signatory" }
[dependencies]
lazy_static = "1"
ledger-tendermint = "0.4"
libc = "0.2"

[dependencies.signatory]
version = "0.12"
Expand Down
6 changes: 5 additions & 1 deletion signatory-ledger-tm/benches/ed25519.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ extern crate criterion;
use signatory;

use criterion::Criterion;
use signatory::{ed25519, PublicKeyed, Signature, Verifier};
use signatory::{
ed25519,
public_key::PublicKeyed,
signature::{Signature, Verifier},
};
use signatory_ledger_tm::Ed25519LedgerTmAppSigner;

fn pubkey_ed25519(c: &mut Criterion) {
Expand Down
13 changes: 7 additions & 6 deletions signatory-ledger-tm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
use ledger_tendermint::ledgertm::TendermintValidatorApp;
use signatory::{
ed25519::{PublicKey, Signature},
Error, PublicKeyed, Signer,
public_key::PublicKeyed,
signature::{Error, Signer},
};
use std::sync::{Arc, Mutex};

Expand Down Expand Up @@ -54,7 +55,7 @@ mod tests {

#[test]
fn public_key() {
use signatory::PublicKeyed;
use signatory::public_key::PublicKeyed;
let signer = Ed25519LedgerTmAppSigner::connect().unwrap();

let _pk = signer.public_key().unwrap();
Expand All @@ -64,7 +65,7 @@ mod tests {
#[test]
fn sign() {
use crate::Ed25519LedgerTmAppSigner;
use signatory::Signer;
use signatory::signature::Signer;

let signer = Ed25519LedgerTmAppSigner::connect().unwrap();

Expand All @@ -86,7 +87,7 @@ mod tests {

#[test]
fn sign2() {
use signatory::Signer;
use signatory::signature::Signer;

let signer = Ed25519LedgerTmAppSigner::connect().unwrap();

Expand Down Expand Up @@ -123,8 +124,8 @@ mod tests {

#[test]
fn sign_many() {
use signatory::PublicKeyed;
use signatory::Signer;
use signatory::public_key::PublicKeyed;
use signatory::signature::Signer;
use Ed25519LedgerTmAppSigner;

let signer = Ed25519LedgerTmAppSigner::connect().unwrap();
Expand Down
2 changes: 1 addition & 1 deletion signatory-ring/benches/ecdsa.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ use signatory::{
},
encoding::FromPkcs8,
generic_array::GenericArray,
signature::{Signature, Signer as _, Verifier as _},
test_vector::TestVector,
Signature, Signer as _, Verifier as _,
};
use signatory_ring::ecdsa::p256::{Signer, Verifier};

Expand Down
6 changes: 5 additions & 1 deletion signatory-ring/benches/ed25519.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ extern crate criterion;
use signatory;

use criterion::Criterion;
use signatory::{ed25519::TEST_VECTORS, test_vector::TestVector, Signature, Signer, Verifier};
use signatory::{
ed25519::TEST_VECTORS,
signature::{Signature, Signer, Verifier},
test_vector::TestVector,
};
use signatory_ring::ed25519;

/// Test vector to use for benchmarking
Expand Down
43 changes: 24 additions & 19 deletions signatory-ring/src/ecdsa/p256.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@ use ring::{
};
use signatory::{
ecdsa,
encoding::pkcs8::{self, FromPkcs8, GeneratePkcs8},
Error, PublicKeyed,
encoding::{
self,
pkcs8::{self, FromPkcs8, GeneratePkcs8},
},
public_key::PublicKeyed,
signature,
};
use untrusted;

Expand All @@ -25,7 +29,7 @@ where

impl FromPkcs8 for Signer<Asn1Signature> {
/// Create a new ECDSA signer which produces fixed-width signatures from a PKCS#8 keypair
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, Error> {
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, encoding::Error> {
Ok(Signer(EcdsaSigner::from_pkcs8(
&ECDSA_P256_SHA256_ASN1_SIGNING,
secret_key.as_ref(),
Expand All @@ -35,7 +39,7 @@ impl FromPkcs8 for Signer<Asn1Signature> {

impl FromPkcs8 for Signer<FixedSignature> {
/// Create a new ECDSA signer which produces fixed-width signatures from a PKCS#8 keypair
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, Error> {
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, encoding::Error> {
Ok(Signer(EcdsaSigner::from_pkcs8(
&ECDSA_P256_SHA256_FIXED_SIGNING,
secret_key.as_ref(),
Expand All @@ -45,7 +49,7 @@ impl FromPkcs8 for Signer<FixedSignature> {

impl GeneratePkcs8 for Signer<Asn1Signature> {
/// Randomly generate a P-256 **PKCS#8** keypair
fn generate_pkcs8() -> Result<pkcs8::SecretKey, Error> {
fn generate_pkcs8() -> Result<pkcs8::SecretKey, encoding::Error> {
let keypair = ring::signature::EcdsaKeyPair::generate_pkcs8(
&ECDSA_P256_SHA256_ASN1_SIGNING,
&SystemRandom::new(),
Expand All @@ -58,7 +62,7 @@ impl GeneratePkcs8 for Signer<Asn1Signature> {

impl GeneratePkcs8 for Signer<FixedSignature> {
/// Randomly generate a P-256 **PKCS#8** keypair
fn generate_pkcs8() -> Result<pkcs8::SecretKey, Error> {
fn generate_pkcs8() -> Result<pkcs8::SecretKey, encoding::Error> {
let keypair = ring::signature::EcdsaKeyPair::generate_pkcs8(
&ECDSA_P256_SHA256_FIXED_SIGNING,
&SystemRandom::new(),
Expand All @@ -73,19 +77,19 @@ impl<S> PublicKeyed<PublicKey> for Signer<S>
where
S: ecdsa::Signature + Send + Sync,
{
fn public_key(&self) -> Result<PublicKey, Error> {
PublicKey::from_bytes(self.0.public_key()).ok_or_else(Error::new)
fn public_key(&self) -> Result<PublicKey, signature::Error> {
PublicKey::from_bytes(self.0.public_key()).ok_or_else(signature::Error::new)
}
}

impl signatory::Signer<Asn1Signature> for Signer<Asn1Signature> {
fn try_sign(&self, msg: &[u8]) -> Result<Asn1Signature, Error> {
impl signature::Signer<Asn1Signature> for Signer<Asn1Signature> {
fn try_sign(&self, msg: &[u8]) -> Result<Asn1Signature, signature::Error> {
self.0.sign(msg)
}
}

impl signatory::Signer<FixedSignature> for Signer<FixedSignature> {
fn try_sign(&self, msg: &[u8]) -> Result<FixedSignature, Error> {
impl signature::Signer<FixedSignature> for Signer<FixedSignature> {
fn try_sign(&self, msg: &[u8]) -> Result<FixedSignature, signature::Error> {
self.0.sign(msg)
}
}
Expand All @@ -100,27 +104,27 @@ impl<'a> From<&'a PublicKey> for Verifier {
}
}

impl signatory::Verifier<Asn1Signature> for Verifier {
fn verify(&self, msg: &[u8], signature: &Asn1Signature) -> Result<(), Error> {
impl signature::Verifier<Asn1Signature> for Verifier {
fn verify(&self, msg: &[u8], signature: &Asn1Signature) -> Result<(), signature::Error> {
ring::signature::verify(
&ECDSA_P256_SHA256_ASN1,
untrusted::Input::from(self.0.as_ref()),
untrusted::Input::from(msg),
untrusted::Input::from(signature.as_ref()),
)
.map_err(|_| Error::new())
.map_err(|_| signature::Error::new())
}
}

impl signatory::Verifier<FixedSignature> for Verifier {
fn verify(&self, msg: &[u8], signature: &FixedSignature) -> Result<(), Error> {
impl signature::Verifier<FixedSignature> for Verifier {
fn verify(&self, msg: &[u8], signature: &FixedSignature) -> Result<(), signature::Error> {
ring::signature::verify(
&ECDSA_P256_SHA256_FIXED,
untrusted::Input::from(self.0.as_ref()),
untrusted::Input::from(msg),
untrusted::Input::from(signature.as_ref()),
)
.map_err(|_| Error::new())
.map_err(|_| signature::Error::new())
}
}

Expand All @@ -133,7 +137,8 @@ mod tests {
},
encoding::FromPkcs8,
generic_array::GenericArray,
PublicKeyed, Signature, Signer as _, Verifier as _,
public_key::PublicKeyed,
signature::{Signature as _, Signer as _, Verifier as _},
};

#[test]
Expand Down
43 changes: 24 additions & 19 deletions signatory-ring/src/ecdsa/p384.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@ use ring::{
};
use signatory::{
ecdsa,
encoding::pkcs8::{self, FromPkcs8, GeneratePkcs8},
Error, PublicKeyed,
encoding::{
self,
pkcs8::{self, FromPkcs8, GeneratePkcs8},
},
public_key::PublicKeyed,
signature,
};
use untrusted;

Expand All @@ -25,7 +29,7 @@ where

impl FromPkcs8 for Signer<Asn1Signature> {
/// Create a new ECDSA signer which produces fixed-width signatures from a PKCS#8 keypair
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, Error> {
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, encoding::Error> {
Ok(Signer(EcdsaSigner::from_pkcs8(
&ECDSA_P384_SHA384_ASN1_SIGNING,
secret_key.as_ref(),
Expand All @@ -35,7 +39,7 @@ impl FromPkcs8 for Signer<Asn1Signature> {

impl FromPkcs8 for Signer<FixedSignature> {
/// Create a new ECDSA signer which produces fixed-width signatures from a PKCS#8 keypair
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, Error> {
fn from_pkcs8<K: AsRef<[u8]>>(secret_key: K) -> Result<Self, encoding::Error> {
Ok(Signer(EcdsaSigner::from_pkcs8(
&ECDSA_P384_SHA384_FIXED_SIGNING,
secret_key.as_ref(),
Expand All @@ -45,7 +49,7 @@ impl FromPkcs8 for Signer<FixedSignature> {

impl GeneratePkcs8 for Signer<Asn1Signature> {
/// Randomly generate a P-384 **PKCS#8** keypair
fn generate_pkcs8() -> Result<pkcs8::SecretKey, Error> {
fn generate_pkcs8() -> Result<pkcs8::SecretKey, encoding::Error> {
let keypair = ring::signature::EcdsaKeyPair::generate_pkcs8(
&ECDSA_P384_SHA384_ASN1_SIGNING,
&SystemRandom::new(),
Expand All @@ -57,7 +61,7 @@ impl GeneratePkcs8 for Signer<Asn1Signature> {

impl GeneratePkcs8 for Signer<FixedSignature> {
/// Randomly generate a P-384 **PKCS#8** keypair
fn generate_pkcs8() -> Result<pkcs8::SecretKey, Error> {
fn generate_pkcs8() -> Result<pkcs8::SecretKey, encoding::Error> {
let keypair = ring::signature::EcdsaKeyPair::generate_pkcs8(
&ECDSA_P384_SHA384_FIXED_SIGNING,
&SystemRandom::new(),
Expand All @@ -72,19 +76,19 @@ where
S: ecdsa::Signature + Send + Sync,
{
/// Obtain the public key which identifies this signer
fn public_key(&self) -> Result<PublicKey, Error> {
PublicKey::from_bytes(self.0.public_key()).ok_or_else(Error::new)
fn public_key(&self) -> Result<PublicKey, signature::Error> {
PublicKey::from_bytes(self.0.public_key()).ok_or_else(signature::Error::new)
}
}

impl signatory::Signer<Asn1Signature> for Signer<Asn1Signature> {
fn try_sign(&self, msg: &[u8]) -> Result<Asn1Signature, Error> {
impl signature::Signer<Asn1Signature> for Signer<Asn1Signature> {
fn try_sign(&self, msg: &[u8]) -> Result<Asn1Signature, signature::Error> {
self.0.sign(msg)
}
}

impl signatory::Signer<FixedSignature> for Signer<FixedSignature> {
fn try_sign(&self, msg: &[u8]) -> Result<FixedSignature, Error> {
impl signature::Signer<FixedSignature> for Signer<FixedSignature> {
fn try_sign(&self, msg: &[u8]) -> Result<FixedSignature, signature::Error> {
self.0.sign(msg)
}
}
Expand All @@ -99,27 +103,27 @@ impl<'a> From<&'a PublicKey> for Verifier {
}
}

impl signatory::Verifier<Asn1Signature> for Verifier {
fn verify(&self, msg: &[u8], signature: &Asn1Signature) -> Result<(), Error> {
impl signature::Verifier<Asn1Signature> for Verifier {
fn verify(&self, msg: &[u8], signature: &Asn1Signature) -> Result<(), signature::Error> {
ring::signature::verify(
&ECDSA_P384_SHA384_ASN1,
untrusted::Input::from(self.0.as_ref()),
untrusted::Input::from(msg),
untrusted::Input::from(signature.as_ref()),
)
.map_err(|_| Error::new())
.map_err(|_| signature::Error::new())
}
}

impl signatory::Verifier<FixedSignature> for Verifier {
fn verify(&self, msg: &[u8], signature: &FixedSignature) -> Result<(), Error> {
impl signature::Verifier<FixedSignature> for Verifier {
fn verify(&self, msg: &[u8], signature: &FixedSignature) -> Result<(), signature::Error> {
ring::signature::verify(
&ECDSA_P384_SHA384_FIXED,
untrusted::Input::from(self.0.as_ref()),
untrusted::Input::from(msg),
untrusted::Input::from(signature.as_ref()),
)
.map_err(|_| Error::new())
.map_err(|_| signature::Error::new())
}
}

Expand All @@ -132,7 +136,8 @@ mod tests {
},
encoding::FromPkcs8,
generic_array::GenericArray,
PublicKeyed, Signature, Signer as _, Verifier as _,
public_key::PublicKeyed,
signature::{Signature as _, Signer as _, Verifier as _},
};

#[test]
Expand Down
Loading

0 comments on commit 2fc2cb0

Please sign in to comment.