mirror of https://github.com/nucypher/nucypher.git
parent
29e15de664
commit
392506648d
|
@ -91,7 +91,12 @@ class EIP4361Auth(EvmAuth):
|
||||||
|
|
||||||
# enforce a freshness check - reference point is issued at
|
# enforce a freshness check - reference point is issued at
|
||||||
issued_at = maya.MayaDT.from_iso8601(siwe_message.issued_at)
|
issued_at = maya.MayaDT.from_iso8601(siwe_message.issued_at)
|
||||||
if maya.now() > issued_at.add(hours=cls.FRESHNESS_IN_HOURS):
|
now = maya.now()
|
||||||
|
if issued_at > now:
|
||||||
|
raise cls.AuthenticationFailed(
|
||||||
|
f"EIP4361 issued-at datetime is in the future: {issued_at.iso8601()}"
|
||||||
|
)
|
||||||
|
if now > issued_at.add(hours=cls.FRESHNESS_IN_HOURS):
|
||||||
raise cls.StaleMessage(
|
raise cls.StaleMessage(
|
||||||
f"EIP4361 message is more than {cls.FRESHNESS_IN_HOURS} "
|
f"EIP4361 message is more than {cls.FRESHNESS_IN_HOURS} "
|
||||||
f"hours old (issued at {issued_at.iso8601()})"
|
f"hours old (issued at {issued_at.iso8601()})"
|
||||||
|
|
|
@ -202,6 +202,28 @@ def test_authenticate_eip4361(get_random_checksum_address):
|
||||||
not_before_message, not_before_signature.hex(), valid_address_for_signature
|
not_before_message, not_before_signature.hex(), valid_address_for_signature
|
||||||
) # all is well
|
) # all is well
|
||||||
|
|
||||||
|
# issued at in the future (sneaky!)
|
||||||
|
futuristic_issued_at_message_data = dict(siwe_message_data)
|
||||||
|
futuristic_issued_at_message_data["issued_at"] = (
|
||||||
|
f"{maya.now().add(minutes=30).iso8601()}"
|
||||||
|
)
|
||||||
|
futuristic_issued_at_message = SiweMessage(
|
||||||
|
**futuristic_issued_at_message_data
|
||||||
|
).prepare_message()
|
||||||
|
futuristic_issued_at_message_signature = signer.sign_message(
|
||||||
|
account=valid_address_for_signature,
|
||||||
|
message=futuristic_issued_at_message.encode(),
|
||||||
|
)
|
||||||
|
with pytest.raises(
|
||||||
|
EvmAuth.AuthenticationFailed,
|
||||||
|
match="EIP4361 issued-at datetime is in the future",
|
||||||
|
):
|
||||||
|
EIP4361Auth.authenticate(
|
||||||
|
futuristic_issued_at_message,
|
||||||
|
futuristic_issued_at_message_signature.hex(),
|
||||||
|
valid_address_for_signature,
|
||||||
|
)
|
||||||
|
|
||||||
# stale message - issued_at
|
# stale message - issued_at
|
||||||
stale_message_data = dict(siwe_message_data)
|
stale_message_data = dict(siwe_message_data)
|
||||||
stale_message_data["issued_at"] = (
|
stale_message_data["issued_at"] = (
|
||||||
|
|
Loading…
Reference in New Issue