Update siwe-rs package to version 0.3.0

This commit is contained in:
silverpill 2022-05-09 16:05:16 +00:00
parent d090363698
commit 75a4dec009
3 changed files with 12 additions and 8 deletions

5
Cargo.lock generated
View file

@ -2786,8 +2786,9 @@ checksum = "cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27"
[[package]]
name = "siwe"
version = "0.2.0"
source = "git+https://github.com/silverpill/siwe-rs?rev=6589eb6fdcffbfb9ee2880906014f5cf71f0f441#6589eb6fdcffbfb9ee2880906014f5cf71f0f441"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86f2d8ae2d4ae58df46e173aa496562ea857ac6a4f0d435ed30fcd19da0aaa79"
dependencies = [
"chrono",
"hex",

View file

@ -63,7 +63,7 @@ serde_yaml = "0.8.17"
# Used to calculate SHA2 hashes
sha2 = "0.9.5"
# Used to verify EIP-4361 signatures
siwe = { git = "https://github.com/silverpill/siwe-rs", rev = "6589eb6fdcffbfb9ee2880906014f5cf71f0f441" }
siwe = "0.3.0"
# Used for creating error types
thiserror = "1.0.24"
# Async runtime

View file

@ -14,22 +14,25 @@ pub fn verify_eip4361_signature(
login_message: &str,
) -> Result<String, ValidationError> {
let message: Message = message.parse()
.map_err(|_| ValidationError("invalid EIP4361 message"))?;
.map_err(|_| ValidationError("invalid EIP-4361 message"))?;
let signature_bytes = <[u8; 65]>::from_hex(signature.trim_start_matches("0x"))
.map_err(|_| ValidationError("invalid signature string"))?;
message.verify(signature_bytes)
.map_err(|_| ValidationError("invalid signature"))?;
if message.domain != instance_host {
return Err(ValidationError("domain doesn't match instance host"));
};
let statement = message.statement
let statement = message.statement.as_ref()
.ok_or(ValidationError("statement is missing"))?;
if statement != login_message {
return Err(ValidationError("statement doesn't match login message"));
};
if !message.valid_now() {
return Err(ValidationError("message is not currently valid"));
};
if message.not_before.is_some() || message.expiration_time.is_some() {
return Err(ValidationError("message shouldn't have expiration time"));
};
message.verify_eip191(&signature_bytes)
.map_err(|_| ValidationError("invalid signature"))?;
// Return wallet address in lower case
let wallet_address = address_to_string(H160(message.address));
Ok(wallet_address)
@ -70,6 +73,6 @@ Issued At: 2022-02-14T22:27:35.500Z";
message, signature,
INSTANCE_HOST, LOGIN_MESSAGE,
).unwrap_err();
assert_eq!(error.to_string(), "invalid EIP4361 message");
assert_eq!(error.to_string(), "invalid EIP-4361 message");
}
}