Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: bump dependencies #122

Merged
merged 1 commit into from
Jun 9, 2023
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
101 changes: 46 additions & 55 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,75 +15,66 @@ env:
CARGO_TERM_COLOR: always

jobs:
build:
test:
name: test ${{ matrix.features }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
features: ["", "--no-default-features"]
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: Swatinem/rust-cache@v1
with:
cache-on-failure: true

- name: Build
run: cargo build --verbose
- name: Build (no default features)
run: cargo build --verbose --no-default-features --locked
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test ${{ matrix.features }}

wasm:
name: Build WASM
name: check WASM
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Install rust
uses: actions-rs/toolchain@v1
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: wasm32-unknown-unknown
profile: minimal
override: true
- uses: Swatinem/rust-cache@v2
- name: check
run: |
cargo check \
--target wasm32-unknown-unknown \
--no-default-features \
--features browser
- uses: Swatinem/rust-cache@v1
with:
cache-on-failure: true

- name: Check
uses: actions-rs/cargo@v1
with:
command: build
args: --verbose --target wasm32-unknown-unknown --no-default-features --features "browser"
clippy:
name: clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@clippy
- name: clippy
run: cargo clippy --workspace --all-targets
env:
RUSTFLAGS: "-D warnings"

test:
docs:
name: docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: Swatinem/rust-cache@v1
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@nightly
with:
cache-on-failure: true
components: rust-docs
- name: doc
run: cargo doc --workspace --no-deps --document-private-items
env:
RUSTDOCFLAGS: "--cfg docsrs -D warnings"

- name: Run tests
run: cargo test --verbose

lint:
fmt:
name: fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
components: rustfmt, clippy
override: true
- uses: Swatinem/rust-cache@v1
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@nightly
with:
cache-on-failure: true

- name: cargo fmt
run: cargo +nightly fmt -- --check
- name: cargo clippy
run: cargo +nightly clippy -- -D warnings
components: rustfmt
- name: fmt --check
run: cargo fmt --all --check
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
target/
Cargo.lock

pkg/
pkg-node/
**/*.rs.bk
Cargo.lock
tarpaulin-report.html
node_modules
.vscode
18 changes: 7 additions & 11 deletions bip32/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,20 @@ repository = "https://github.com/summa-tx/bitcoins-rs"
license = "MIT OR Apache-2.0"

[dependencies]
thiserror = "1.0"
hmac = "0.12"
sha2 = "0.10"
bs58 = "0.4.0"
coins-core = { version = "0.8.3", path = "../core" }
serde = "1.0.105"

k256 = { version = "0.13", features = ["std", "arithmetic"] }
bs58 = "0.5"
digest = "0.10"

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }
hmac = "0.12"
k256 = { version = "0.13", features = ["std", "arithmetic"] }
serde = "1.0"
sha2 = "0.10"
thiserror = "1.0"

[dev-dependencies]
hex = "0.4.2"
hex = "0.4"

[features]
default = ["mainnet"]
mainnet = []
testnet = []

4 changes: 0 additions & 4 deletions bip32/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,3 @@ impl From<std::convert::Infallible> for Bip32Error {
unimplemented!("unreachable, but required by type system")
}
}

// We need to specify the getrandom JS feature, but don't need the crate.
#[cfg(target_arch = "wasm32")]
use getrandom as _;
24 changes: 12 additions & 12 deletions bip39/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
[package]
name = "coins-bip39"
version = "0.8.6"
authors = ["Rohit Narurkar <rohit.narurkar@protonmail.com>", "James Prestwich <james@prestwi.ch>", "0xYYY <0xYYY@pm.me>"]
authors = [
"Rohit Narurkar <rohit.narurkar@protonmail.com>",
"James Prestwich <james@prestwi.ch>",
"0xYYY <0xYYY@pm.me>",
]
edition = "2018"
description = "Bip39 in Rust"
repository = "https://github.com/summa-tx/bitcoins-rs"
repository = "https://github.com/summa-tx/coins"
license = "MIT OR Apache-2.0"

[dependencies]
bitvec = "0.17.4"
coins-bip32 = { version = "0.8.3", path = "../bip32" }

bitvec = "1.0"
hmac = "0.12"
pbkdf2 = "0.12"
rand = "0.8.4"
rand = "0.8"
sha2 = "0.10"
thiserror = "1.0"

# used by all wordlists
once_cell = { version = "1.17.1", optional = true}
once_cell = { version = "1.17", optional = true }

[dev-dependencies]
hex = "0.4.2"

[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.2.3"
default-features = false
features=["js"]
hex = "0.4"

[features]
default = ["all-langs"]
Expand All @@ -50,4 +50,4 @@ italian = ["dep:once_cell"]
japanese = ["dep:once_cell"]
korean = ["dep:once_cell"]
portuguese = ["dep:once_cell"]
spanish = ["dep:once_cell"]
spanish = ["dep:once_cell"]
4 changes: 0 additions & 4 deletions bip39/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,3 @@ pub use self::mnemonic::*;
/// Wordlists
pub mod wordlist;
pub use self::wordlist::*;

// We need to specify the getrandom JS feature, but don't need the crate.
#[cfg(target_arch = "wasm32")]
use getrandom as _;
14 changes: 7 additions & 7 deletions bip39/src/mnemonic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,19 +224,19 @@ where
pub fn new_from_phrase(phrase: &str) -> Result<Self, MnemonicError> {
let words = phrase.split(' ').collect::<Vec<&str>>();

let mut entropy: BitVec<Msb0, u8> = BitVec::new();
let mut entropy: BitVec<u8, Msb0> = BitVec::new();
for word in words {
let index = W::get_index(word)?;
let index_u8: [u8; 2] = (index as u16).to_be_bytes();

// 11-bits per word as per BIP-39, and max index (2047) can be represented in 11-bits.
let index_slice = &BitVec::from_slice(&index_u8)[5..];

entropy.append(&mut BitVec::<Msb0, u8>::from_bitslice(index_slice));
entropy.append(&mut BitVec::<u8, Msb0>::from_bitslice(index_slice));
}

let mnemonic = Self {
entropy: Entropy::from_slice(entropy)?,
entropy: Entropy::from_slice(entropy.as_raw_slice())?,
_wordlist: PhantomData,
};

Expand All @@ -256,12 +256,12 @@ where
let mut hasher = Sha256::new();
hasher.update(self.entropy.as_ref());
let hash = hasher.finalize();
let hash_0 = BitVec::<Msb0, u8>::from_element(hash[0]);
let hash_0 = BitVec::<u8, Msb0>::from_element(hash[0]);
let (checksum, _) = hash_0.split_at(length / 3);

// Convert the entropy bytes into bits and append the checksum.
let mut encoding = BitVec::<Msb0, u8>::from_slice(self.entropy.as_ref());
encoding.append(&mut checksum.to_vec());
let mut encoding = BitVec::<u8, Msb0>::from_slice(self.entropy.as_ref());
encoding.append(&mut checksum.to_bitvec());

// Compute the phrase in 11 bit chunks which encode an index into the word list
let wordlist = W::get_all();
Expand Down Expand Up @@ -313,7 +313,7 @@ where
}
}

#[cfg(test)]
#[cfg(all(test, feature = "english"))]
mod tests {
use crate::English;
use coins_bip32::enc::{MainnetEncoder, XKeyEncoder};
Expand Down
23 changes: 15 additions & 8 deletions bip39/src/wordlist/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,43 +10,50 @@ pub mod chinese_simplified;
#[cfg(feature = "chinese-simplified")]
pub use self::chinese_simplified::ChineseSimplified;

#[cfg(feature = "chinese-traditional")]
/// The Chinese (Traditional) wordlist
#[cfg(feature = "chinese-traditional")]
pub mod chinese_traditional;
#[cfg(feature = "chinese-traditional")]
pub use super::chinese_traditional::ChineseTraditional;
#[cfg(feature = "czech")]

/// The Czech wordlist
#[cfg(feature = "czech")]
pub mod czech;
#[cfg(feature = "czech")]
pub use super::czech::Czech;
#[cfg(feature = "french")]

/// The French wordlist
#[cfg(feature = "french")]
pub mod french;
#[cfg(feature = "french")]
pub use super::french::French;
#[cfg(feature = "italian")]

/// The Italian wordlist
#[cfg(feature = "italian")]
pub mod italian;
#[cfg(feature = "italian")]
pub use super::italian::Italian;
#[cfg(feature = "japanese")]

/// The Japanese wordlist
#[cfg(feature = "japanese")]
pub mod japanese;
#[cfg(feature = "japanese")]
pub use super::japanese::Japanese;
#[cfg(feature = "korean")]

/// The Korean wordlist
#[cfg(feature = "korean")]
pub mod korean;
#[cfg(feature = "korean")]
pub use super::korean::Korean;
#[cfg(feature = "portuguese")]

/// The Portuguese wordlist
#[cfg(feature = "portuguese")]
pub mod portuguese;
#[cfg(feature = "portuguese")]
pub use super::portuguese::Portuguese;
#[cfg(feature = "spanish")]

/// The Spanish wordlist
#[cfg(feature = "spanish")]
pub mod spanish;
#[cfg(feature = "spanish")]
pub use super::spanish::Spanish;
Expand Down
18 changes: 9 additions & 9 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@ version = "0.8.3"
authors = ["James Prestwich <james@prestwi.ch>"]
edition = "2018"
description = "Core library for coins-bip32 and coins-bip39"
repository = "https://github.com/summa-tx/bitcoins-rs"
repository = "https://github.com/summa-tx/coins"
license = "MIT OR Apache-2.0"

[dependencies]
bech32 = "0.7.2"
hex = "0.4.2"
base64 = "0.21"
bech32 = "0.9"
bs58 = { version = "0.5", features = ["check"] }
hex = "0.4"
serde = { version = "1.0", features = ["derive"] }
serde_derive = "1.0"
thiserror = "1.0"
base64 = "0.21.0"
serde_derive = "1.0.106"
serde = { version = "1.0.106", features = ["derive"] }
bs58 = { version = "0.4.0", features = ["check"] }

# update in parallel
generic-array = "0.14.4"
digest = "0.10"
generic-array = "0.14"
ripemd = "0.1"
sha2 = "0.10"
sha3 = "0.10"
ripemd = "0.1"
4 changes: 2 additions & 2 deletions core/src/enc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,13 @@ pub type EncodingResult<T> = Result<T, EncodingError>;
pub fn encode_bech32(hrp: &str, v: u8, h: &[u8]) -> EncodingResult<String> {
let mut v = vec![u5::try_from_u8(v)?];
v.extend(&h.to_base32());
b32_encode(hrp, &v).map_err(|v| v.into())
b32_encode(hrp, &v, bech32::Variant::Bech32).map_err(|v| v.into())
}

/// Decode a witness program from a bech32 string. Caller specifies an expected HRP. If a
/// different HRP is found, returns `WrongHrp`.
pub fn decode_bech32(expected_hrp: &str, s: &str) -> EncodingResult<(u8, Vec<u8>)> {
let (hrp, data) = b32_decode(s)?;
let (hrp, data, _variant) = b32_decode(s)?;
if hrp != expected_hrp {
return Err(EncodingError::WrongHrp {
got: hrp,
Expand Down
Loading