Increase MSRV to 1.51 (#217)

* Increase MSRV to 1.51

* Adding MSRV note

Co-authored-by: Kevin Lewi <[email protected]>
This commit is contained in:
daxpedda
2021-07-30 15:36:57 -07:00
committed by GitHub
co-authored by Kevin Lewi
parent 42e06e0aff
commit 2373ca8680
5 changed files with 60 additions and 52 deletions
+3 -3
View File
@@ -17,7 +17,7 @@ jobs:
- u32_backend - u32_backend
toolchain: toolchain:
- stable - stable
- 1.41.0 - 1.51.0
name: test name: test
steps: steps:
- name: Checkout sources - name: Checkout sources
@@ -94,7 +94,7 @@ jobs:
matrix: matrix:
toolchain: toolchain:
- stable - stable
- 1.41.0 - 1.51.0
name: test simple_login command-line example name: test simple_login command-line example
steps: steps:
- name: install expect - name: install expect
@@ -118,7 +118,7 @@ jobs:
matrix: matrix:
toolchain: toolchain:
- stable - stable
- 1.41.0 - 1.51.0
name: test digital_locker command-line example name: test digital_locker command-line example
steps: steps:
- name: install expect - name: install expect
+21 -21
View File
@@ -20,32 +20,32 @@ serialize = ["serde", "base64", "generic-array/serde", "curve25519-dalek/serde"]
[dependencies] [dependencies]
argon2 = { version = "0.2", optional = true } argon2 = { version = "0.2", optional = true }
base64 = { version = "0.13", optional = true } base64 = { version = "0.13", optional = true }
constant_time_eq = "0.1.5" constant_time_eq = "0.1"
curve25519-dalek = { version = "3.1.0", default-features = false, features = ["std"] } curve25519-dalek = { version = "3", default-features = false, features = ["std"] }
digest = "0.9.0" digest = "0.9"
displaydoc = "0.1.7" displaydoc = "0.2"
generic-array = "0.14.4" generic-array = "0.14"
generic-bytes = { version = "0.1.0" } generic-bytes = { version = "0.1" }
hkdf = "0.11.0" hkdf = "0.11"
hmac = "0.11.0" hmac = "0.11"
rand = "0.8" rand = "0.8"
serde = { version = "1", features = ["derive"], optional = true } serde = { version = "1", features = ["derive"], optional = true }
subtle = { version = "2.3.0", default-features = false } subtle = { version = "2.3", default-features = false }
thiserror = "1.0.22" thiserror = "1"
zeroize = { version = "~1.1.1", features = ["zeroize_derive"] } zeroize = { version = "1", features = ["zeroize_derive"] }
[dev-dependencies] [dev-dependencies]
anyhow = "1.0.35" anyhow = "1"
base64 = "0.13.0" base64 = "0.13"
bincode = "1" bincode = "1"
chacha20poly1305 = "0.7.1" chacha20poly1305 = "0.8"
criterion = "=0.3.4" criterion = "0.3"
hex = "0.4.2" hex = "0.4"
lazy_static = "1.4.0" lazy_static = "1"
serde_json = "1.0.60" serde_json = "1"
sha2 = "0.9.2" sha2 = "0.9"
proptest = "0.10.1" proptest = "1"
rustyline = "6.3.0" rustyline = "8"
[[bench]] [[bench]]
name = "oprf" name = "oprf"
+4
View File
@@ -25,6 +25,10 @@ Add the following line to the dependencies of your `Cargo.toml`:
opaque-ke = "0.6.0" opaque-ke = "0.6.0"
``` ```
### Minimum Supported Rust Version
Rust **1.51** or higher.
Resources Resources
--------- ---------
+28 -28
View File
@@ -40,23 +40,23 @@ pub enum InternalPakeError<T = Infallible> {
HmacError, HmacError,
/// Computing the slow hashing function failed /// Computing the slow hashing function failed
SlowHashError, SlowHashError,
/// This error occurs when the envelope seal fails /** This error occurs when the envelope seal fails
/// Constructing the envelope seal failed. Constructing the envelope seal failed. */
SealError, SealError,
/// This error occurs when the envelope seal open fails /** This error occurs when the envelope seal open fails
/// Opening the envelope seal failed. Opening the envelope seal failed. */
SealOpenError, SealOpenError,
/// This error occurs when the envelope seal open hmac check fails /** This error occurs when the envelope seal open hmac check fails
/// HMAC check in seal open failed. HMAC check in seal open failed. */
SealOpenHmacError, SealOpenHmacError,
/// This error occurs when the envelope cannot be constructed properly /** This error occurs when the envelope cannot be constructed properly
/// based on the credentials that were specified to be required. based on the credentials that were specified to be required. */
InvalidEnvelopeStructureError, InvalidEnvelopeStructureError,
/// This error occurs when attempting to open an envelope of the wrong /** This error occurs when attempting to open an envelope of the wrong
/// type (base mode, custom identifier) type (base mode, custom identifier) */
IncompatibleEnvelopeModeError, IncompatibleEnvelopeModeError,
/// This error occurs when the envelope is opened and deserialization /** This error occurs when the envelope is opened and deserialization
/// fails fails */
UnexpectedEnvelopeContentsError, UnexpectedEnvelopeContentsError,
} }
@@ -137,12 +137,12 @@ impl InternalPakeError {
/// Represents an error in password checking /// Represents an error in password checking
#[derive(Clone, Display, Eq, Hash, PartialEq)] #[derive(Clone, Display, Eq, Hash, PartialEq)]
pub enum PakeError<T = Infallible> { pub enum PakeError<T = Infallible> {
/// This error results from an internal error during PRF construction /** This error results from an internal error during PRF construction
///
/// Internal error during PRF verification: {0} Internal error during PRF verification: {0} */
CryptoError(InternalPakeError<T>), CryptoError(InternalPakeError<T>),
/// This error occurs when the server object that is being called finish() on is malformed /** This error occurs when the server object that is being called finish() on is malformed
/// Incomplete set of keys passed into finish() function Incomplete set of keys passed into finish() function */
IncompleteKeysError, IncompleteKeysError,
/// The provided server public key doesn't match the sealed one /// The provided server public key doesn't match the sealed one
IncompatibleServerStaticPublicKeyError, IncompatibleServerStaticPublicKeyError,
@@ -209,23 +209,23 @@ impl PakeError {
/// Represents an error in protocol handling /// Represents an error in protocol handling
#[derive(Clone, Display, Eq, Hash, PartialEq)] #[derive(Clone, Display, Eq, Hash, PartialEq)]
pub enum ProtocolError<T = Infallible> { pub enum ProtocolError<T = Infallible> {
/// This error results from an error during password verification /** This error results from an error during password verification
///
/// Internal error during password verification: {0} Internal error during password verification: {0} */
VerificationError(PakeError<T>), VerificationError(PakeError<T>),
/// This error occurs when the inner envelope is malformed /// This error occurs when the inner envelope is malformed
InvalidInnerEnvelopeError, InvalidInnerEnvelopeError,
/// This error occurs when the server answer cannot be handled /** This error occurs when the server answer cannot be handled
/// Server response cannot be handled. Server response cannot be handled. */
ServerError, ServerError,
/// This error occurs when the server specifies an envelope credentials /** This error occurs when the server specifies an envelope credentials
/// format that is invalid format that is invalid */
ServerInvalidEnvelopeCredentialsFormatError, ServerInvalidEnvelopeCredentialsFormatError,
/// This error occurs when the client request cannot be handled /** This error occurs when the client request cannot be handled
/// Client request cannot be handled. Client request cannot be handled. */
ClientError, ClientError,
/// This error occurs when the client detects that the server has /** This error occurs when the client detects that the server has
/// reflected the OPRF value (beta == alpha) reflected the OPRF value (beta == alpha) */
ReflectedValueError, ReflectedValueError,
} }
+4
View File
@@ -8,6 +8,10 @@
//! Note: This implementation is in sync with [draft-irtf-cfrg-opaque-05](https://www.ietf.org/archive/id/draft-irtf-cfrg-opaque-05.html), //! Note: This implementation is in sync with [draft-irtf-cfrg-opaque-05](https://www.ietf.org/archive/id/draft-irtf-cfrg-opaque-05.html),
//! but this specification is subject to change, until the final version published by the IETF. //! but this specification is subject to change, until the final version published by the IETF.
//! //!
//! ### Minimum Supported Rust Version
//!
//! Rust **1.51** or higher.
//!
//! # Overview //! # Overview
//! //!
//! OPAQUE is a protocol between a client and a server. They must first agree on a collection of primitives //! OPAQUE is a protocol between a client and a server. They must first agree on a collection of primitives