Handle context variable for EIP4361 auth signature, where the SIWE message and signature were passed through from the 3rd party app, and not created by TACo itself.

pull/3513/head
derekpierre 2024-06-21 12:17:00 -04:00
parent 17dd57e6a1
commit 184de55bfc
No known key found for this signature in database
2 changed files with 10 additions and 1 deletions

View File

@ -15,14 +15,16 @@ from nucypher.policy.conditions.exceptions import (
USER_ADDRESS_CONTEXT = ":userAddress"
USER_ADDRESS_EIP712_CONTEXT = ":userAddressEIP712"
USER_ADDRESS_EIP4361_CONTEXT = ":userAddressEIP4361"
USER_ADDRESS_EIP4361_EXTERNAL_CONTEXT = ":userAddressExternalEIP4361"
CONTEXT_PREFIX = ":"
CONTEXT_REGEX = re.compile(":[a-zA-Z_][a-zA-Z0-9_]*")
USER_ADDRESS_SCHEMES = {
USER_ADDRESS_CONTEXT: None, # any of the available auth types
USER_ADDRESS_CONTEXT: None, # TODO either EIP712 or EIP4361 for now, but should use the default that is eventually decided (likely EIP4361)
USER_ADDRESS_EIP712_CONTEXT: EvmAuth.AuthScheme.EIP712.value,
USER_ADDRESS_EIP4361_CONTEXT: EvmAuth.AuthScheme.EIP4361.value,
USER_ADDRESS_EIP4361_EXTERNAL_CONTEXT: EvmAuth.AuthScheme.EIP4361.value,
}
@ -90,6 +92,10 @@ _DIRECTIVES = {
_resolve_user_address,
user_address_context_variable=USER_ADDRESS_EIP4361_CONTEXT,
),
USER_ADDRESS_EIP4361_EXTERNAL_CONTEXT: partial(
_resolve_user_address,
user_address_context_variable=USER_ADDRESS_EIP4361_EXTERNAL_CONTEXT,
),
}

View File

@ -8,6 +8,7 @@ from nucypher.policy.conditions.auth.evm import EvmAuth
from nucypher.policy.conditions.context import (
USER_ADDRESS_EIP712_CONTEXT,
USER_ADDRESS_EIP4361_CONTEXT,
USER_ADDRESS_EIP4361_EXTERNAL_CONTEXT,
USER_ADDRESS_SCHEMES,
_resolve_context_variable,
_resolve_user_address,
@ -136,10 +137,12 @@ def test_user_address_context_invalid_typed_data(
[
USER_ADDRESS_EIP712_CONTEXT,
USER_ADDRESS_EIP4361_CONTEXT,
USER_ADDRESS_EIP4361_EXTERNAL_CONTEXT,
],
[
EvmAuth.AuthScheme.EIP4361.value,
EvmAuth.AuthScheme.EIP712.value,
EvmAuth.AuthScheme.EIP712.value,
],
)
),