Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ git = "https://github.com/BitBoxSwiss/rust-bip32-ed25519"
tag = "v0.2.1"
replace-with = "vendored-sources"

[source."git+https://github.com/benma/rust-bip39.git?branch=bb02"]
git = "https://github.com/benma/rust-bip39.git"
branch = "bb02"
[source."git+https://github.com/BitBoxSwiss/rust-bip39.git?branch=bitbox-20250922"]
git = "https://github.com/BitBoxSwiss/rust-bip39.git"
branch = "bitbox-20250922"
replace-with = "vendored-sources"

[source.vendored-sources]
Expand Down
2 changes: 1 addition & 1 deletion external/vendor/bip39/.cargo-checksum.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"files":{".editorconfig":"cfca97a9600b0581127f3075083447e3221a823b937e940bb87d9747175a9adb",".github/workflows/rust.yml":"8f69f78c671bd2ec88803bbcefec49055a6a2b24c276d2d0de8aef5c441c8089",".rustfmt.toml":"090f8fdb44474290d98f32e9b69f7d9d9806cb17874aed6b64e3e3ebb258f781","CHANGELOG.md":"30b9addc19f1f923d252ac262eaaed7ee4dc28e39a9784f74b7d39dea80946a4","Cargo-minimal.lock":"f26f1c7bf57f8120047d15fc8c90f2be101ccb3a4c093da79c2089d431aa95d6","Cargo.toml":"a9048e13d747618996fbc221205304b7a38dde0708961e8fe5758b4e7bf001be","LICENSE":"7179683e8000e6bdc9bbc60d85edf0a4ac8e76f951857f54fcb775d5886f1309","README.md":"d7e0e2aae5ba9e3b285107a16b9a719ce3cc8d52449032656e46fc9f455ac180","benches/bench.rs":"84781745a31f1a63c761d5c6bfcaabf8b2f8f570645a46a7ef0dd030958e866f","contrib/test.sh":"7f659d719cd4d9ffe741615dda795dd314aa08f9cffdd3e94821d8ba2f211291","src/internal_macros.rs":"76710d6d4eb360e40931344e8119b5e21d1d40f25bf1965ab95413f528e5373e","src/language/chinese_simplified.rs":"379581a1a5de22d783bcfeb807c0fca1fe1a3a0be804c1a86448285bff42ed24","src/language/chinese_traditional.rs":"60cd3fe7696d2be88ec9569d9fa16cf1381f23a9f97674d54459e284b9dad103","src/language/czech.rs":"80555a97108ba7d86e536d98585ccbede6ddfe0cd91c01e8a05e5cf4eaff453c","src/language/english.rs":"3f4d2e39891d12d8193741c68663d29f568606cec65c864eff7e3231f0d29693","src/language/french.rs":"b51846bb6f7cd8960499a32c10c1767ef87f2dd052d09bccf082189af3dcc36d","src/language/italian.rs":"17c46fefcc8f67884867cd70240f4c1e2813408ef65912cbce70b925d55d7c59","src/language/japanese.rs":"fc3860147c5cee29eab715499e748de7d29626fc8b279a7761f79a08235aab2e","src/language/korean.rs":"e0e982106c18911389e7d8c7eda92155681f7d60bd19b895196316d2ef195e90","src/language/mod.rs":"870151f8c2b72a7b3b7a26566b73126fe7ba217370c6e52a77586916a240f9e1","src/language/portuguese.rs":"3ff2f0fcf0902907097f53c1f84293109a8368e76a0b725e6a7b8eed106f80e9","src/language/spanish.rs":"d4bb09a9eb9d1a54fed4d6d32b110038a998c59dc77f7bb79df5d6738d69bc0e","src/lib.rs":"6a15087ec5f8dc8a016a05256bc23b4ae1209eaba1109f439d2f65fc9ff6a4c3","src/pbkdf2.rs":"f5c255f7c795f8c74e6defda589fdb8907a349ddaf0249418ccd35635a6616d7"},"package":null}
{"files":{".editorconfig":"cfca97a9600b0581127f3075083447e3221a823b937e940bb87d9747175a9adb",".github/workflows/rust.yml":"8f69f78c671bd2ec88803bbcefec49055a6a2b24c276d2d0de8aef5c441c8089",".rustfmt.toml":"090f8fdb44474290d98f32e9b69f7d9d9806cb17874aed6b64e3e3ebb258f781","CHANGELOG.md":"30b9addc19f1f923d252ac262eaaed7ee4dc28e39a9784f74b7d39dea80946a4","Cargo-minimal.lock":"f26f1c7bf57f8120047d15fc8c90f2be101ccb3a4c093da79c2089d431aa95d6","Cargo.toml":"8f90f307f5464fe32c615b98162bc94e1dcd07e80848f6ffeebf4bf2a56a6bdd","LICENSE":"7179683e8000e6bdc9bbc60d85edf0a4ac8e76f951857f54fcb775d5886f1309","README.md":"d7e0e2aae5ba9e3b285107a16b9a719ce3cc8d52449032656e46fc9f455ac180","benches/bench.rs":"84781745a31f1a63c761d5c6bfcaabf8b2f8f570645a46a7ef0dd030958e866f","contrib/test.sh":"7f659d719cd4d9ffe741615dda795dd314aa08f9cffdd3e94821d8ba2f211291","src/internal_macros.rs":"76710d6d4eb360e40931344e8119b5e21d1d40f25bf1965ab95413f528e5373e","src/language/chinese_simplified.rs":"379581a1a5de22d783bcfeb807c0fca1fe1a3a0be804c1a86448285bff42ed24","src/language/chinese_traditional.rs":"60cd3fe7696d2be88ec9569d9fa16cf1381f23a9f97674d54459e284b9dad103","src/language/czech.rs":"80555a97108ba7d86e536d98585ccbede6ddfe0cd91c01e8a05e5cf4eaff453c","src/language/english.rs":"3f4d2e39891d12d8193741c68663d29f568606cec65c864eff7e3231f0d29693","src/language/french.rs":"b51846bb6f7cd8960499a32c10c1767ef87f2dd052d09bccf082189af3dcc36d","src/language/italian.rs":"17c46fefcc8f67884867cd70240f4c1e2813408ef65912cbce70b925d55d7c59","src/language/japanese.rs":"fc3860147c5cee29eab715499e748de7d29626fc8b279a7761f79a08235aab2e","src/language/korean.rs":"e0e982106c18911389e7d8c7eda92155681f7d60bd19b895196316d2ef195e90","src/language/mod.rs":"870151f8c2b72a7b3b7a26566b73126fe7ba217370c6e52a77586916a240f9e1","src/language/portuguese.rs":"3ff2f0fcf0902907097f53c1f84293109a8368e76a0b725e6a7b8eed106f80e9","src/language/spanish.rs":"d4bb09a9eb9d1a54fed4d6d32b110038a998c59dc77f7bb79df5d6738d69bc0e","src/lib.rs":"e0b61730e7ac073d94cb1d10796c08d93d2c6bccf8e8606b08b2f3993c1d75d4","src/pbkdf2.rs":"30a2553fa0a7b294f63fbe7487c7cce5a9d34bb96c1ee985cdddf693aa79641c"},"package":null}
7 changes: 7 additions & 0 deletions external/vendor/bip39/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,10 @@ bitcoin_hashes = ">=0.12,<0.15"
[dev-dependencies.bip39]
path = "."
features = ["rand"]

