chore: update copyright headers to SPDX format and code cleanup (#3)
Publish / publish (release) Successful in 1m2s
Rust CI / cargo fmt (push) Successful in 3s
Rust CI / test (stable / no backend / no frontend) (push) Successful in 2m31s
Rust CI / cargo clippy (push) Successful in 1m24s
Rust CI / test (1.90.0 / no backend / no frontend) (push) Successful in 2m28s
Rust CI / test (1.90.0 / no backend / --features argon2) (push) Successful in 2m35s
Rust CI / test (stable / no backend / --features argon2) (push) Successful in 2m33s
Rust CI / test (1.90.0 / no backend / --features serde) (push) Successful in 2m53s
Rust CI / test (1.90.0 / --features curve25519 / --features argon2) (push) Successful in 2m36s
Rust CI / test (stable / no backend / --features serde) (push) Successful in 2m51s
Rust CI / test (1.90.0 / --features curve25519 / no frontend) (push) Successful in 2m29s
Rust CI / test (stable / --features curve25519 / no frontend) (push) Successful in 2m29s
Rust CI / test (stable / --features curve25519 / --features serde) (push) Successful in 2m55s
Rust CI / test (stable / --features curve25519 / --features argon2) (push) Successful in 2m35s
Rust CI / test (1.90.0 / --features curve25519 / --features serde) (push) Successful in 2m56s
Rust CI / test (stable / --features ecdsa / no frontend) (push) Successful in 2m53s
Rust CI / test (1.90.0 / --features ecdsa / no frontend) (push) Successful in 2m51s
Rust CI / test (1.90.0 / --features ecdsa / --features argon2) (push) Successful in 2m57s
Rust CI / test (1.90.0 / --features ecdsa / --features serde) (push) Successful in 3m20s
Rust CI / test (stable / --features ed25519 / no frontend) (push) Successful in 2m54s
Rust CI / test (stable / --features ecdsa / --features argon2) (push) Successful in 3m0s
Rust CI / test (stable / --features ecdsa / --features serde) (push) Successful in 3m19s
Rust CI / test (1.90.0 / --features ed25519 / no frontend) (push) Successful in 2m52s
Rust CI / test (1.90.0 / --features ed25519 / --features argon2) (push) Successful in 2m57s
Rust CI / test (1.90.0 / --features ristretto255 / no frontend) (push) Successful in 3m2s
Rust CI / test (stable / --features ed25519 / --features argon2) (push) Successful in 3m1s
Rust CI / test (1.90.0 / --features ed25519 / --features serde) (push) Successful in 3m20s
Rust CI / test (stable / --features ed25519 / --features serde) (push) Successful in 3m21s
Rust CI / test (stable / --features ristretto255 / no frontend) (push) Successful in 3m4s
Rust CI / test (1.90.0 / --features ristretto255 / --features argon2) (push) Successful in 3m8s
Rust CI / test (1.90.0 / --features ristretto255 / --features serde) (push) Successful in 3m28s
Rust CI / test (stable / --features ristretto255 / --features argon2) (push) Successful in 3m9s
Rust CI / test (stable / --features ristretto255 / --features serde) (push) Successful in 3m32s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / no frontend) (push) Successful in 5m21s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / no frontend) (push) Successful in 5m11s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / --features argon2) (push) Successful in 5m27s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / --features argon2) (push) Successful in 5m14s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / --features serde) (push) Successful in 5m45s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / --features serde) (push) Successful in 5m58s
Rust CI / test (1.90.0 / --features ristretto255,kem / no frontend) (push) Successful in 3m59s
Rust CI / test (stable / --features ristretto255,kem / no frontend) (push) Successful in 4m0s
Rust CI / test (1.90.0 / --features ristretto255,kem / --features argon2) (push) Successful in 4m12s
Rust CI / test (stable / --features ristretto255,kem / --features argon2) (push) Successful in 4m4s
Rust CI / test (1.90.0 / --features ristretto255,kem / --features serde) (push) Successful in 4m34s
Rust CI / test (stable / --features ristretto255,kem / --features serde) (push) Successful in 4m27s
Rust CI / test simple_login example (push) Successful in 18s
Rust CI / test digital_locker example (push) Successful in 19s
Rust CI / cargo bench compilation () (push) Successful in 1m46s
Rust CI / cargo bench compilation (--features ristretto255) (push) Successful in 1m54s
Rust CI / cargo audit (push) Successful in 6s
Rust CI / no-std (wasm32-unknown-unknown / ristretto255,curve25519,ecdsa,ed25519) (push) Successful in 29s
Rust CI / cargo bench compilation (--features ristretto255,kem) (push) Successful in 2m32s
Rust CI / no-std (wasm32-unknown-unknown / no backend) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / curve25519) (push) Successful in 18s
Rust CI / no-std (thumbv6m-none-eabi / no backend) (push) Successful in 28s
Rust CI / no-std (thumbv6m-none-eabi / curve25519) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / ecdsa) (push) Successful in 18s
Rust CI / no-std (thumbv6m-none-eabi / ecdsa) (push) Successful in 29s
Rust CI / no-std (thumbv6m-none-eabi / ed25519) (push) Successful in 20s
Rust CI / no-std (wasm32-unknown-unknown / ed25519) (push) Successful in 20s
Rust CI / no-std (thumbv6m-none-eabi / ristretto255) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / ristretto255) (push) Successful in 27s
Rust CI / no-std (thumbv6m-none-eabi / ristretto255,curve25519,ecdsa,ed25519) (push) Successful in 18s
Publish / publish (release) Successful in 1m2s
Rust CI / cargo fmt (push) Successful in 3s
Rust CI / test (stable / no backend / no frontend) (push) Successful in 2m31s
Rust CI / cargo clippy (push) Successful in 1m24s
Rust CI / test (1.90.0 / no backend / no frontend) (push) Successful in 2m28s
Rust CI / test (1.90.0 / no backend / --features argon2) (push) Successful in 2m35s
Rust CI / test (stable / no backend / --features argon2) (push) Successful in 2m33s
Rust CI / test (1.90.0 / no backend / --features serde) (push) Successful in 2m53s
Rust CI / test (1.90.0 / --features curve25519 / --features argon2) (push) Successful in 2m36s
Rust CI / test (stable / no backend / --features serde) (push) Successful in 2m51s
Rust CI / test (1.90.0 / --features curve25519 / no frontend) (push) Successful in 2m29s
Rust CI / test (stable / --features curve25519 / no frontend) (push) Successful in 2m29s
Rust CI / test (stable / --features curve25519 / --features serde) (push) Successful in 2m55s
Rust CI / test (stable / --features curve25519 / --features argon2) (push) Successful in 2m35s
Rust CI / test (1.90.0 / --features curve25519 / --features serde) (push) Successful in 2m56s
Rust CI / test (stable / --features ecdsa / no frontend) (push) Successful in 2m53s
Rust CI / test (1.90.0 / --features ecdsa / no frontend) (push) Successful in 2m51s
Rust CI / test (1.90.0 / --features ecdsa / --features argon2) (push) Successful in 2m57s
Rust CI / test (1.90.0 / --features ecdsa / --features serde) (push) Successful in 3m20s
Rust CI / test (stable / --features ed25519 / no frontend) (push) Successful in 2m54s
Rust CI / test (stable / --features ecdsa / --features argon2) (push) Successful in 3m0s
Rust CI / test (stable / --features ecdsa / --features serde) (push) Successful in 3m19s
Rust CI / test (1.90.0 / --features ed25519 / no frontend) (push) Successful in 2m52s
Rust CI / test (1.90.0 / --features ed25519 / --features argon2) (push) Successful in 2m57s
Rust CI / test (1.90.0 / --features ristretto255 / no frontend) (push) Successful in 3m2s
Rust CI / test (stable / --features ed25519 / --features argon2) (push) Successful in 3m1s
Rust CI / test (1.90.0 / --features ed25519 / --features serde) (push) Successful in 3m20s
Rust CI / test (stable / --features ed25519 / --features serde) (push) Successful in 3m21s
Rust CI / test (stable / --features ristretto255 / no frontend) (push) Successful in 3m4s
Rust CI / test (1.90.0 / --features ristretto255 / --features argon2) (push) Successful in 3m8s
Rust CI / test (1.90.0 / --features ristretto255 / --features serde) (push) Successful in 3m28s
Rust CI / test (stable / --features ristretto255 / --features argon2) (push) Successful in 3m9s
Rust CI / test (stable / --features ristretto255 / --features serde) (push) Successful in 3m32s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / no frontend) (push) Successful in 5m21s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / no frontend) (push) Successful in 5m11s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / --features argon2) (push) Successful in 5m27s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / --features argon2) (push) Successful in 5m14s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / --features serde) (push) Successful in 5m45s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / --features serde) (push) Successful in 5m58s
Rust CI / test (1.90.0 / --features ristretto255,kem / no frontend) (push) Successful in 3m59s
Rust CI / test (stable / --features ristretto255,kem / no frontend) (push) Successful in 4m0s
Rust CI / test (1.90.0 / --features ristretto255,kem / --features argon2) (push) Successful in 4m12s
Rust CI / test (stable / --features ristretto255,kem / --features argon2) (push) Successful in 4m4s
Rust CI / test (1.90.0 / --features ristretto255,kem / --features serde) (push) Successful in 4m34s
Rust CI / test (stable / --features ristretto255,kem / --features serde) (push) Successful in 4m27s
Rust CI / test simple_login example (push) Successful in 18s
Rust CI / test digital_locker example (push) Successful in 19s
Rust CI / cargo bench compilation () (push) Successful in 1m46s
Rust CI / cargo bench compilation (--features ristretto255) (push) Successful in 1m54s
Rust CI / cargo audit (push) Successful in 6s
Rust CI / no-std (wasm32-unknown-unknown / ristretto255,curve25519,ecdsa,ed25519) (push) Successful in 29s
Rust CI / cargo bench compilation (--features ristretto255,kem) (push) Successful in 2m32s
Rust CI / no-std (wasm32-unknown-unknown / no backend) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / curve25519) (push) Successful in 18s
Rust CI / no-std (thumbv6m-none-eabi / no backend) (push) Successful in 28s
Rust CI / no-std (thumbv6m-none-eabi / curve25519) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / ecdsa) (push) Successful in 18s
Rust CI / no-std (thumbv6m-none-eabi / ecdsa) (push) Successful in 29s
Rust CI / no-std (thumbv6m-none-eabi / ed25519) (push) Successful in 20s
Rust CI / no-std (wasm32-unknown-unknown / ed25519) (push) Successful in 20s
Rust CI / no-std (thumbv6m-none-eabi / ristretto255) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / ristretto255) (push) Successful in 27s
Rust CI / no-std (thumbv6m-none-eabi / ristretto255,curve25519,ecdsa,ed25519) (push) Successful in 18s
- Added VexaHub copyright alongside original Meta copyright - Replaced verbose license blocks with SPDX-License-Identifier - Minor code improvements Reviewed-on: #3 Co-authored-by: UneBaguette <[email protected]> Co-committed-by: UneBaguette <[email protected]>
This commit was merged in pull request #3.
This commit is contained in:
+2
-6
@@ -1,7 +1,3 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ Forked from [facebook/opaque-ke](https://github.com/facebook/opaque-ke/) at `4.1
|
|||||||
* Added **`cryptography`** to `categories` in `Cargo.toml`
|
* Added **`cryptography`** to `categories` in `Cargo.toml`
|
||||||
* Replaced `Hmac` with `SimpleHmac` throughout for `digest 0.11` compatibility
|
* Replaced `Hmac` with `SimpleHmac` throughout for `digest 0.11` compatibility
|
||||||
* Replaced `bincode` with `postcard` for `no_std` serialization
|
* Replaced `bincode` with `postcard` for `no_std` serialization
|
||||||
|
* Replaced license appendix in files while keeping original copyright
|
||||||
* Re-exported `hybrid_array` from crate root
|
* Re-exported `hybrid_array` from crate root
|
||||||
* Updated `Hash` trait to remove `BlockSizeUser` bounds incompatible with `digest 0.11`
|
* Updated `Hash` trait to remove `BlockSizeUser` bounds incompatible with `digest 0.11`
|
||||||
* Updated `GroupEncoding Repr` bound to `hybrid_array::Array`
|
* Updated `GroupEncoding Repr` bound to `hybrid_array::Array`
|
||||||
|
|||||||
+1
-1
@@ -68,7 +68,7 @@ serde = { version = "1", default-features = false, features = [
|
|||||||
"derive",
|
"derive",
|
||||||
], optional = true }
|
], optional = true }
|
||||||
subtle = { version = "2.6", default-features = false }
|
subtle = { version = "2.6", default-features = false }
|
||||||
voprf = { package = "voprf-vx", version = "1.0.0-pre.0", default-features = false, features = [
|
voprf = { package = "voprf-vx", version = "1.0.0-pre.1", default-features = false, features = [
|
||||||
"danger",
|
"danger",
|
||||||
] }
|
] }
|
||||||
zeroize = { version = "1.9", features = ["zeroize_derive"] }
|
zeroize = { version = "1.9", features = ["zeroize_derive"] }
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate criterion;
|
extern crate criterion;
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Demonstrates an implementation of a server-side secured digital locker using
|
//! Demonstrates an implementation of a server-side secured digital locker using
|
||||||
//! the client's OPAQUE export key, over a command-line interface
|
//! the client's OPAQUE export key, over a command-line interface
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Demonstrates a simple client-server password-based login protocol using
|
//! Demonstrates a simple client-server password-based login protocol using
|
||||||
//! OPAQUE, over a command-line interface
|
//! OPAQUE, over a command-line interface
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
#!/bin/expect -f
|
#!/bin/expect -f
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
# Copyright (c) VexaHub and contributors.
|
||||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
#
|
|
||||||
# This source code is dual-licensed under either the MIT license found in the
|
|
||||||
# LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
# License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
# of this source tree. You may select, at your option, one of the above-listed licenses.
|
|
||||||
|
|
||||||
set timeout 1
|
set timeout 1
|
||||||
spawn cargo run --example digital_locker
|
spawn cargo run --example digital_locker
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
#!/bin/expect -f
|
#!/bin/expect -f
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
# Copyright (c) VexaHub and contributors.
|
||||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
#
|
|
||||||
# This source code is dual-licensed under either the MIT license found in the
|
|
||||||
# LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
# License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
# of this source tree. You may select, at your option, one of the above-listed licenses.
|
|
||||||
|
|
||||||
set timeout 1
|
set timeout 1
|
||||||
spawn cargo run --example simple_login --features argon2
|
spawn cargo run --example simple_login --features argon2
|
||||||
|
|||||||
+4
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Defines the [`CipherSuite`] trait to specify the underlying primitives for
|
//! Defines the [`CipherSuite`] trait to specify the underlying primitives for
|
||||||
//! OPAQUE
|
//! OPAQUE
|
||||||
@@ -36,6 +32,8 @@ where
|
|||||||
Le<<<OprfHash<Self> as CoreProxy>::Core as SmallBlockSizeUser>::_BlockSize, U256>: NonZero,
|
Le<<<OprfHash<Self> as CoreProxy>::Core as SmallBlockSizeUser>::_BlockSize, U256>: NonZero,
|
||||||
// Envelope: Nonce + Hash
|
// Envelope: Nonce + Hash
|
||||||
// MaskedResponse: (Nonce + Hash) + KePk
|
// MaskedResponse: (Nonce + Hash) + KePk
|
||||||
|
// TODO: migrate fully to after hybrid-array v0.5 releases
|
||||||
|
// https://github.com/RustCrypto/hybrid-array/issues/66
|
||||||
OutputSize<OprfHash<Self>>: Add<NonceLen> + ArrayLength,
|
OutputSize<OprfHash<Self>>: Add<NonceLen> + ArrayLength,
|
||||||
Sum<OutputSize<OprfHash<Self>>, NonceLen>: ArrayLength + Add<<KeGroup<Self> as Group>::PkLen>,
|
Sum<OutputSize<OprfHash<Self>>, NonceLen>: ArrayLength + Add<<KeGroup<Self> as Group>::PkLen>,
|
||||||
MaskedResponseLen<Self>: ArrayLength,
|
MaskedResponseLen<Self>: ArrayLength,
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::convert::TryFrom;
|
use core::convert::TryFrom;
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! A list of error types which are produced during an execution of the protocol
|
//! A list of error types which are produced during an execution of the protocol
|
||||||
use core::convert::Infallible;
|
use core::convert::Infallible;
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! A convenience trait for digest bounds used throughout the library
|
//! A convenience trait for digest bounds used throughout the library
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Key Exchange group implementation for Curve25519
|
//! Key Exchange group implementation for Curve25519
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Key Exchange group implementation for Ed25519
|
//! Key Exchange group implementation for Ed25519
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,18 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Implementation for EC curves via [`elliptic_curve`] traits.
|
//! Implementation for EC curves via [`elliptic_curve`] traits.
|
||||||
|
|
||||||
use core::ops::Mul;
|
use core::ops::Mul;
|
||||||
use digest::OutputSizeUser;
|
|
||||||
use digest::block_api::BlockSizeUser;
|
|
||||||
use elliptic_curve::group::GroupEncoding;
|
use elliptic_curve::group::GroupEncoding;
|
||||||
use elliptic_curve::point::NonIdentity;
|
use elliptic_curve::point::NonIdentity;
|
||||||
use elliptic_curve::sec1::{ModulusSize, ToSec1Point};
|
use elliptic_curve::sec1::{ModulusSize, ToSec1Point};
|
||||||
use elliptic_curve::{
|
use elliptic_curve::{
|
||||||
CurveArithmetic, FieldBytesSize, Generate, NonZeroScalar, ProjectivePoint, Scalar, SecretKey,
|
CurveArithmetic, FieldBytesSize, Generate, NonZeroScalar, ProjectivePoint, Scalar, SecretKey,
|
||||||
};
|
};
|
||||||
use generic_array::typenum::{IsGreaterOrEqual, IsLess, IsLessOrEqual, Prod, True, U2, U256};
|
use generic_array::typenum::U2;
|
||||||
use generic_array::{ArrayLength, GenericArray};
|
use generic_array::{ArrayLength, GenericArray};
|
||||||
use rand::{CryptoRng, Rng};
|
use rand::{CryptoRng, Rng};
|
||||||
use voprf::Mode;
|
use voprf::Mode;
|
||||||
@@ -40,12 +35,6 @@ where
|
|||||||
> + ToSec1Point<Self>,
|
> + ToSec1Point<Self>,
|
||||||
// Bounds required by voprf::CipherSuite
|
// Bounds required by voprf::CipherSuite
|
||||||
<Self as voprf::Group>::SecurityLevel: Mul<U2>,
|
<Self as voprf::Group>::SecurityLevel: Mul<U2>,
|
||||||
<<Self as voprf::CipherSuite>::Hash as OutputSizeUser>::OutputSize: ArrayLength
|
|
||||||
+ IsLess<U256>
|
|
||||||
+ IsLessOrEqual<
|
|
||||||
<<Self as voprf::CipherSuite>::Hash as BlockSizeUser>::BlockSize,
|
|
||||||
Output = True,
|
|
||||||
> + IsGreaterOrEqual<Prod<<Self as voprf::Group>::SecurityLevel, U2>, Output = True>,
|
|
||||||
{
|
{
|
||||||
// We don't use `elliptic_curve::PublicKey` because it stores its internals in a
|
// We don't use `elliptic_curve::PublicKey` because it stores its internals in a
|
||||||
// format ideal for serialization and not computation. This is inconsistent with
|
// format ideal for serialization and not computation. This is inconsistent with
|
||||||
@@ -105,11 +94,8 @@ where
|
|||||||
ProjectivePoint<G>: GroupEncoding<
|
ProjectivePoint<G>: GroupEncoding<
|
||||||
Repr = hybrid_array::Array<u8, <FieldBytesSize<G> as ModulusSize>::CompressedPointSize>,
|
Repr = hybrid_array::Array<u8, <FieldBytesSize<G> as ModulusSize>::CompressedPointSize>,
|
||||||
> + ToSec1Point<G>,
|
> + ToSec1Point<G>,
|
||||||
|
// Bounds required by voprf::CipherSuite
|
||||||
<G as voprf::Group>::SecurityLevel: Mul<U2>,
|
<G as voprf::Group>::SecurityLevel: Mul<U2>,
|
||||||
<<G as voprf::CipherSuite>::Hash as OutputSizeUser>::OutputSize: ArrayLength
|
|
||||||
+ IsLess<U256>
|
|
||||||
+ IsLessOrEqual<<<G as voprf::CipherSuite>::Hash as BlockSizeUser>::BlockSize, Output = True>
|
|
||||||
+ IsGreaterOrEqual<Prod<<G as voprf::Group>::SecurityLevel, U2>, Output = True>,
|
|
||||||
{
|
{
|
||||||
fn diffie_hellman(
|
fn diffie_hellman(
|
||||||
&self,
|
&self,
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Includes the [`Group`] trait and definitions for the key exchange groups
|
//! Includes the [`Group`] trait and definitions for the key exchange groups
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Key Exchange group implementation for ristretto255
|
//! Key Exchange group implementation for ristretto255
|
||||||
|
|
||||||
|
|||||||
+5
-12
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Includes instantiations of key exchange protocols used in the login step for
|
//! Includes instantiations of key exchange protocols used in the login step for
|
||||||
//! OPAQUE
|
//! OPAQUE
|
||||||
@@ -22,7 +18,6 @@ use core::ops::Add;
|
|||||||
use derive_where::derive_where;
|
use derive_where::derive_where;
|
||||||
use digest::Output;
|
use digest::Output;
|
||||||
use digest::block_api::{CoreProxy, SmallBlockSizeUser};
|
use digest::block_api::{CoreProxy, SmallBlockSizeUser};
|
||||||
use generic_array::sequence::Concat;
|
|
||||||
use generic_array::typenum::{IsLess, Le, NonZero, Sum, U2, U256};
|
use generic_array::typenum::{IsLess, Le, NonZero, Sum, U2, U256};
|
||||||
use generic_array::{ArrayLength, GenericArray};
|
use generic_array::{ArrayLength, GenericArray};
|
||||||
use hybrid_array::Array;
|
use hybrid_array::Array;
|
||||||
@@ -39,7 +34,7 @@ use crate::key_exchange::group::Group;
|
|||||||
use crate::key_exchange::shared::{NonceLen, STR_CONTEXT};
|
use crate::key_exchange::shared::{NonceLen, STR_CONTEXT};
|
||||||
use crate::keypair::{PrivateKey, PublicKey};
|
use crate::keypair::{PrivateKey, PublicKey};
|
||||||
use crate::opaque::{Identifiers, MaskedResponse, MaskedResponseLen};
|
use crate::opaque::{Identifiers, MaskedResponse, MaskedResponseLen};
|
||||||
use crate::serialization::{SliceExt, i2osp};
|
use crate::serialization::{ConcatExt, SliceExt, i2osp};
|
||||||
|
|
||||||
/// The key exchange trait.
|
/// The key exchange trait.
|
||||||
pub trait KeyExchange
|
pub trait KeyExchange
|
||||||
@@ -237,10 +232,8 @@ where
|
|||||||
)
|
)
|
||||||
.clone();
|
.clone();
|
||||||
|
|
||||||
Concat::concat(
|
elem.cat(self.masking_nonce)
|
||||||
Concat::concat(elem, self.masking_nonce),
|
.cat(self.masked_response.serialize())
|
||||||
self.masked_response.serialize(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,12 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::ops::Add;
|
use core::ops::Add;
|
||||||
|
|
||||||
use derive_where::derive_where;
|
use derive_where::derive_where;
|
||||||
use digest::block_api::{CoreProxy, SmallBlockSizeUser};
|
use digest::block_api::{CoreProxy, SmallBlockSizeUser};
|
||||||
use digest::{Digest, Mac, Output, OutputSizeUser, Update};
|
use digest::{Digest, Mac, Output, OutputSizeUser, Update};
|
||||||
use generic_array::sequence::Concat;
|
|
||||||
use generic_array::typenum::{IsLess, Le, NonZero, Sum, U1, U2, U32, U256, Unsigned};
|
use generic_array::typenum::{IsLess, Le, NonZero, Sum, U1, U2, U32, U256, Unsigned};
|
||||||
use generic_array::{ArrayLength, GenericArray};
|
use generic_array::{ArrayLength, GenericArray};
|
||||||
use hkdf::SimpleHkdf as Hkdf;
|
use hkdf::SimpleHkdf as Hkdf;
|
||||||
@@ -28,7 +23,7 @@ use crate::errors::{InternalError, ProtocolError};
|
|||||||
use crate::hash::{Hash, OutputSize, ProxyHash};
|
use crate::hash::{Hash, OutputSize, ProxyHash};
|
||||||
use crate::key_exchange::group::Group;
|
use crate::key_exchange::group::Group;
|
||||||
use crate::keypair::{KeyPair, PrivateKey, PublicKey};
|
use crate::keypair::{KeyPair, PrivateKey, PublicKey};
|
||||||
use crate::serialization::{SliceExt, UpdateExt, i2osp};
|
use crate::serialization::{ConcatExt, SliceExt, UpdateExt, i2osp};
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
// Constants //
|
// Constants //
|
||||||
@@ -421,9 +416,7 @@ where
|
|||||||
type Len = Sum<G::SkLen, NonceLen>;
|
type Len = Sum<G::SkLen, NonceLen>;
|
||||||
|
|
||||||
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
||||||
let a = self.client_e_sk.serialize();
|
self.client_e_sk.serialize().cat(self.client_nonce)
|
||||||
|
|
||||||
GenericArray::concat(a, self.client_nonce)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,7 +438,7 @@ where
|
|||||||
type Len = Sum<NonceLen, G::PkLen>;
|
type Len = Sum<NonceLen, G::PkLen>;
|
||||||
|
|
||||||
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
||||||
self.client_nonce.concat(self.client_e_pk.serialize())
|
self.client_nonce.cat(self.client_e_pk.serialize())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -490,6 +483,6 @@ where
|
|||||||
Ke1MessageIterLen<G>: ArrayLength,
|
Ke1MessageIterLen<G>: ArrayLength,
|
||||||
{
|
{
|
||||||
pub(crate) fn serialize(&self) -> GenericArray<u8, Ke1MessageIterLen<G>> {
|
pub(crate) fn serialize(&self) -> GenericArray<u8, Ke1MessageIterLen<G>> {
|
||||||
self.client_nonce.concat(self.client_e_pk.clone())
|
self.client_nonce.cat(self.client_e_pk.clone())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! ECDSA implementation for [`elliptic_curve`] [`Group`] implementations to
|
//! ECDSA implementation for [`elliptic_curve`] [`Group`] implementations to
|
||||||
//! support [`SigmaI`](crate::SigmaI).
|
//! support [`SigmaI`](crate::SigmaI).
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! HashEdDSA implementation for [`SigmaI`](crate::SigmaI). Currently only
|
//! HashEdDSA implementation for [`SigmaI`](crate::SigmaI). Currently only
|
||||||
//! supports [`Ed25519`](crate::Ed25519).
|
//! supports [`Ed25519`](crate::Ed25519).
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::ops::Add;
|
use core::ops::Add;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! An implementation of the SIGMA-I key exchange protocol
|
//! An implementation of the SIGMA-I key exchange protocol
|
||||||
//!
|
//!
|
||||||
@@ -25,7 +21,6 @@ use core::ops::Add;
|
|||||||
use derive_where::derive_where;
|
use derive_where::derive_where;
|
||||||
use digest::block_api::{BlockSizeUser, CoreProxy, SmallBlockSizeUser};
|
use digest::block_api::{BlockSizeUser, CoreProxy, SmallBlockSizeUser};
|
||||||
use digest::{Mac, Output, OutputSizeUser};
|
use digest::{Mac, Output, OutputSizeUser};
|
||||||
use generic_array::sequence::Concat;
|
|
||||||
use generic_array::typenum::{IsLess, Le, NonZero, Sum, U256};
|
use generic_array::typenum::{IsLess, Le, NonZero, Sum, U256};
|
||||||
use generic_array::{ArrayLength, GenericArray};
|
use generic_array::{ArrayLength, GenericArray};
|
||||||
use hmac::{KeyInit, SimpleHmac};
|
use hmac::{KeyInit, SimpleHmac};
|
||||||
@@ -521,16 +516,11 @@ where
|
|||||||
type Len = Ke2StateLen<CS, SIG, KE>;
|
type Len = Ke2StateLen<CS, SIG, KE>;
|
||||||
|
|
||||||
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
||||||
Concat::concat(
|
self.client_s_pk
|
||||||
Concat::concat(
|
.serialize()
|
||||||
Concat::concat(
|
.cat(GenericArray::from_slice(self.session_key.as_slice()).clone())
|
||||||
self.client_s_pk.serialize(),
|
.cat(self.verify_state.serialize())
|
||||||
GenericArray::from_slice(self.session_key.as_slice()).clone(),
|
.cat(GenericArray::from_slice(self.expected_mac.as_slice()).clone())
|
||||||
),
|
|
||||||
self.verify_state.serialize(),
|
|
||||||
),
|
|
||||||
GenericArray::from_slice(self.expected_mac.as_slice()).clone(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -601,9 +591,7 @@ where
|
|||||||
type Len = Sum<SIG::SignatureLen, OutputSize<KEH>>;
|
type Len = Sum<SIG::SignatureLen, OutputSize<KEH>>;
|
||||||
|
|
||||||
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
fn serialize(&self) -> GenericArray<u8, Self::Len> {
|
||||||
Concat::concat(
|
SIG::serialize_signature(&self.signature)
|
||||||
SIG::serialize_signature(&self.signature),
|
.cat(GenericArray::from_slice(self.mac.as_slice()).clone())
|
||||||
GenericArray::from_slice(self.mac.as_slice()).clone(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! PureEdDSA implementation for [`SigmaI`](crate::SigmaI). Currently only
|
//! PureEdDSA implementation for [`SigmaI`](crate::SigmaI). Currently only
|
||||||
//! supports [`Ed25519`](crate::Ed25519).
|
//! supports [`Ed25519`](crate::Ed25519).
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use derive_where::derive_where;
|
use derive_where::derive_where;
|
||||||
use digest::{Output, OutputSizeUser};
|
use digest::{Output, OutputSizeUser};
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! An implementation of the Triple Diffie-Hellman key exchange protocol
|
//! An implementation of the Triple Diffie-Hellman key exchange protocol
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! TripleDH-KEM is a variant of the OPAQUE Triple Diffie-Hellman handshake in
|
//! TripleDH-KEM is a variant of the OPAQUE Triple Diffie-Hellman handshake in
|
||||||
//! which the client supplies a KEM public key in KE1 and the server performs a
|
//! which the client supplies a KEM public key in KE1 and the server performs a
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Contains the keypair types that must be supplied for the OPAQUE API
|
//! Contains the keypair types that must be supplied for the OPAQUE API
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Trait specifying a key stretching function
|
//! Trait specifying a key stretching function
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! An implementation of the OPAQUE augmented password authentication key
|
//! An implementation of the OPAQUE augmented password authentication key
|
||||||
//! exchange protocol
|
//! exchange protocol
|
||||||
|
|||||||
+12
-24
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Contains the messages used for OPAQUE
|
//! Contains the messages used for OPAQUE
|
||||||
|
|
||||||
@@ -12,7 +8,6 @@ use core::ops::Add;
|
|||||||
|
|
||||||
use derive_where::derive_where;
|
use derive_where::derive_where;
|
||||||
use digest::Output;
|
use digest::Output;
|
||||||
use generic_array::sequence::Concat;
|
|
||||||
use generic_array::typenum::{Sum, Unsigned};
|
use generic_array::typenum::{Sum, Unsigned};
|
||||||
use generic_array::{ArrayLength, GenericArray};
|
use generic_array::{ArrayLength, GenericArray};
|
||||||
use hybrid_array::Array;
|
use hybrid_array::Array;
|
||||||
@@ -34,7 +29,7 @@ use crate::keypair::PublicKey;
|
|||||||
use crate::opaque::{
|
use crate::opaque::{
|
||||||
MaskedResponse, MaskedResponseLen, ServerLogin, ServerLoginStartResult, ServerSetup,
|
MaskedResponse, MaskedResponseLen, ServerLogin, ServerLoginStartResult, ServerSetup,
|
||||||
};
|
};
|
||||||
use crate::serialization::SliceExt;
|
use crate::serialization::{ConcatExt, SliceExt};
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// High-level API Structs //
|
// High-level API Structs //
|
||||||
@@ -260,7 +255,7 @@ impl<CS: CipherSuite> RegistrationResponse<CS> {
|
|||||||
self.evaluation_element.value(),
|
self.evaluation_element.value(),
|
||||||
));
|
));
|
||||||
|
|
||||||
elem.concat(self.server_s_pk.serialize())
|
elem.cat(self.server_s_pk.serialize())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Deserialization from bytes
|
/// Deserialization from bytes
|
||||||
@@ -302,13 +297,10 @@ impl<CS: CipherSuite> RegistrationUpload<CS> {
|
|||||||
ArrayLength + Add<EnvelopeLen<CS>>,
|
ArrayLength + Add<EnvelopeLen<CS>>,
|
||||||
RegistrationUploadLen<CS>: ArrayLength,
|
RegistrationUploadLen<CS>: ArrayLength,
|
||||||
{
|
{
|
||||||
Concat::concat(
|
self.client_s_pk
|
||||||
Concat::concat(
|
.serialize()
|
||||||
self.client_s_pk.serialize(),
|
.cat(GenericArray::from_slice(self.masking_key.as_slice()).clone())
|
||||||
GenericArray::from_slice(self.masking_key.as_slice()).clone(),
|
.cat(self.envelope.serialize())
|
||||||
),
|
|
||||||
self.envelope.serialize(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Deserialization from bytes
|
/// Deserialization from bytes
|
||||||
@@ -353,7 +345,7 @@ impl<CS: CipherSuite> CredentialRequest<CS> {
|
|||||||
self.blinded_element.value(),
|
self.blinded_element.value(),
|
||||||
));
|
));
|
||||||
|
|
||||||
elem.concat(self.ke1_message.serialize())
|
elem.cat(self.ke1_message.serialize())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Deserialization from bytes
|
/// Deserialization from bytes
|
||||||
@@ -413,13 +405,9 @@ impl<CS: CipherSuite> CredentialResponse<CS> {
|
|||||||
self.evaluation_element.value(),
|
self.evaluation_element.value(),
|
||||||
));
|
));
|
||||||
|
|
||||||
Concat::concat(
|
elem.cat(self.masking_nonce)
|
||||||
Concat::concat(
|
.cat(self.masked_response.serialize())
|
||||||
Concat::concat(elem, self.masking_nonce),
|
.cat(self.ke2_message.serialize())
|
||||||
self.masked_response.serialize(),
|
|
||||||
),
|
|
||||||
self.ke2_message.serialize(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Deserialization from bytes
|
/// Deserialization from bytes
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! Provides the main OPAQUE API
|
//! Provides the main OPAQUE API
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::ops::Add;
|
use core::ops::Add;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::ops::Add;
|
use core::ops::Add;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
#![allow(unsafe_code)]
|
#![allow(unsafe_code)]
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
//
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
//
|
|
||||||
// To regenerate these test vectors, run:
|
// To regenerate these test vectors, run:
|
||||||
// FULL_TEST_VECTORS_FILE=src/tests/full_test_vectors.rs cargo test --features curve25519,ecdsa,ed25519 -- generate_test_vectors
|
// FULL_TEST_VECTORS_FILE=src/tests/full_test_vectors.rs cargo test --features curve25519,ecdsa,ed25519 -- generate_test_vectors
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::cmp::min;
|
use core::cmp::min;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use std::string::{String, ToString};
|
use std::string::{String, ToString};
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
//! The OPAQUE test vectors taken from Appendix C of
|
//! The OPAQUE test vectors taken from Appendix C of
|
||||||
//! [RFC 9807](https://www.rfc-editor.org/rfc/rfc9807.txt)
|
//! [RFC 9807](https://www.rfc-editor.org/rfc/rfc9807.txt)
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
use core::ops::Add;
|
use core::ops::Add;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
|||||||
+2
-6
@@ -1,10 +1,6 @@
|
|||||||
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
// Copyright (c) VexaHub and contributors.
|
||||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
//
|
|
||||||
// This source code is dual-licensed under either the MIT license found in the
|
|
||||||
// LICENSE-MIT file in the root directory of this source tree or the Apache
|
|
||||||
// License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
||||||
// of this source tree. You may select, at your option, one of the above-listed
|
|
||||||
// licenses.
|
|
||||||
|
|
||||||
#![cfg(test_hsm)]
|
#![cfg(test_hsm)]
|
||||||
#![allow(type_alias_bounds)]
|
#![allow(type_alias_bounds)]
|
||||||
|
|||||||
Reference in New Issue
Block a user