mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-09-13 05:55:22 +00:00
chore,build(deps): remove rand 0.8 dependency
This commit is contained in:
parent
401618c129
commit
583f916cbe
5 changed files with 32 additions and 37 deletions
17
Cargo.lock
generated
17
Cargo.lock
generated
|
@ -223,7 +223,6 @@ dependencies = [
|
||||||
"hex",
|
"hex",
|
||||||
"html-escape",
|
"html-escape",
|
||||||
"mock_instant",
|
"mock_instant",
|
||||||
"rand 0.8.5",
|
|
||||||
"rand 0.9.2",
|
"rand 0.9.2",
|
||||||
"rusqlite",
|
"rusqlite",
|
||||||
"schemars",
|
"schemars",
|
||||||
|
@ -244,7 +243,7 @@ dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"ed25519-dalek",
|
"ed25519-dalek",
|
||||||
"humantime",
|
"humantime",
|
||||||
"rand 0.8.5",
|
"rand 0.9.2",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"rusqlite",
|
"rusqlite",
|
||||||
"serde_jcs",
|
"serde_jcs",
|
||||||
|
@ -1617,8 +1616,6 @@ version = "0.8.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
|
||||||
"rand_chacha 0.3.1",
|
|
||||||
"rand_core 0.6.4",
|
"rand_core 0.6.4",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1628,20 +1625,10 @@ version = "0.9.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
|
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rand_chacha 0.9.0",
|
"rand_chacha",
|
||||||
"rand_core 0.9.3",
|
"rand_core 0.9.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand_chacha"
|
|
||||||
version = "0.3.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
|
||||||
dependencies = [
|
|
||||||
"ppv-lite86",
|
|
||||||
"rand_core 0.6.4",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rand_chacha"
|
name = "rand_chacha"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
|
|
|
@ -43,8 +43,7 @@ optional = true
|
||||||
criterion = "0.7"
|
criterion = "0.7"
|
||||||
ed25519-dalek = { version = "2", features = ["rand_core"] }
|
ed25519-dalek = { version = "2", features = ["rand_core"] }
|
||||||
expect-test = "1"
|
expect-test = "1"
|
||||||
# WAIT: https://github.com/dalek-cryptography/curve25519-dalek/issues/731
|
rand = { version = "0.9", features = ["small_rng"] }
|
||||||
rand08 = { package = "rand", version = "0.8" }
|
|
||||||
sha2 = "0.10"
|
sha2 = "0.10"
|
||||||
|
|
||||||
[lints]
|
[lints]
|
||||||
|
|
|
@ -6,26 +6,27 @@ use blah_types::msg::{ChatPayload, UserRegisterChallengeResponse, UserRegisterPa
|
||||||
use blah_types::{Id, PubKey, SignExt, Signee, UserKey, get_timestamp};
|
use blah_types::{Id, PubKey, SignExt, Signee, UserKey, get_timestamp};
|
||||||
use criterion::{Criterion, criterion_group, criterion_main};
|
use criterion::{Criterion, criterion_group, criterion_main};
|
||||||
use ed25519_dalek::SigningKey;
|
use ed25519_dalek::SigningKey;
|
||||||
use rand::rngs::StdRng;
|
use rand::{Rng, SeedableRng, rngs::SmallRng};
|
||||||
use rand::rngs::mock::StepRng;
|
|
||||||
use rand::{Rng, SeedableRng};
|
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
|
|
||||||
const SEED: u64 = 0xDEAD_BEEF_BEEF_DEAD;
|
const SEED: u64 = 0xDEAD_BEEF_BEEF_DEAD;
|
||||||
|
|
||||||
fn bench_register_pow(c: &mut Criterion) {
|
const MOCK_PRIV_KEY1: [u8; 32] = *b"this is the testing private key1";
|
||||||
let rng = &mut StdRng::seed_from_u64(SEED);
|
const MOCK_PRIV_KEY2: [u8; 32] = *b"that is the 2nd testing privkey.";
|
||||||
|
|
||||||
let id_key_priv = SigningKey::from_bytes(&[0x1A; 32]);
|
fn bench_register_pow(c: &mut Criterion) {
|
||||||
|
let nonce_rng = &mut SmallRng::seed_from_u64(SEED);
|
||||||
|
|
||||||
|
let id_key_priv = SigningKey::from_bytes(&MOCK_PRIV_KEY1);
|
||||||
let id_key = PubKey::from(id_key_priv.verifying_key());
|
let id_key = PubKey::from(id_key_priv.verifying_key());
|
||||||
let act_key_priv = SigningKey::from_bytes(&[0x2B; 32]);
|
let act_key_priv = SigningKey::from_bytes(&MOCK_PRIV_KEY2);
|
||||||
let act_key = PubKey::from(act_key_priv.verifying_key());
|
let act_key = PubKey::from(act_key_priv.verifying_key());
|
||||||
let payload = UserRegisterPayload {
|
let payload = UserRegisterPayload {
|
||||||
id_key: id_key.clone(),
|
id_key: id_key.clone(),
|
||||||
server_url: "http://some.example.com".parse().unwrap(),
|
server_url: "http://some.example.com".parse().unwrap(),
|
||||||
id_url: "http://another.example.com".parse().unwrap(),
|
id_url: "http://another.example.com".parse().unwrap(),
|
||||||
challenge: Some(UserRegisterChallengeResponse::Pow {
|
challenge: Some(UserRegisterChallengeResponse::Pow {
|
||||||
nonce: rng.random(),
|
nonce: nonce_rng.random(),
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
let mut signee = Signee {
|
let mut signee = Signee {
|
||||||
|
@ -37,7 +38,7 @@ fn bench_register_pow(c: &mut Criterion) {
|
||||||
|
|
||||||
c.bench_function("register_pow_iter", |b| {
|
c.bench_function("register_pow_iter", |b| {
|
||||||
b.iter_custom(|iters| {
|
b.iter_custom(|iters| {
|
||||||
signee.nonce = rng.random();
|
signee.nonce = nonce_rng.random();
|
||||||
|
|
||||||
let inst = Instant::now();
|
let inst = Instant::now();
|
||||||
for _ in 0..iters {
|
for _ in 0..iters {
|
||||||
|
@ -69,25 +70,23 @@ fn avg_msg() -> ChatPayload {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn bench_msg_sign_verify(c: &mut Criterion) {
|
fn bench_msg_sign_verify(c: &mut Criterion) {
|
||||||
use rand08::SeedableRng;
|
let id_key_priv = SigningKey::from_bytes(&MOCK_PRIV_KEY1);
|
||||||
|
let act_key_priv = SigningKey::from_bytes(&MOCK_PRIV_KEY2);
|
||||||
let rng = &mut rand08::rngs::StdRng::seed_from_u64(SEED);
|
|
||||||
let id_key_priv = SigningKey::generate(rng);
|
|
||||||
let act_key_priv = SigningKey::generate(rng);
|
|
||||||
let id_key = PubKey::from(id_key_priv.verifying_key());
|
let id_key = PubKey::from(id_key_priv.verifying_key());
|
||||||
let timestamp = 1_727_045_943 << 16; // The time when I writing this code.
|
let timestamp = 1_727_045_943 << 16; // The time when I writing this code.
|
||||||
|
|
||||||
let msg = avg_msg();
|
let msg = avg_msg();
|
||||||
c.bench_function("msg-sign", |b| {
|
c.bench_function("msg-sign", |b| {
|
||||||
let seq_rng = &mut StepRng::new(1, 1);
|
// FIXME: Provide a deterministic signing method using a given nonce?
|
||||||
|
let fixed_nonce_rng = &mut SmallRng::seed_from_u64(SEED);
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
black_box(msg.clone())
|
black_box(msg.clone())
|
||||||
.sign_msg_with(&id_key, &act_key_priv, timestamp, seq_rng)
|
.sign_msg_with(&id_key, &act_key_priv, timestamp, fixed_nonce_rng)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
let rng = &mut StdRng::seed_from_u64(SEED);
|
let rng = &mut SmallRng::seed_from_u64(SEED);
|
||||||
let signed = msg
|
let signed = msg
|
||||||
.sign_msg_with(&id_key, &act_key_priv, timestamp, rng)
|
.sign_msg_with(&id_key, &act_key_priv, timestamp, rng)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
@ -8,7 +8,7 @@ anyhow = "1"
|
||||||
clap = { version = "4", features = ["derive"] }
|
clap = { version = "4", features = ["derive"] }
|
||||||
ed25519-dalek = { version = "2", features = ["pkcs8", "pem", "rand_core"] }
|
ed25519-dalek = { version = "2", features = ["pkcs8", "pem", "rand_core"] }
|
||||||
humantime = "2"
|
humantime = "2"
|
||||||
rand08 = { package = "rand", version = "0.8" }
|
rand = "0.9"
|
||||||
reqwest = { version = "0.12", features = ["json"] }
|
reqwest = { version = "0.12", features = ["json"] }
|
||||||
rusqlite = { version = "0.37", features = ["rusqlite-macros"] }
|
rusqlite = { version = "0.37", features = ["rusqlite-macros"] }
|
||||||
serde_jcs = "0.1.0"
|
serde_jcs = "0.1.0"
|
||||||
|
|
|
@ -9,8 +9,9 @@ use blah_types::{PubKey, SignExt, bitflags, get_timestamp};
|
||||||
use clap::value_parser;
|
use clap::value_parser;
|
||||||
use ed25519_dalek::pkcs8::spki::der::pem::LineEnding;
|
use ed25519_dalek::pkcs8::spki::der::pem::LineEnding;
|
||||||
use ed25519_dalek::pkcs8::{DecodePrivateKey, DecodePublicKey, EncodePrivateKey};
|
use ed25519_dalek::pkcs8::{DecodePrivateKey, DecodePublicKey, EncodePrivateKey};
|
||||||
use ed25519_dalek::{SigningKey, VerifyingKey};
|
use ed25519_dalek::{SECRET_KEY_LENGTH, SigningKey, VerifyingKey};
|
||||||
use humantime::Duration;
|
use humantime::Duration;
|
||||||
|
use rand::TryRngCore;
|
||||||
use reqwest::Url;
|
use reqwest::Url;
|
||||||
use rusqlite::{Connection, named_params, prepare_and_bind};
|
use rusqlite::{Connection, named_params, prepare_and_bind};
|
||||||
use tokio::runtime::Runtime;
|
use tokio::runtime::Runtime;
|
||||||
|
@ -352,7 +353,16 @@ fn main_id(cmd: IdCommand) -> Result<()> {
|
||||||
id_key_file,
|
id_key_file,
|
||||||
id_url,
|
id_url,
|
||||||
} => {
|
} => {
|
||||||
let id_key_priv = SigningKey::generate(&mut rand08::rngs::OsRng);
|
// TODO: Should be `SigningKey::generate` but blocked on
|
||||||
|
// ed25519_dalek 3.0
|
||||||
|
// See: <https://github.com/dalek-cryptography/curve25519-dalek/pull/777>
|
||||||
|
let id_key_priv = {
|
||||||
|
let mut secret = [0u8; SECRET_KEY_LENGTH];
|
||||||
|
rand::rngs::OsRng
|
||||||
|
.try_fill_bytes(&mut secret)
|
||||||
|
.expect("failed to get random");
|
||||||
|
SigningKey::from_bytes(&secret)
|
||||||
|
};
|
||||||
let id_key = PubKey::from(id_key_priv.verifying_key());
|
let id_key = PubKey::from(id_key_priv.verifying_key());
|
||||||
|
|
||||||
let act_key_desc = UserActKeyDesc {
|
let act_key_desc = UserActKeyDesc {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue