pyeudiw.satosa.backends.openid4vp.schemas package

Submodules

pyeudiw.satosa.backends.openid4vp.schemas.cnf_schema module

class pyeudiw.satosa.backends.openid4vp.schemas.cnf_schema.CNFSchema(*, jwk: JwkSchema)[source]

Bases: BaseModel

jwk: JwkSchema
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pyeudiw.satosa.backends.openid4vp.schemas.flow module

class pyeudiw.satosa.backends.openid4vp.schemas.flow.RemoteFlowType(*values)[source]

Bases: Enum

CROSS_DEVICE = 'cross_device'
SAME_DEVICE = 'same_device'

pyeudiw.satosa.backends.openid4vp.schemas.response module

class pyeudiw.satosa.backends.openid4vp.schemas.response.AuthorizeResponseDirectPostJwt(response: str)[source]

Bases: object

response: str
class pyeudiw.satosa.backends.openid4vp.schemas.response.AuthorizeResponsePayload(state: str, vp_token: str | list[str] | dict, presentation_submission: dict | None = None)[source]

Bases: object

AuthorizeResponsePayload is a simple schema class for https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-response-parameters only for the case when presentation submission is used over DCQL.

This class is a weaker validation than pyeudiw.satosa.backends.openid4vp.schema.ResponseSchema as it is not meant to validate the _content_ of the response; just that the representation lands with the proper expected claims

presentation_submission: dict | None = None
state: str
vp_token: str | list[str] | dict
class pyeudiw.satosa.backends.openid4vp.schemas.response.ErrorResponsePayload(state: str, error: str, error_description: str | None = None)[source]

Bases: object

error: str
error_description: str | None = None
state: str
class pyeudiw.satosa.backends.openid4vp.schemas.response.ResponseMode(*values)[source]

Bases: str, Enum

direct_post = 'direct_post'
direct_post_jwt = 'direct_post.jwt'
error = 'error'
class pyeudiw.satosa.backends.openid4vp.schemas.response.ResponseSchema(*, state: str | None, nonce: str, vp_token: str, presentation_submission: PresentationSubmissionSchema)[source]

Bases: BaseModel

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

nonce: str
presentation_submission: PresentationSubmissionSchema
state: str | None
vp_token: str

pyeudiw.satosa.backends.openid4vp.schemas.vp_formats module

class pyeudiw.satosa.backends.openid4vp.schemas.vp_formats.Algorithms(*values)[source]

Bases: Enum

es256 = 'ES256'
es384 = 'ES384'
es512 = 'ES512'
rs256 = 'RS256'
rs384 = 'RS384'
rs512 = 'RS512'
class pyeudiw.satosa.backends.openid4vp.schemas.vp_formats.VcSdJwt(*, sd_jwt_alg_values: List[Algorithms] = [], kb_jwt_alg_values: List[Algorithms] = [])[source]

Bases: BaseModel

kb_jwt_alg_values: List[Algorithms]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

sd_jwt_alg_values: List[Algorithms]
class pyeudiw.satosa.backends.openid4vp.schemas.vp_formats.VpFormats(*, vc_sd_jwt: VcSdJwt)[source]

Bases: BaseModel

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

vc_sd_jwt: VcSdJwt

pyeudiw.satosa.backends.openid4vp.schemas.vp_token module

class pyeudiw.satosa.backends.openid4vp.schemas.vp_token.VPTokenHeader(*, alg: str, kid: str, typ: Literal['JWT'])[source]

Bases: BaseModel

alg: str
kid: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

typ: Literal['JWT']
class pyeudiw.satosa.backends.openid4vp.schemas.vp_token.VPTokenPayload(*, iss: HttpUrl, jti: str, aud: HttpUrl, iat: int, exp: int, nonce: str, vp: str)[source]

Bases: BaseModel

aud: HttpUrl
exp: int
iat: int
iss: HttpUrl
jti: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

nonce: str
vp: str

pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation module

class pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation.VPFormatSchema(*, jwt_vp_json: Dict[Literal['alg_values_supported'], List[str]], jwt_vc_json: Dict[Literal['alg_values_supported'], List[str]])[source]

