Skip to content

Commit 5f3e45c

Browse files
committed
added support to wallet_solution metadata type
1 parent 76fd1f0 commit 5f3e45c

1 file changed

Lines changed: 4 additions & 5 deletions

File tree

pyeudiw/satosa/utils/validation.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
OAUTH_CLIENT_ATTESTATION_POP_HEADER = "HTTP_OAUTH_CLIENT_ATTESTATION_POP"
2222
OAUTH_CLIENT_ATTESTATION_HEADER = "HTTP_OAUTH_CLIENT_ATTESTATION"
2323
DPOP_HEADER = "HTTP_DPOP"
24+
METADATA_TYPE_WALLET_PROVIDER = "wallet_solution"
2425

2526
logger = logging.getLogger(__name__)
2627

@@ -204,13 +205,11 @@ def validate_oauth_client_attestation(client_attestation: str, authority_hints:
204205
logger.error("Invalid OAuth-Client-Attestation: %s", exc)
205206
raise InvalidRequestException("JWT validation failed: OAuth-Client-Attestation-PoP invalid structure") from exc
206207

207-
if not (iss_ec_payload := validate_subject_trust_chain(attestation_jwt_payload["iss"], authority_hints, httpc_params)):
208+
if not (iss_ec_jwt := validate_subject_trust_chain(attestation_jwt_payload["iss"], authority_hints, httpc_params)):
208209
raise InvalidRequestException("Invalid Trust Chain: Cannot verify issuer for OAuth-Client-Attestation")
209210

210-
def extract_core_jwks() -> list[dict]: #todo generalize
211-
return iss_ec_payload.get("metadata", {}).get("wallet_provider", {}).get("jwks", {}).get("keys", [])
212-
213-
sign_core_jwks = extract_core_jwks()
211+
wallet_provider_metadata = iss_ec_jwt.get("metadata", {}).get(METADATA_TYPE_WALLET_PROVIDER, {})
212+
sign_core_jwks = wallet_provider_metadata.get("jwks", {}).get("keys", [])
214213

215214
#validate OAuth-Client-Attestation
216215
if not validate_jws(client_attestation, sign_core_jwks, signing_alg_values_supported):

0 commit comments

Comments
 (0)