Skip to content

Commit 2d9b5bb

Browse files
committed
Merge branch 'async-bip39'
2 parents 565159b + 1bd474e commit 2d9b5bb

File tree

135 files changed

+17863
-119
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+17863
-119
lines changed

.cargo/config.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ git = "https://github.com/BitBoxSwiss/rust-bip32-ed25519"
1111
tag = "v0.2.1"
1212
replace-with = "vendored-sources"
1313

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

1919
[source.vendored-sources]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +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}
1+
{"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}

external/vendor/bip39/Cargo.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,10 @@ bitcoin_hashes = ">=0.12,<0.15"
116116
[dev-dependencies.bip39]
117117
path = "."
118118
features = ["rand"]
119+
120+
[dev-dependencies.tokio]
121+
version = "1"
122+
features = [
123+
"macros",
124+
"rt",
125+
]

external/vendor/bip39/src/lib.rs

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,27 @@ impl Mnemonic {
557557
seed
558558
}
559559

560+
/// Async version of `to_seed_normalized`.
561+
pub async fn to_seed_normalized_async(
562+
&self,
563+
normalized_passphrase: &str,
564+
yield_now: impl AsyncFn(),
565+
) -> [u8; 64] {
566+
const PBKDF2_ROUNDS: usize = 2048;
567+
const PBKDF2_BYTES: usize = 64;
568+
569+
let mut seed = [0u8; PBKDF2_BYTES];
570+
pbkdf2::pbkdf2_async(
571+
self.words(),
572+
normalized_passphrase.as_bytes(),
573+
PBKDF2_ROUNDS,
574+
&mut seed,
575+
yield_now,
576+
)
577+
.await;
578+
seed
579+
}
580+
560581
/// Convert to seed bytes.
561582
#[cfg(feature = "unicode-normalization")]
562583
pub fn to_seed<'a, P: Into<Cow<'a, str>>>(&self, passphrase: P) -> [u8; 64] {
@@ -729,8 +750,8 @@ mod tests {
729750
}
730751
}
731752

732-
#[test]
733-
fn test_vectors_english() {
753+
#[tokio::test]
754+
async fn test_vectors_english() {
734755
// These vectors are tuples of
735756
// (entropy, mnemonic, seed)
736757
let test_vectors = [
@@ -882,6 +903,15 @@ mod tests {
882903
mnemonic_str
883904
);
884905

906+
assert_eq!(
907+
&seed[..],
908+
&mnemonic
909+
.to_seed_normalized_async("TREZOR", tokio::task::yield_now)
910+
.await[..],
911+
"failed vector: {}",
912+
mnemonic_str
913+
);
914+
885915
#[cfg(feature = "unicode-normalization")]
886916
{
887917
assert_eq!(&mnemonic.to_string(), mnemonic_str, "failed vector: {}", mnemonic_str);

external/vendor/bip39/src/pbkdf2.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,41 @@ pub(crate) fn pbkdf2<M>(mnemonic: M, unprefixed_salt: &[u8], c: usize, res: &mut
126126
}
127127
}
128128
}
129+
130+
pub(crate) async fn pbkdf2_async<M>(
131+
mnemonic: M,
132+
unprefixed_salt: &[u8],
133+
c: usize,
134+
res: &mut [u8],
135+
yield_now: impl AsyncFn(),
136+
) where
137+
M: Iterator<Item = &'static str> + Clone,
138+
{
139+
let prf = create_hmac_engine(mnemonic);
140+
141+
for (i, chunk) in res.chunks_mut(sha512::Hash::LEN).enumerate() {
142+
for v in chunk.iter_mut() {
143+
*v = 0;
144+
}
145+
146+
let mut salt = {
147+
let mut prfc = prf.clone();
148+
prfc.input(SALT_PREFIX.as_bytes());
149+
prfc.input(unprefixed_salt);
150+
prfc.input(&u32_to_array_be((i + 1) as u32));
151+
152+
let salt = hmac::Hmac::from_engine(prfc).to_byte_array();
153+
xor(chunk, &salt);
154+
salt
155+
};
156+
157+
for _ in 1..c {
158+
let mut prfc = prf.clone();
159+
prfc.input(&salt);
160+
salt = hmac::Hmac::from_engine(prfc).to_byte_array();
161+
162+
xor(chunk, &salt);
163+
yield_now().await;
164+
}
165+
}
166+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
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"}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"git": {
3+
"sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38"
4+
},
5+
"path_in_vcs": "futures-core"
6+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
2+
#
3+
# When uploading crates to the registry Cargo will automatically
4+
# "normalize" Cargo.toml files for maximal compatibility
5+
# with all versions of Cargo and also rewrite `path` dependencies
6+
# to registry (e.g., crates.io) dependencies.
7+
#
8+
# If you are reading this file be aware that the original Cargo.toml
9+
# will likely look very different (and much more reasonable).
10+
# See Cargo.toml.orig for the original contents.
11+
12+
[package]
13+
edition = "2018"
14+
rust-version = "1.36"
15+
name = "futures-core"
16+
version = "0.3.31"
17+
build = false
18+
autobins = false
19+
autoexamples = false
20+
autotests = false
21+
autobenches = false
22+
description = """
23+
The core traits and types in for the `futures` library.
24+
"""
25+
homepage = "https://rust-lang.github.io/futures-rs"
26+
readme = "README.md"
27+
license = "MIT OR Apache-2.0"
28+
repository = "https://github.com/rust-lang/futures-rs"
29+
30+
[package.metadata.docs.rs]
31+
all-features = true
32+
rustdoc-args = [
33+
"--cfg",
34+
"docsrs",
35+
]
36+
37+
[lib]
38+
name = "futures_core"
39+
path = "src/lib.rs"
40+
41+
[dependencies.portable-atomic]
42+
version = "1.3"
43+
features = ["require-cas"]
44+
optional = true
45+
default-features = false
46+
47+
[dev-dependencies]
48+
49+
[features]
50+
alloc = []
51+
cfg-target-has-atomic = []
52+
default = ["std"]
53+
std = ["alloc"]
54+
unstable = []
55+
56+
[lints.rust]
57+
missing_debug_implementations = "warn"
58+
rust_2018_idioms = "warn"
59+
single_use_lifetimes = "warn"
60+
unreachable_pub = "warn"
61+
62+
[lints.rust.unexpected_cfgs]
63+
level = "warn"
64+
priority = 0
65+
check-cfg = ["cfg(futures_sanitizer)"]

external/vendor/futures-core/Cargo.toml.orig

Lines changed: 34 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)