fix tests
This commit is contained in:
@@ -20,7 +20,7 @@ pub trait CryptoSystem {
|
||||
key: &PublicKey,
|
||||
secret: &SecretKey,
|
||||
) -> Result<SharedSecret, VeilidAPIError>;
|
||||
fn generate_keypair(&self) -> (PublicKey, SecretKey);
|
||||
fn generate_keypair(&self) -> KeyPair;
|
||||
fn generate_hash(&self, data: &[u8]) -> PublicKey;
|
||||
fn generate_hash_reader(
|
||||
&self,
|
||||
|
||||
@@ -117,16 +117,15 @@ impl Crypto {
|
||||
let mut cache_validity_key: Vec<u8> = Vec::new();
|
||||
{
|
||||
let c = self.unlocked_inner.config.get();
|
||||
for ck in &VALID_CRYPTO_KINDS {
|
||||
for ck in VALID_CRYPTO_KINDS {
|
||||
cache_validity_key.append(
|
||||
&mut c
|
||||
.network
|
||||
.routing_table
|
||||
.node_ids
|
||||
.node_id
|
||||
.get(ck)
|
||||
.unwrap()
|
||||
.node_id
|
||||
.unwrap()
|
||||
.value
|
||||
.bytes
|
||||
.to_vec(),
|
||||
);
|
||||
@@ -223,14 +222,14 @@ impl Crypto {
|
||||
node_ids: &[TypedKey],
|
||||
data: &[u8],
|
||||
typed_signatures: &[TypedSignature],
|
||||
) -> Result<Vec<CryptoKind>, VeilidAPIError> {
|
||||
let mut out = Vec::with_capacity(node_ids.len());
|
||||
) -> Result<TypedKeySet, VeilidAPIError> {
|
||||
let mut out = TypedKeySet::with_capacity(node_ids.len());
|
||||
for sig in typed_signatures {
|
||||
for nid in node_ids {
|
||||
if nid.kind == sig.kind {
|
||||
if let Some(vcrypto) = self.get(sig.kind) {
|
||||
vcrypto.verify(&nid.value, data, &sig.value)?;
|
||||
out.push(nid.kind);
|
||||
out.add(*nid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,6 +259,16 @@ impl Crypto {
|
||||
Ok(out)
|
||||
}
|
||||
|
||||
/// Generate keypair
|
||||
/// Does not require startup/init
|
||||
pub fn generate_keypair(crypto_kind: CryptoKind) -> Result<TypedKeyPair, VeilidAPIError> {
|
||||
if crypto_kind == CRYPTO_KIND_VLD0 {
|
||||
let kp = vld0_generate_keypair();
|
||||
return Ok(TypedKeyPair::new(crypto_kind, kp));
|
||||
}
|
||||
Err(VeilidAPIError::generic("invalid crypto kind"))
|
||||
}
|
||||
|
||||
// Internal utilities
|
||||
|
||||
fn cached_dh_internal<T: CryptoSystem>(
|
||||
|
||||
@@ -138,8 +138,8 @@ pub async fn test_no_auth(vcrypto: CryptoSystemVersion) {
|
||||
|
||||
pub async fn test_dh(vcrypto: CryptoSystemVersion) {
|
||||
trace!("test_dh");
|
||||
let (dht_key, dht_key_secret) = vcrypto.generate_keypair();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair();
|
||||
let (dht_key, dht_key_secret) = vcrypto.generate_keypair().into_split();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair().into_split();
|
||||
|
||||
let r1 = vcrypto.compute_dh(&dht_key, &dht_key_secret2).unwrap();
|
||||
let r2 = vcrypto.compute_dh(&dht_key2, &dht_key_secret).unwrap();
|
||||
|
||||
@@ -9,8 +9,8 @@ pub async fn test_envelope_round_trip(
|
||||
// Create envelope
|
||||
let ts = Timestamp::from(0x12345678ABCDEF69u64);
|
||||
let nonce = vcrypto.random_nonce();
|
||||
let (sender_id, sender_secret) = vcrypto.generate_keypair();
|
||||
let (recipient_id, recipient_secret) = vcrypto.generate_keypair();
|
||||
let (sender_id, sender_secret) = vcrypto.generate_keypair().into_split();
|
||||
let (recipient_id, recipient_secret) = vcrypto.generate_keypair().into_split();
|
||||
let envelope = Envelope::new(
|
||||
envelope_version,
|
||||
vcrypto.kind(),
|
||||
@@ -66,7 +66,7 @@ pub async fn test_receipt_round_trip(
|
||||
|
||||
// Create receipt
|
||||
let nonce = vcrypto.random_nonce();
|
||||
let (sender_id, sender_secret) = vcrypto.generate_keypair();
|
||||
let (sender_id, sender_secret) = vcrypto.generate_keypair().into_split();
|
||||
let receipt = Receipt::try_new(envelope_version, vcrypto.kind(), nonce, sender_id, body)
|
||||
.expect("should not fail");
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ static EMPTY_KEY_SECRET: [u8; SECRET_KEY_LENGTH] = [0u8; SECRET_KEY_LENGTH];
|
||||
|
||||
pub async fn test_generate_secret(vcrypto: CryptoSystemVersion) {
|
||||
// Verify keys generate
|
||||
let (dht_key, dht_key_secret) = vcrypto.generate_keypair();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair();
|
||||
let (dht_key, dht_key_secret) = vcrypto.generate_keypair().into_split();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair().into_split();
|
||||
|
||||
// Verify byte patterns are different between public and secret
|
||||
assert_ne!(dht_key.bytes, dht_key_secret.bytes);
|
||||
@@ -24,8 +24,8 @@ pub async fn test_generate_secret(vcrypto: CryptoSystemVersion) {
|
||||
|
||||
pub async fn test_sign_and_verify(vcrypto: CryptoSystemVersion) {
|
||||
// Make two keys
|
||||
let (dht_key, dht_key_secret) = vcrypto.generate_keypair();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair();
|
||||
let (dht_key, dht_key_secret) = vcrypto.generate_keypair().into_split();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair().into_split();
|
||||
// Sign the same message twice
|
||||
let dht_sig = vcrypto
|
||||
.sign(&dht_key, &dht_key_secret, LOREM_IPSUM.as_bytes())
|
||||
@@ -133,10 +133,10 @@ pub async fn test_key_conversions(vcrypto: CryptoSystemVersion) {
|
||||
assert_eq!(dht_key_secret_string, dht_key_string);
|
||||
|
||||
// Make different keys
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair().into_split();
|
||||
trace!("dht_key2: {:?}", dht_key2);
|
||||
trace!("dht_key_secret2: {:?}", dht_key_secret2);
|
||||
let (dht_key3, _dht_key_secret3) = vcrypto.generate_keypair();
|
||||
let (dht_key3, _dht_key_secret3) = vcrypto.generate_keypair().into_split();
|
||||
trace!("dht_key3: {:?}", dht_key3);
|
||||
trace!("_dht_key_secret3: {:?}", _dht_key_secret3);
|
||||
|
||||
@@ -196,7 +196,7 @@ pub async fn test_encode_decode(vcrypto: CryptoSystemVersion) {
|
||||
assert_eq!(dht_key, dht_key_b);
|
||||
assert_eq!(dht_key_secret, dht_key_secret_b);
|
||||
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair();
|
||||
let (dht_key2, dht_key_secret2) = vcrypto.generate_keypair().into_split();
|
||||
|
||||
let e1 = dht_key.encode();
|
||||
trace!("e1: {:?}", e1);
|
||||
|
||||
@@ -24,6 +24,12 @@ impl KeyPair {
|
||||
pub fn new(key: PublicKey, secret: SecretKey) -> Self {
|
||||
Self { key, secret }
|
||||
}
|
||||
pub fn split(&self) -> (PublicKey, SecretKey) {
|
||||
(self.key, self.secret)
|
||||
}
|
||||
pub fn into_split(self) -> (PublicKey, SecretKey) {
|
||||
(self.key, self.secret)
|
||||
}
|
||||
}
|
||||
|
||||
impl Encodable for KeyPair {
|
||||
|
||||
@@ -32,13 +32,13 @@ fn ed25519_to_x25519_sk(key: &ed::SecretKey) -> Result<xd::StaticSecret, VeilidA
|
||||
Ok(xd::StaticSecret::from(lowbytes))
|
||||
}
|
||||
|
||||
pub fn vld0_generate_keypair() -> (PublicKey, SecretKey) {
|
||||
pub fn vld0_generate_keypair() -> KeyPair {
|
||||
let mut csprng = VeilidRng {};
|
||||
let keypair = ed::Keypair::generate(&mut csprng);
|
||||
let dht_key = PublicKey::new(keypair.public.to_bytes());
|
||||
let dht_key_secret = SecretKey::new(keypair.secret.to_bytes());
|
||||
|
||||
(dht_key, dht_key_secret)
|
||||
KeyPair::new(dht_key, dht_key_secret)
|
||||
}
|
||||
|
||||
/// V0 CryptoSystem
|
||||
@@ -95,7 +95,7 @@ impl CryptoSystem for CryptoSystemVLD0 {
|
||||
let sk_xd = ed25519_to_x25519_sk(&sk_ed)?;
|
||||
Ok(SharedSecret::new(sk_xd.diffie_hellman(&pk_xd).to_bytes()))
|
||||
}
|
||||
fn generate_keypair(&self) -> (PublicKey, SecretKey) {
|
||||
fn generate_keypair(&self) -> KeyPair {
|
||||
vld0_generate_keypair()
|
||||
}
|
||||
fn generate_hash(&self, data: &[u8]) -> PublicKey {
|
||||
|
||||
Reference in New Issue
Block a user