Bump voprf to v0.5.0-pre.2 (#304)
This commit is contained in:
@@ -23,7 +23,7 @@ jobs:
|
|||||||
- --features serde
|
- --features serde
|
||||||
toolchain:
|
toolchain:
|
||||||
- stable
|
- stable
|
||||||
- 1.57.0
|
- 1.60.0
|
||||||
name: test
|
name: test
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
toolchain:
|
toolchain:
|
||||||
- stable
|
- stable
|
||||||
- 1.57.0
|
- 1.60.0
|
||||||
name: test simple_login command-line example
|
name: test simple_login command-line example
|
||||||
steps:
|
steps:
|
||||||
- name: install expect
|
- name: install expect
|
||||||
@@ -101,7 +101,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
toolchain:
|
toolchain:
|
||||||
- stable
|
- stable
|
||||||
- 1.57.0
|
- 1.60.0
|
||||||
name: test digital_locker command-line example
|
name: test digital_locker command-line example
|
||||||
steps:
|
steps:
|
||||||
- name: install expect
|
- name: install expect
|
||||||
|
|||||||
+8
-6
@@ -8,11 +8,11 @@ license = "Apache-2.0 OR MIT"
|
|||||||
name = "opaque-ke"
|
name = "opaque-ke"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
repository = "https://github.com/novifinancial/opaque-ke"
|
repository = "https://github.com/novifinancial/opaque-ke"
|
||||||
rust-version = "1.57"
|
rust-version = "1.60"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
curve25519 = ["curve25519-dalek"]
|
curve25519 = ["curve25519-dalek/precomputed-tables"]
|
||||||
default = ["ristretto255-voprf", "serde"]
|
default = ["ristretto255-voprf", "serde"]
|
||||||
ristretto255 = ["curve25519-dalek", "voprf/ristretto255"]
|
ristretto255 = ["curve25519-dalek", "voprf/ristretto255"]
|
||||||
ristretto255-voprf = ["ristretto255", "voprf/ristretto255-ciphersuite"]
|
ristretto255-voprf = ["ristretto255", "voprf/ristretto255-ciphersuite"]
|
||||||
@@ -23,8 +23,9 @@ std = ["getrandom"]
|
|||||||
argon2 = { version = "0.4", default-features = false, features = [
|
argon2 = { version = "0.4", default-features = false, features = [
|
||||||
"alloc",
|
"alloc",
|
||||||
], optional = true }
|
], optional = true }
|
||||||
curve25519-dalek = { version = "=4.0.0-pre.5", default-features = false, features = [
|
curve25519-dalek = { version = "=4.0.0-rc.1", default-features = false, features = [
|
||||||
"rand_core",
|
"rand_core",
|
||||||
|
"zeroize",
|
||||||
], optional = true }
|
], optional = true }
|
||||||
derive-where = { version = "1", features = ["zeroize-on-drop"] }
|
derive-where = { version = "1", features = ["zeroize-on-drop"] }
|
||||||
digest = "0.10"
|
digest = "0.10"
|
||||||
@@ -38,7 +39,7 @@ serde_ = { version = "1", package = "serde", default-features = false, features
|
|||||||
"derive",
|
"derive",
|
||||||
], optional = true }
|
], optional = true }
|
||||||
subtle = { version = "2.3", default-features = false }
|
subtle = { version = "2.3", default-features = false }
|
||||||
voprf = { version = "=0.5.0-pre.1", default-features = false, features = [
|
voprf = { version = "=0.5.0-pre.2", default-features = false, features = [
|
||||||
"danger",
|
"danger",
|
||||||
] }
|
] }
|
||||||
zeroize = { version = "1.5", features = ["zeroize_derive"] }
|
zeroize = { version = "1.5", features = ["zeroize_derive"] }
|
||||||
@@ -52,14 +53,15 @@ chacha20poly1305 = "0.10"
|
|||||||
criterion = "0.4"
|
criterion = "0.4"
|
||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
json = "0.12"
|
json = "0.12"
|
||||||
p256 = { version = "0.11", default-features = false, features = [
|
p256 = { version = "0.12", default-features = false, features = [
|
||||||
"hash2curve",
|
"hash2curve",
|
||||||
"voprf",
|
"voprf",
|
||||||
] }
|
] }
|
||||||
proptest = "1"
|
proptest = "1"
|
||||||
rand = "0.8"
|
rand = "0.8"
|
||||||
regex = "1"
|
regex = "1"
|
||||||
rustyline = "10"
|
# MSRV
|
||||||
|
rustyline = "10.1.1"
|
||||||
scrypt = "0.10"
|
scrypt = "0.10"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ opaque-ke = "2"
|
|||||||
|
|
||||||
### Minimum Supported Rust Version
|
### Minimum Supported Rust Version
|
||||||
|
|
||||||
Rust **1.57** or higher.
|
Rust **1.60** or higher.
|
||||||
|
|
||||||
Audit
|
Audit
|
||||||
-----
|
-----
|
||||||
|
|||||||
+47
-59
@@ -38,7 +38,7 @@ impl CipherSuite for Default {
|
|||||||
fn server_setup(c: &mut Criterion) {
|
fn server_setup(c: &mut Criterion) {
|
||||||
let mut rng = OsRng;
|
let mut rng = OsRng;
|
||||||
|
|
||||||
c.bench_function(&format!("server setup ({})", SUFFIX), move |b| {
|
c.bench_function(&format!("server setup ({SUFFIX})"), move |b| {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
ServerSetup::<Default>::new(&mut rng);
|
ServerSetup::<Default>::new(&mut rng);
|
||||||
})
|
})
|
||||||
@@ -49,14 +49,11 @@ fn client_registration_start(c: &mut Criterion) {
|
|||||||
let mut rng = OsRng;
|
let mut rng = OsRng;
|
||||||
let password = b"password";
|
let password = b"password";
|
||||||
|
|
||||||
c.bench_function(
|
c.bench_function(&format!("client registration start ({SUFFIX})"), move |b| {
|
||||||
&format!("client registration start ({})", SUFFIX),
|
b.iter(|| {
|
||||||
move |b| {
|
ClientRegistration::<Default>::start(&mut rng, password).unwrap();
|
||||||
b.iter(|| {
|
})
|
||||||
ClientRegistration::<Default>::start(&mut rng, password).unwrap();
|
});
|
||||||
})
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn server_registration_start(c: &mut Criterion) {
|
fn server_registration_start(c: &mut Criterion) {
|
||||||
@@ -67,19 +64,16 @@ fn server_registration_start(c: &mut Criterion) {
|
|||||||
let client_registration_start_result =
|
let client_registration_start_result =
|
||||||
ClientRegistration::<Default>::start(&mut rng, password).unwrap();
|
ClientRegistration::<Default>::start(&mut rng, password).unwrap();
|
||||||
|
|
||||||
c.bench_function(
|
c.bench_function(&format!("server registration start ({SUFFIX})"), move |b| {
|
||||||
&format!("server registration start ({})", SUFFIX),
|
b.iter(|| {
|
||||||
move |b| {
|
ServerRegistration::<Default>::start(
|
||||||
b.iter(|| {
|
&server_setup,
|
||||||
ServerRegistration::<Default>::start(
|
client_registration_start_result.message.clone(),
|
||||||
&server_setup,
|
username,
|
||||||
client_registration_start_result.message.clone(),
|
)
|
||||||
username,
|
.unwrap();
|
||||||
)
|
})
|
||||||
.unwrap();
|
});
|
||||||
})
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn client_registration_finish(c: &mut Criterion) {
|
fn client_registration_finish(c: &mut Criterion) {
|
||||||
@@ -97,7 +91,7 @@ fn client_registration_finish(c: &mut Criterion) {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
c.bench_function(
|
c.bench_function(
|
||||||
&format!("client registration finish ({})", SUFFIX),
|
&format!("client registration finish ({SUFFIX})"),
|
||||||
move |b| {
|
move |b| {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
client_registration_start_result
|
client_registration_start_result
|
||||||
@@ -139,7 +133,7 @@ fn server_registration_finish(c: &mut Criterion) {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
c.bench_function(
|
c.bench_function(
|
||||||
&format!("server registration finish ({})", SUFFIX),
|
&format!("server registration finish ({SUFFIX})"),
|
||||||
move |b| {
|
move |b| {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
ServerRegistration::finish(client_registration_finish_result.clone().message);
|
ServerRegistration::finish(client_registration_finish_result.clone().message);
|
||||||
@@ -152,7 +146,7 @@ fn client_login_start(c: &mut Criterion) {
|
|||||||
let mut rng = OsRng;
|
let mut rng = OsRng;
|
||||||
let password = b"password";
|
let password = b"password";
|
||||||
|
|
||||||
c.bench_function(&format!("client login start ({})", SUFFIX), move |b| {
|
c.bench_function(&format!("client login start ({SUFFIX})"), move |b| {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
ClientLogin::<Default>::start(&mut rng, password).unwrap();
|
ClientLogin::<Default>::start(&mut rng, password).unwrap();
|
||||||
})
|
})
|
||||||
@@ -184,22 +178,19 @@ fn server_login_start_real(c: &mut Criterion) {
|
|||||||
let password_file = ServerRegistration::finish(client_registration_finish_result.message);
|
let password_file = ServerRegistration::finish(client_registration_finish_result.message);
|
||||||
let client_login_start_result = ClientLogin::<Default>::start(&mut rng, password).unwrap();
|
let client_login_start_result = ClientLogin::<Default>::start(&mut rng, password).unwrap();
|
||||||
|
|
||||||
c.bench_function(
|
c.bench_function(&format!("server login start (real) ({SUFFIX})"), move |b| {
|
||||||
&format!("server login start (real) ({})", SUFFIX),
|
b.iter(|| {
|
||||||
move |b| {
|
ServerLogin::start(
|
||||||
b.iter(|| {
|
&mut rng,
|
||||||
ServerLogin::start(
|
&server_setup,
|
||||||
&mut rng,
|
Some(password_file.clone()),
|
||||||
&server_setup,
|
client_login_start_result.clone().message,
|
||||||
Some(password_file.clone()),
|
username,
|
||||||
client_login_start_result.clone().message,
|
ServerLoginStartParameters::default(),
|
||||||
username,
|
)
|
||||||
ServerLoginStartParameters::default(),
|
.unwrap();
|
||||||
)
|
})
|
||||||
.unwrap();
|
});
|
||||||
})
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn server_login_start_fake(c: &mut Criterion) {
|
fn server_login_start_fake(c: &mut Criterion) {
|
||||||
@@ -209,22 +200,19 @@ fn server_login_start_fake(c: &mut Criterion) {
|
|||||||
let server_setup = ServerSetup::<Default>::new(&mut rng);
|
let server_setup = ServerSetup::<Default>::new(&mut rng);
|
||||||
let client_login_start_result = ClientLogin::<Default>::start(&mut rng, password).unwrap();
|
let client_login_start_result = ClientLogin::<Default>::start(&mut rng, password).unwrap();
|
||||||
|
|
||||||
c.bench_function(
|
c.bench_function(&format!("server login start (fake) ({SUFFIX})"), move |b| {
|
||||||
&format!("server login start (fake) ({})", SUFFIX),
|
b.iter(|| {
|
||||||
move |b| {
|
ServerLogin::start(
|
||||||
b.iter(|| {
|
&mut rng,
|
||||||
ServerLogin::start(
|
&server_setup,
|
||||||
&mut rng,
|
None,
|
||||||
&server_setup,
|
client_login_start_result.clone().message,
|
||||||
None,
|
username,
|
||||||
client_login_start_result.clone().message,
|
ServerLoginStartParameters::default(),
|
||||||
username,
|
)
|
||||||
ServerLoginStartParameters::default(),
|
.unwrap();
|
||||||
)
|
})
|
||||||
.unwrap();
|
});
|
||||||
})
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn client_login_finish(c: &mut Criterion) {
|
fn client_login_finish(c: &mut Criterion) {
|
||||||
@@ -261,7 +249,7 @@ fn client_login_finish(c: &mut Criterion) {
|
|||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
c.bench_function(&format!("client login finish ({})", SUFFIX), move |b| {
|
c.bench_function(&format!("client login finish ({SUFFIX})"), move |b| {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
client_login_start_result
|
client_login_start_result
|
||||||
.clone()
|
.clone()
|
||||||
@@ -318,7 +306,7 @@ fn server_login_finish(c: &mut Criterion) {
|
|||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
c.bench_function(&format!("server login finish ({})", SUFFIX), move |b| {
|
c.bench_function(&format!("server login finish ({SUFFIX})"), move |b| {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
server_login_start_result
|
server_login_start_result
|
||||||
.clone()
|
.clone()
|
||||||
|
|||||||
@@ -275,13 +275,10 @@ fn main() {
|
|||||||
®istered_lockers[locker_index],
|
®istered_lockers[locker_index],
|
||||||
) {
|
) {
|
||||||
Ok(contents) => {
|
Ok(contents) => {
|
||||||
println!("\n\nSuccess! Contents: {}\n\n", contents);
|
println!("\n\nSuccess! Contents: {contents}\n\n");
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
println!(
|
println!("\n\nError encountered, could not open locker: {err}\n\n");
|
||||||
"\n\nError encountered, could not open locker: {}\n\n",
|
|
||||||
err
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,10 +301,7 @@ fn display_lockers(lockers: &[Locker]) {
|
|||||||
locker_numbers.push(i);
|
locker_numbers.push(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
println!(
|
println!("\nCurrently registered locker numbers: {locker_numbers:?}\n");
|
||||||
"\nCurrently registered locker numbers: {:?}\n",
|
|
||||||
locker_numbers
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle readline errors
|
// Handle readline errors
|
||||||
@@ -320,7 +314,7 @@ fn handle_error(err: ReadlineError) {
|
|||||||
println!("CTRL-D");
|
println!("CTRL-D");
|
||||||
}
|
}
|
||||||
err => {
|
err => {
|
||||||
println!("Error: {:?}", err);
|
println!("Error: {err:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -333,7 +327,7 @@ fn get_two_strings(
|
|||||||
string1: Option<String>,
|
string1: Option<String>,
|
||||||
) -> (String, String) {
|
) -> (String, String) {
|
||||||
let query = if string1.is_none() { s1 } else { s2 };
|
let query = if string1.is_none() { s1 } else { s2 };
|
||||||
let readline = rl.readline(&format!("{}: ", query));
|
let readline = rl.readline(&format!("{query}: "));
|
||||||
match readline {
|
match readline {
|
||||||
Ok(line) => match string1 {
|
Ok(line) => match string1 {
|
||||||
Some(x) => (x, line),
|
Some(x) => (x, line),
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ fn handle_error(err: ReadlineError) {
|
|||||||
println!("CTRL-D");
|
println!("CTRL-D");
|
||||||
}
|
}
|
||||||
err => {
|
err => {
|
||||||
println!("Error: {:?}", err);
|
println!("Error: {err:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,7 +241,7 @@ fn get_two_strings(
|
|||||||
string1: Option<String>,
|
string1: Option<String>,
|
||||||
) -> (String, String) {
|
) -> (String, String) {
|
||||||
let query = if string1.is_none() { s1 } else { s2 };
|
let query = if string1.is_none() { s1 } else { s2 };
|
||||||
let readline = rl.readline(&format!("{}: ", query));
|
let readline = rl.readline(&format!("{query}: "));
|
||||||
match readline {
|
match readline {
|
||||||
Ok(line) => match string1 {
|
Ok(line) => match string1 {
|
||||||
Some(x) => (x, line),
|
Some(x) => (x, line),
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ impl KeGroup for Curve25519 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn public_key(sk: Self::Sk) -> Self::Pk {
|
fn public_key(sk: Self::Sk) -> Self::Pk {
|
||||||
(&ED25519_BASEPOINT_TABLE * &sk).to_montgomery()
|
(ED25519_BASEPOINT_TABLE * &sk).to_montgomery()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn diffie_hellman(pk: Self::Pk, sk: Self::Sk) -> GenericArray<u8, Self::PkLen> {
|
fn diffie_hellman(pk: Self::Pk, sk: Self::Sk) -> GenericArray<u8, Self::PkLen> {
|
||||||
|
|||||||
@@ -38,11 +38,8 @@ impl KeGroup for Ristretto255 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn deserialize_pk(bytes: &[u8]) -> Result<Self::Pk, InternalError> {
|
fn deserialize_pk(bytes: &[u8]) -> Result<Self::Pk, InternalError> {
|
||||||
if bytes.len() != 32 {
|
|
||||||
return Err(InternalError::PointError);
|
|
||||||
}
|
|
||||||
|
|
||||||
CompressedRistretto::from_slice(bytes)
|
CompressedRistretto::from_slice(bytes)
|
||||||
|
.map_err(|_| InternalError::PointError)?
|
||||||
.decompress()
|
.decompress()
|
||||||
.filter(|point| point != &RistrettoPoint::identity())
|
.filter(|point| point != &RistrettoPoint::identity())
|
||||||
.ok_or(InternalError::PointError)
|
.ok_or(InternalError::PointError)
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@
|
|||||||
//!
|
//!
|
||||||
//! ### Minimum Supported Rust Version
|
//! ### Minimum Supported Rust Version
|
||||||
//!
|
//!
|
||||||
//! Rust **1.57** or higher.
|
//! Rust **1.60** or higher.
|
||||||
//!
|
//!
|
||||||
//! # Overview
|
//! # Overview
|
||||||
//!
|
//!
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ fn parse_params(input: &str) -> String {
|
|||||||
let key = iter.next().unwrap().split_whitespace().next().unwrap();
|
let key = iter.next().unwrap().split_whitespace().next().unwrap();
|
||||||
let val = iter.next().unwrap().split_whitespace().next().unwrap();
|
let val = iter.next().unwrap().split_whitespace().next().unwrap();
|
||||||
|
|
||||||
param = format!(" \"{}\": \"{}", key, val);
|
param = format!(" \"{key}\": \"{val}");
|
||||||
} else {
|
} else {
|
||||||
let s = line.trim().to_string();
|
let s = line.trim().to_string();
|
||||||
if s.contains('~') || s.contains('#') {
|
if s.contains('~') || s.contains('#') {
|
||||||
|
|||||||
Reference in New Issue
Block a user