Bases: BaseModel

jwt_vc_json: Dict[Literal['alg_values_supported'], List[str]]
jwt_vp_json: Dict[Literal['alg_values_supported'], List[str]]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation.WalletInstanceAttestationHeader(*, alg: str, typ: Literal['wallet-attestation+jwt'], kid: str, trust_chain: List[str] | None = None)[source]

Bases: BaseModel

alg: str
kid: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

trust_chain: List[str] | None
typ: Literal['wallet-attestation+jwt']
class pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation.WalletInstanceAttestationPayload(*, iss: HttpUrl, sub: str, iat: int, exp: int, aal: HttpUrl, cnf: CNFSchema, type: Literal['WalletInstanceAttestation'] | None = None, policy_uri: HttpUrl | None = None, tos_uri: HttpUrl | None = None, logo_uri: HttpUrl | None = None, authorization_endpoint: str | None = None, response_types_supported: List[str] | None = None, vp_formats_supported: VPFormatSchema | None = None, request_object_signing_alg_values_supported: List[str] | None = None, presentation_definition_uri_supported: bool | None = None)[source]

Bases: BaseModel

aal: HttpUrl
authorization_endpoint: str | None
cnf: CNFSchema
exp: int
iat: int
iss: HttpUrl
logo_uri: HttpUrl | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

policy_uri: HttpUrl | None
presentation_definition_uri_supported: bool | None
request_object_signing_alg_values_supported: List[str] | None
response_types_supported: List[str] | None
sub: str
tos_uri: HttpUrl | None
type: Literal['WalletInstanceAttestation'] | None
vp_formats_supported: VPFormatSchema | None

pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation_request module

class pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation_request.WalletInstanceAttestationRequestHeader(*, alg: str, typ: Literal['var+jwt'], kid: str)[source]

Bases: BaseModel

alg: str
kid: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

typ: Literal['var+jwt']
class pyeudiw.satosa.backends.openid4vp.schemas.wallet_instance_attestation_request.WalletInstanceAttestationRequestPayload(*, iss: str, aud: HttpUrl, jti: str, type: Literal['WalletInstanceAttestationRequest'], nonce: str, cnf: CNFSchema, iat: int, exp: int)[source]

Bases: BaseModel

aud: HttpUrl
cnf: CNFSchema
exp: int
iat: int
iss: str
jti: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

nonce: str
type: Literal['WalletInstanceAttestationRequest']

pyeudiw.satosa.backends.openid4vp.schemas.wallet_metadata module

class pyeudiw.satosa.backends.openid4vp.schemas.wallet_metadata.WalletMetadata(*, vp_formats_supported: Dict[str, Dict[str, List[str]]], alg_values_supported: List[str] | None = None, client_id_schemes_supported: List[str] | None = None, authorization_endpoint: str | None = None, request_object_signing_alg_values_supported: List[str] | None = None, response_types_supported: list[str] | None = None, response_modes_supported: list[str] | None = None)[source]

Bases: BaseModel

alg_values_supported: List[str] | None
authorization_endpoint: str | None
client_id_schemes_supported: List[str] | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

request_object_signing_alg_values_supported: List[str] | None
response_modes_supported: list[str] | None
response_types_supported: list[str] | None
classmethod validate_alg_values_supported(v)[source]
classmethod validate_authorization_endpoint(v)[source]
classmethod validate_client_id_schemes_supported(v, info)[source]
classmethod validate_request_object_signing_alg_values_supported_supported(v, info)[source]
classmethod validate_response_modes_supported(v, info)[source]
classmethod validate_response_types_supported(v)[source]
classmethod validate_vp_formats_supported(v, info)[source]
vp_formats_supported: Dict[str, Dict[str, List[str]]]
class pyeudiw.satosa.backends.openid4vp.schemas.wallet_metadata.WalletPostRequest(*, wallet_metadata: WalletMetadata | None = None, wallet_nonce: str | None = None)[source]

Bases: BaseModel

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

wallet_metadata: WalletMetadata | None
wallet_nonce: str | None

Module contents