Source code for pyeudiw.satosa.frontends.openid4vci.models.nonce_response

from uuid import uuid4

from pydantic import BaseModel, Field
from satosa.response import Response

from pyeudiw.tools.content_type import (
  APPLICATION_JSON,
  CACHE_CONTROL_HEADER
)


[docs] class NonceResponse(BaseModel): """ Pydantic model representing a Nonce Response as defined in OpenID4VCI specification (Section 7.2). The response MUST be uncacheable (Cache-Control: no-store) and MUST contain an unpredictable 'c_nonce' value. """ c_nonce: str = Field(default_factory=lambda: str(uuid4()))
[docs] @staticmethod def to_response(c_nonce: str = None) -> Response: """ Create a SATOSA Response with a JSON payload containing a c_nonce. Args: c_nonce (str, optional): Custom nonce value to use. If not provided, a UUID4 will be generated. Returns: Response: A SATOSA Response object with application/json content and 'Cache-Control: no-store' header. """ data = NonceResponse(c_nonce=c_nonce) if c_nonce else NonceResponse() response = Response( message=data.model_dump_json(), content=APPLICATION_JSON, ) response.headers.append((CACHE_CONTROL_HEADER, "no-store")) return response