First level of trait updates

This commit is contained in:
Jędrzej Stuczyński
2022-03-01 11:55:12 +00:00
parent 2a0ccf30f9
commit 5701ea5c02
11 changed files with 950 additions and 571 deletions
Generated
+106 -19
View File
@@ -25,12 +25,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
dependencies = [
"cfg-if 1.0.0",
"cipher",
"cipher 0.3.0",
"cpufeatures",
"ctr",
"ctr 0.8.0",
"opaque-debug 0.3.0",
]
[[package]]
name = "aes"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfe0133578c0986e1fe3dfcd4af1cc5b2dd6c3dbf534d69916ce16a2701d40ba"
dependencies = [
"cfg-if 1.0.0",
"cipher 0.4.3",
"cpufeatures",
]
[[package]]
name = "ahash"
version = "0.7.4"
@@ -242,7 +253,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "873faa4363bfc54c36a48321da034c92a0645a363eed34d948683ffc1706e37f"
dependencies = [
"bs58",
"hmac",
"hmac 0.11.0",
"k256 0.10.1",
"once_cell",
"pbkdf2",
@@ -304,17 +315,16 @@ dependencies = [
[[package]]
name = "blake3"
version = "1.2.0"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "526c210b4520e416420759af363083471656e819a75e831b8d2c9d5a584f2413"
checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f"
dependencies = [
"arrayref",
"arrayvec 0.7.1",
"cc",
"cfg-if 1.0.0",
"constant_time_eq",
"crypto-mac 0.11.1",
"digest 0.9.0",
"digest 0.10.3",
]
[[package]]
@@ -339,6 +349,15 @@ dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "block-buffer"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "block-padding"
version = "0.1.5"
@@ -488,6 +507,16 @@ dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "cipher"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e"
dependencies = [
"crypto-common",
"inout",
]
[[package]]
name = "clap"
version = "2.33.3"
@@ -915,16 +944,17 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
name = "crypto"
version = "0.1.0"
dependencies = [
"aes",
"aes 0.8.1",
"blake3",
"bs58",
"cipher",
"cipher 0.4.3",
"config",
"digest 0.9.0",
"ctr 0.9.1",
"digest 0.10.3",
"ed25519-dalek",
"generic-array 0.14.4",
"hkdf",
"hmac",
"hkdf 0.12.3",
"hmac 0.12.1",
"log",
"nymsphinx-types",
"pemstore",
@@ -957,6 +987,16 @@ dependencies = [
"zeroize",
]
[[package]]
name = "crypto-common"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
dependencies = [
"generic-array 0.14.4",
"typenum",
]
[[package]]
name = "crypto-mac"
version = "0.7.0"
@@ -1014,7 +1054,16 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
dependencies = [
"cipher",
"cipher 0.3.0",
]
[[package]]
name = "ctr"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d14f329cfbaf5d0e06b5e87fff7e265d2673c5ea7d2c27691a2c107db1442a0"
dependencies = [
"cipher 0.4.3",
]
[[package]]
@@ -1203,6 +1252,17 @@ dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "digest"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
"block-buffer 0.10.2",
"crypto-common",
"subtle 2.4.1",
]
[[package]]
name = "dirs"
version = "3.0.2"
@@ -1294,7 +1354,7 @@ checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372"
dependencies = [
"der 0.4.3",
"elliptic-curve 0.10.6",
"hmac",
"hmac 0.11.0",
"signature",
]
@@ -2135,7 +2195,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b"
dependencies = [
"digest 0.9.0",
"hmac",
"hmac 0.11.0",
]
[[package]]
name = "hkdf"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
dependencies = [
"hmac 0.12.1",
]
[[package]]
@@ -2148,6 +2217,15 @@ dependencies = [
"digest 0.9.0",
]
[[package]]
name = "hmac"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
dependencies = [
"digest 0.10.3",
]
[[package]]
name = "http"
version = "0.2.6"
@@ -2370,6 +2448,15 @@ version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3094308123a0e9fd59659ce45e22de9f53fc1d2ac6e1feb9fef988e4f76cad77"
[[package]]
name = "inout"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1f03d4ab4d5dc9ec2d219f86c15d2a15fc08239d1cd3b2d6a19717c0a2f443"
dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "input_buffer"
version = "0.4.0"
@@ -4275,7 +4362,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525"
dependencies = [
"crypto-bigint 0.3.2",
"hmac",
"hmac 0.11.0",
"zeroize",
]
@@ -5010,7 +5097,7 @@ name = "sphinx"
version = "0.1.0"
source = "git+https://github.com/nymtech/sphinx?rev=c494250f2a78bed33a618d470792418eee932859#c494250f2a78bed33a618d470792418eee932859"
dependencies = [
"aes",
"aes 0.7.5",
"arrayref",
"blake2",
"bs58",
@@ -5018,8 +5105,8 @@ dependencies = [
"chacha",
"curve25519-dalek",
"digest 0.9.0",
"hkdf",
"hmac",
"hkdf 0.11.0",
"hmac 0.11.0",
"lioness",
"log",
"rand 0.7.3",
+7 -6
View File
@@ -7,14 +7,15 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
aes = { version = "0.7.4", features = ["ctr"] }
aes = "0.8.1"
bs58 = "0.4.0"
blake3 = { version = "~1.2.0", features = ["traits-preview"] }
digest = "0.9.0"
blake3 = { version = "1.3.1", features = ["traits-preview"] }
ctr = "0.9.1"
digest = "0.10.3"
generic-array = "0.14"
hkdf = "0.11.0"
hmac = "0.11.0"
cipher = "0.3.0"
hkdf = "0.12.3"
hmac = "0.12.1"
cipher = "0.4.3"
x25519-dalek = "1.1"
ed25519-dalek = "1.0"
log = "0.4"
+3 -6
View File
@@ -1,14 +1,11 @@
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0
use digest::{BlockInput, Digest, FixedOutput, Reset, Update};
use generic_array::{ArrayLength, GenericArray};
use digest::{Digest, Output};
pub fn compute_digest<D>(data: &[u8]) -> GenericArray<u8, <D as Digest>::OutputSize>
pub fn compute_digest<D>(data: &[u8]) -> Output<D>
where
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
D: Digest,
{
D::digest(data)
}
+2 -6
View File
@@ -1,9 +1,7 @@
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0
use digest::{BlockInput, FixedOutput, Reset, Update};
use generic_array::ArrayLength;
use hkdf::Hkdf;
use hkdf::{hmac::digest::Digest, Hkdf};
/// Perform HKDF `extract` then `expand` as a single step.
pub fn extract_then_expand<D>(
@@ -13,9 +11,7 @@ pub fn extract_then_expand<D>(
okm_length: usize,
) -> Result<Vec<u8>, hkdf::InvalidLength>
where
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
D: Digest,
{
// TODO: this would need to change if we ever needed the generated pseudorandom key, but
// realistically I don't see any reasons why we might need it
+30 -35
View File
@@ -1,24 +1,23 @@
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0
use digest::{BlockInput, FixedOutput, Reset, Update};
use generic_array::{typenum::Unsigned, ArrayLength, GenericArray};
use hmac::{crypto_mac, Hmac, Mac, NewMac};
use hmac::{
digest::{crypto_common::BlockSizeUser, Digest, Output},
Mac, SimpleHmac,
};
pub use hmac;
// Type alias for ease of use so that it would not require explicit import of crypto_mac or Hmac
pub type HmacOutput<D> = crypto_mac::Output<Hmac<D>>;
// TODO: We should probably change it to use some sealed trait to allow for both `Hmac` and `SimpleHmac`
pub type HmacOutput<D> = Output<SimpleHmac<D>>;
/// Compute keyed hmac
pub fn compute_keyed_hmac<D>(key: &[u8], data: &[u8]) -> HmacOutput<D>
where
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
D: Digest + BlockSizeUser,
{
let mut hmac =
Hmac::<D>::new_from_slice(key).expect("HMAC should be able to take key of any size!");
let mut hmac = SimpleHmac::<D>::new_from_slice(key)
.expect("HMAC was instantiated with a key of an invalid size!");
hmac.update(data);
hmac.finalize()
}
@@ -26,33 +25,29 @@ where
/// Compute keyed hmac and performs constant time equality check with the provided tag value.
pub fn recompute_keyed_hmac_and_verify_tag<D>(key: &[u8], data: &[u8], tag: &[u8]) -> bool
where
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
D: Digest,
{
let mut hmac =
Hmac::<D>::new_from_slice(key).expect("HMAC should be able to take key of any size!");
let mut hmac = SimpleHmac::<D>::new_from_slice(key)
.expect("HMAC was instantiated with a key of an invalid size!");
hmac.update(data);
// note, under the hood ct_eq is called
hmac.verify(tag).is_ok()
}
/// Verifies tag of an hmac output.
pub fn verify_tag<D>(tag: &[u8], out: HmacOutput<D>) -> bool
where
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
{
if tag.len() != D::OutputSize::to_usize() {
return false;
}
let tag_bytes = GenericArray::clone_from_slice(tag);
let tag_out = HmacOutput::new(tag_bytes);
// note, under the hood ct_eq is called
out == tag_out
}
// /// Verifies tag of an hmac output.
// pub fn verify_tag<D>(tag: &[u8], out: HmacOutput<D>) -> bool
// where
// D: Digest,
// {
// if tag.len() != D::output_size() {
// return false;
// }
//
// let tag_bytes = GenericArray::clone_from_slice(tag);
//
// // note, under the hood ct_eq is called
// out == tag_out
// }
#[cfg(test)]
mod tests {
@@ -76,9 +71,9 @@ mod tests {
&output_tag
));
assert!(verify_tag::<blake3::Hasher>(
&output_tag,
compute_keyed_hmac::<blake3::Hasher>(&key, msg)
));
// assert!(verify_tag::<blake3::Hasher>(
// &output_tag,
// compute_keyed_hmac::<blake3::Hasher>(&key, msg)
// ));
}
}
+1
View File
@@ -16,6 +16,7 @@ pub use generic_array;
// etc. algorithms and import them elsewhere as needed via common/crypto
pub use aes;
pub use blake3;
pub use ctr;
// TODO: this function uses all three modules: asymmetric crypto, symmetric crypto and derives key...,
// so I don't know where to put it...
+10 -15
View File
@@ -3,9 +3,8 @@
use crate::asymmetric::encryption;
use crate::hkdf;
use cipher::{CipherKey, NewCipher, StreamCipher};
use digest::{BlockInput, FixedOutput, Reset, Update};
use generic_array::{typenum::Unsigned, ArrayLength};
use cipher::{Key, KeyIvInit, StreamCipher};
use digest::Digest;
use rand::{CryptoRng, RngCore};
/// Generate an ephemeral encryption keypair and perform diffie-hellman to establish
@@ -13,12 +12,10 @@ use rand::{CryptoRng, RngCore};
pub fn new_ephemeral_shared_key<C, D, R>(
rng: &mut R,
remote_key: &encryption::PublicKey,
) -> (encryption::KeyPair, CipherKey<C>)
) -> (encryption::KeyPair, Key<C>)
where
C: StreamCipher + NewCipher,
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
C: StreamCipher + KeyIvInit,
D: Digest,
R: RngCore + CryptoRng,
{
let ephemeral_keypair = encryption::KeyPair::new(rng);
@@ -31,7 +28,7 @@ where
.expect("somehow too long okm was provided");
let derived_shared_key =
CipherKey::<C>::from_exact_iter(okm).expect("okm was expanded to incorrect length!");
Key::<C>::from_exact_iter(okm).expect("okm was expanded to incorrect length!");
(ephemeral_keypair, derived_shared_key)
}
@@ -40,12 +37,10 @@ where
pub fn recompute_shared_key<C, D>(
remote_key: &encryption::PublicKey,
local_key: &encryption::PrivateKey,
) -> CipherKey<C>
) -> Key<C>
where
C: StreamCipher + NewCipher,
D: Update + BlockInput + FixedOutput + Reset + Default + Clone,
D::BlockSize: ArrayLength<u8>,
D::OutputSize: ArrayLength<u8>,
C: StreamCipher + KeyIvInit,
D: Digest,
{
let dh_result = local_key.diffie_hellman(remote_key);
@@ -53,5 +48,5 @@ where
let okm = hkdf::extract_then_expand::<D>(None, &dh_result, None, C::KeySize::to_usize())
.expect("somehow too long okm was provided");
CipherKey::<C>::from_exact_iter(okm).expect("okm was expanded to incorrect length!")
Key::<C>::from_exact_iter(okm).expect("okm was expanded to incorrect length!")
}
+17 -17
View File
@@ -1,12 +1,12 @@
// Copyright 2020 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0
use cipher::{Nonce, StreamCipher};
use cipher::{Iv, KeyIvInit, StreamCipher};
use generic_array::{typenum::Unsigned, GenericArray};
use rand::{CryptoRng, RngCore};
// re-export this for ease of use
pub use cipher::{CipherKey, NewCipher};
pub use cipher::Key;
// SECURITY:
// TODO: note that this is not the most secure approach here
@@ -19,11 +19,11 @@ pub use cipher::{CipherKey, NewCipher};
// I think 'IV' looks better than 'Iv', feel free to change that.
#[allow(clippy::upper_case_acronyms)]
pub type IV<C> = Nonce<C>;
pub type IV<C> = Iv<C>;
pub fn generate_key<C, R>(rng: &mut R) -> CipherKey<C>
pub fn generate_key<C, R>(rng: &mut R) -> Key<C>
where
C: NewCipher,
C: KeyIvInit,
R: RngCore + CryptoRng,
{
let mut key = GenericArray::default();
@@ -33,7 +33,7 @@ where
pub fn random_iv<C, R>(rng: &mut R) -> IV<C>
where
C: NewCipher,
C: KeyIvInit,
R: RngCore + CryptoRng,
{
let mut iv = GenericArray::default();
@@ -43,14 +43,14 @@ where
pub fn zero_iv<C>() -> IV<C>
where
C: NewCipher,
C: KeyIvInit,
{
GenericArray::default()
}
pub fn iv_from_slice<C>(b: &[u8]) -> &IV<C>
where
C: NewCipher,
C: KeyIvInit,
{
if b.len() != C::NonceSize::to_usize() {
// `from_slice` would have caused a panic about this issue anyway.
@@ -68,9 +68,9 @@ where
// However, do we really expect to ever need it?
#[inline]
pub fn encrypt<C>(key: &CipherKey<C>, iv: &IV<C>, data: &[u8]) -> Vec<u8>
pub fn encrypt<C>(key: &Key<C>, iv: &IV<C>, data: &[u8]) -> Vec<u8>
where
C: StreamCipher + NewCipher,
C: StreamCipher + KeyIvInit,
{
let mut ciphertext = data.to_vec();
encrypt_in_place::<C>(key, iv, &mut ciphertext);
@@ -78,18 +78,18 @@ where
}
#[inline]
pub fn encrypt_in_place<C>(key: &CipherKey<C>, iv: &IV<C>, data: &mut [u8])
pub fn encrypt_in_place<C>(key: &Key<C>, iv: &IV<C>, data: &mut [u8])
where
C: StreamCipher + NewCipher,
C: StreamCipher + KeyIvInit,
{
let mut cipher = C::new(key, iv);
cipher.apply_keystream(data)
}
#[inline]
pub fn decrypt<C>(key: &CipherKey<C>, iv: &IV<C>, ciphertext: &[u8]) -> Vec<u8>
pub fn decrypt<C>(key: &Key<C>, iv: &IV<C>, ciphertext: &[u8]) -> Vec<u8>
where
C: StreamCipher + NewCipher,
C: StreamCipher + KeyIvInit,
{
let mut data = ciphertext.to_vec();
decrypt_in_place::<C>(key, iv, &mut data);
@@ -97,9 +97,9 @@ where
}
#[inline]
pub fn decrypt_in_place<C>(key: &CipherKey<C>, iv: &IV<C>, data: &mut [u8])
pub fn decrypt_in_place<C>(key: &Key<C>, iv: &IV<C>, data: &mut [u8])
where
C: StreamCipher + NewCipher,
C: StreamCipher + KeyIvInit,
{
let mut cipher = C::new(key, iv);
cipher.apply_keystream(data)
@@ -113,7 +113,7 @@ mod tests {
#[cfg(test)]
mod aes_ctr128 {
use super::*;
use aes::Aes128Ctr;
type Aes128Ctr = ctr::Ctr64LE<aes::Aes128>;
#[test]
fn zero_iv_is_actually_zero() {
+4 -1
View File
@@ -1,8 +1,11 @@
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0
use crypto::aes::Aes128Ctr;
use crypto::aes::Aes128;
use crypto::blake3;
use crypto::ctr;
type Aes128Ctr = ctr::Ctr64LE<Aes128>;
// Re-export for ease of use
pub use packet_modes::PacketMode;
+104 -17
View File
@@ -9,12 +9,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
dependencies = [
"cfg-if",
"cipher",
"cipher 0.3.0",
"cpufeatures",
"ctr",
"ctr 0.8.0",
"opaque-debug 0.3.0",
]
[[package]]
name = "aes"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfe0133578c0986e1fe3dfcd4af1cc5b2dd6c3dbf534d69916ce16a2701d40ba"
dependencies = [
"cfg-if",
"cipher 0.4.3",
"cpufeatures",
]
[[package]]
name = "anyhow"
version = "1.0.52"
@@ -92,17 +103,16 @@ dependencies = [
[[package]]
name = "blake3"
version = "1.2.0"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "526c210b4520e416420759af363083471656e819a75e831b8d2c9d5a584f2413"
checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f"
dependencies = [
"arrayref",
"arrayvec",
"cc",
"cfg-if",
"constant_time_eq",
"crypto-mac 0.11.1",
"digest 0.9.0",
"digest 0.10.3",
]
[[package]]
@@ -126,6 +136,15 @@ dependencies = [
"generic-array 0.14.5",
]
[[package]]
name = "block-buffer"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
dependencies = [
"generic-array 0.14.5",
]
[[package]]
name = "block-padding"
version = "0.1.5"
@@ -212,6 +231,16 @@ dependencies = [
"generic-array 0.14.5",
]
[[package]]
name = "cipher"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e"
dependencies = [
"crypto-common",
"inout",
]
[[package]]
name = "config"
version = "0.1.0"
@@ -320,16 +349,17 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
name = "crypto"
version = "0.1.0"
dependencies = [
"aes",
"aes 0.8.1",
"blake3",
"bs58",
"cipher",
"cipher 0.4.3",
"config",
"digest 0.9.0",
"ctr 0.9.1",
"digest 0.10.3",
"ed25519-dalek",
"generic-array 0.14.5",
"hkdf",
"hmac",
"hkdf 0.12.3",
"hmac 0.12.1",
"log",
"nymsphinx-types",
"pemstore",
@@ -350,6 +380,16 @@ dependencies = [
"zeroize",
]
[[package]]
name = "crypto-common"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
dependencies = [
"generic-array 0.14.5",
"typenum",
]
[[package]]
name = "crypto-mac"
version = "0.7.0"
@@ -376,7 +416,16 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
dependencies = [
"cipher",
"cipher 0.3.0",
]
[[package]]
name = "ctr"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d14f329cfbaf5d0e06b5e87fff7e265d2673c5ea7d2c27691a2c107db1442a0"
dependencies = [
"cipher 0.4.3",
]
[[package]]
@@ -430,6 +479,17 @@ dependencies = [
"generic-array 0.14.5",
]
[[package]]
name = "digest"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
"block-buffer 0.10.2",
"crypto-common",
"subtle 2.4.1",
]
[[package]]
name = "dyn-clone"
version = "1.0.4"
@@ -444,7 +504,7 @@ checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372"
dependencies = [
"der",
"elliptic-curve",
"hmac",
"hmac 0.11.0",
"signature",
]
@@ -678,7 +738,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b"
dependencies = [
"digest 0.9.0",
"hmac",
"hmac 0.11.0",
]
[[package]]
name = "hkdf"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
dependencies = [
"hmac 0.12.1",
]
[[package]]
@@ -691,6 +760,15 @@ dependencies = [
"digest 0.9.0",
]
[[package]]
name = "hmac"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
dependencies = [
"digest 0.10.3",
]
[[package]]
name = "humantime"
version = "2.1.0"
@@ -718,6 +796,15 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "inout"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1f03d4ab4d5dc9ec2d219f86c15d2a15fc08239d1cd3b2d6a19717c0a2f443"
dependencies = [
"generic-array 0.14.5",
]
[[package]]
name = "itoa"
version = "1.0.1"
@@ -1304,7 +1391,7 @@ name = "sphinx"
version = "0.1.0"
source = "git+https://github.com/nymtech/sphinx?rev=c494250f2a78bed33a618d470792418eee932859#c494250f2a78bed33a618d470792418eee932859"
dependencies = [
"aes",
"aes 0.7.5",
"arrayref",
"blake2",
"bs58",
@@ -1312,8 +1399,8 @@ dependencies = [
"chacha",
"curve25519-dalek",
"digest 0.9.0",
"hkdf",
"hmac",
"hkdf 0.11.0",
"hmac 0.11.0",
"lioness",
"log",
"rand",
+666 -449
View File
File diff suppressed because it is too large Load Diff