mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 12:19:24 +00:00
Replace crc dependency with our own crc implementation
It's ~30 lines to remove 2 crates in our tree.
This commit is contained in:
16
Cargo.lock
generated
16
Cargo.lock
generated
@@ -1313,21 +1313,6 @@ dependencies = [
|
|||||||
"wasmtime-types",
|
"wasmtime-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crc"
|
|
||||||
version = "3.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe"
|
|
||||||
dependencies = [
|
|
||||||
"crc-catalog",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crc-catalog"
|
|
||||||
version = "2.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crc32fast"
|
name = "crc32fast"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
@@ -4913,7 +4898,6 @@ version = "0.1.4-alpha"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base58-monero",
|
"base58-monero",
|
||||||
"crc",
|
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"dalek-ff-group",
|
"dalek-ff-group",
|
||||||
"digest_auth",
|
"digest_auth",
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ rand_chacha = { version = "0.3", default-features = false }
|
|||||||
# Used to select decoys
|
# Used to select decoys
|
||||||
rand_distr = { version = "0.4", default-features = false }
|
rand_distr = { version = "0.4", default-features = false }
|
||||||
|
|
||||||
crc = { version = "3", default-features = false }
|
|
||||||
sha3 = { version = "0.10", default-features = false }
|
sha3 = { version = "0.10", default-features = false }
|
||||||
pbkdf2 = { version = "0.12", features = ["simple"], default-features = false }
|
pbkdf2 = { version = "0.12", features = ["simple"], default-features = false }
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ use std_shims::{
|
|||||||
use zeroize::{Zeroize, Zeroizing};
|
use zeroize::{Zeroize, Zeroizing};
|
||||||
use rand_core::{RngCore, CryptoRng};
|
use rand_core::{RngCore, CryptoRng};
|
||||||
|
|
||||||
use crc::{Crc, CRC_32_ISO_HDLC};
|
|
||||||
|
|
||||||
use curve25519_dalek::scalar::Scalar;
|
use curve25519_dalek::scalar::Scalar;
|
||||||
|
|
||||||
use crate::{random_scalar, wallet::seed::SeedError};
|
use crate::{random_scalar, wallet::seed::SeedError};
|
||||||
@@ -101,11 +99,38 @@ fn checksum_index(words: &[Zeroizing<String>], lang: &WordList) -> usize {
|
|||||||
*trimmed_words += &trim(w, lang.unique_prefix_length);
|
*trimmed_words += &trim(w, lang.unique_prefix_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
let crc = Crc::<u32>::new(&CRC_32_ISO_HDLC);
|
const fn crc32_table() -> [u32; 256] {
|
||||||
let mut digest = crc.digest();
|
let poly = 0xedb88320u32;
|
||||||
digest.update(trimmed_words.as_bytes());
|
|
||||||
|
|
||||||
usize::try_from(digest.finalize()).unwrap() % words.len()
|
let mut res = [0; 256];
|
||||||
|
let mut i = 0;
|
||||||
|
while i < 256 {
|
||||||
|
let mut entry = i;
|
||||||
|
let mut b = 0;
|
||||||
|
while b < 8 {
|
||||||
|
let trigger = entry & 1;
|
||||||
|
entry >>= 1;
|
||||||
|
if trigger == 1 {
|
||||||
|
entry ^= poly;
|
||||||
|
}
|
||||||
|
b += 1;
|
||||||
|
}
|
||||||
|
res[i as usize] = entry;
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
res
|
||||||
|
}
|
||||||
|
const CRC32_TABLE: [u32; 256] = crc32_table();
|
||||||
|
|
||||||
|
let trimmed_words = trimmed_words.as_bytes();
|
||||||
|
let mut checksum = u32::MAX;
|
||||||
|
for i in 0 .. trimmed_words.len() {
|
||||||
|
checksum = CRC32_TABLE[usize::from(u8::try_from(checksum % 256).unwrap() ^ trimmed_words[i])] ^
|
||||||
|
(checksum >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
usize::try_from(!checksum).unwrap() % words.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert a private key to a seed
|
// Convert a private key to a seed
|
||||||
|
|||||||
Reference in New Issue
Block a user