[dev-dependencies.tokio]
version = "1"
features = [
"macros",
"rt",
]
34 changes: 32 additions & 2 deletions external/vendor/bip39/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,27 @@ impl Mnemonic {
seed
}

/// Async version of `to_seed_normalized`.
pub async fn to_seed_normalized_async(
&self,
normalized_passphrase: &str,
yield_now: impl AsyncFn(),
) -> [u8; 64] {
const PBKDF2_ROUNDS: usize = 2048;
const PBKDF2_BYTES: usize = 64;

let mut seed = [0u8; PBKDF2_BYTES];
pbkdf2::pbkdf2_async(
self.words(),
normalized_passphrase.as_bytes(),
PBKDF2_ROUNDS,
&mut seed,
yield_now,
)
.await;
seed
}

/// Convert to seed bytes.
#[cfg(feature = "unicode-normalization")]
pub fn to_seed<'a, P: Into<Cow<'a, str>>>(&self, passphrase: P) -> [u8; 64] {
Expand Down Expand Up @@ -729,8 +750,8 @@ mod tests {
}
}

#[test]
fn test_vectors_english() {
#[tokio::test]
async fn test_vectors_english() {
// These vectors are tuples of
// (entropy, mnemonic, seed)
let test_vectors = [
Expand Down Expand Up @@ -882,6 +903,15 @@ mod tests {
mnemonic_str
);

assert_eq!(
&seed[..],
&mnemonic
.to_seed_normalized_async("TREZOR", tokio::task::yield_now)
.await[..],
"failed vector: {}",
mnemonic_str
);

#[cfg(feature = "unicode-normalization")]
{
assert_eq!(&mnemonic.to_string(), mnemonic_str, "failed vector: {}", mnemonic_str);
Expand Down
38 changes: 38 additions & 0 deletions external/vendor/bip39/src/pbkdf2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,41 @@ pub(crate) fn pbkdf2<M>(mnemonic: M, unprefixed_salt: &[u8], c: usize, res: &mut
}
}
}

pub(crate) async fn pbkdf2_async<M>(
mnemonic: M,
unprefixed_salt: &[u8],
c: usize,
res: &mut [u8],
yield_now: impl AsyncFn(),
) where
M: Iterator<Item = &'static str> + Clone,
{
let prf = create_hmac_engine(mnemonic);

for (i, chunk) in res.chunks_mut(sha512::Hash::LEN).enumerate() {
for v in chunk.iter_mut() {
*v = 0;
}

let mut salt = {
let mut prfc = prf.clone();
prfc.input(SALT_PREFIX.as_bytes());
prfc.input(unprefixed_salt);
prfc.input(&u32_to_array_be((i + 1) as u32));

let salt = hmac::Hmac::from_engine(prfc).to_byte_array();
xor(chunk, &salt);
salt
};

for _ in 1..c {
let mut prfc = prf.clone();
prfc.input(&salt);
salt = hmac::Hmac::from_engine(prfc).to_byte_array();

xor(chunk, &salt);
yield_now().await;
}
}
}
1 change: 1 addition & 0 deletions external/vendor/futures-core/.cargo-checksum.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"files":{".cargo_vcs_info.json":"8e7b8a227215b5c1dd862396cd4c6f4bea54f83431aaf38663c3bd2d4dae06af","Cargo.toml":"c0ee4bd5904127f284fff848d01d9e6539e1762e6c1291f55025a9bf0b754827","Cargo.toml.orig":"2a9ede068bd90580bfd9c86cfe6462771b2f61bffe519d10240ccd6551b8ac7a","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","README.md":"e8258273fed6f1796485777655118f2369fd3f000191e9d8cdbd10bf052946a9","src/future.rs":"bdbe034548271aef0c3dd8a6d087a5861e5920848c9e33a8949dbc40407c0ca7","src/lib.rs":"e545004177a7cd13257a3a562d2d44a5e0cff45687fc912b69e3d510fa397396","src/stream.rs":"11f0b4360287dd870c1b674db84f2452ddc38fbaf475cca27d374b65211af72d","src/task/__internal/atomic_waker.rs":"0418206de25768f691944c81f61ccec2c362751e56757bf812385c8ef01081fe","src/task/__internal/mod.rs":"1cc15fd61942a29ea558c5f4d5782e46adcfd914cab82be084a6882fa9afc122","src/task/mod.rs":"e213602a2fe5ae78ad5f1ca20e6d32dcbab17aba5b6b072fb927a72da99b4a11","src/task/poll.rs":"74c2717c1f9a37587a367da1b690d1cd2312e95dbaffca42be4755f1cd164bb8"},"package":"05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"}
6 changes: 6 additions & 0 deletions external/vendor/futures-core/.cargo_vcs_info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"git": {
"sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38"
},
"path_in_vcs": "futures-core"
}
65 changes: 65 additions & 0 deletions external/vendor/futures-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.36"
name = "futures-core"
version = "0.3.31"
build = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = """
The core traits and types in for the `futures` library.
"""
homepage = "https://rust-lang.github.io/futures-rs"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/futures-rs"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]

[lib]
name = "futures_core"
path = "src/lib.rs"

[dependencies.portable-atomic]
version = "1.3"
features = ["require-cas"]
optional = true
default-features = false

[dev-dependencies]

[features]
alloc = []
cfg-target-has-atomic = []
default = ["std"]
std = ["alloc"]
unstable = []

[lints.rust]
missing_debug_implementations = "warn"
rust_2018_idioms = "warn"
single_use_lifetimes = "warn"
unreachable_pub = "warn"

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(futures_sanitizer)"]
34 changes: 34 additions & 0 deletions external/vendor/futures-core/Cargo.toml.orig

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading