30 lines
768 B
Python
30 lines
768 B
Python
from __future__ import annotations
|
|
from pydantic import BaseModel, Field
|
|
from typing import Literal, Annotated, Union
|
|
|
|
|
|
class ResponseJwks(BaseModel):
|
|
keys: list[ResponseJwk]
|
|
|
|
|
|
class ResponseRsaJwk(BaseModel):
|
|
kty: Literal["RSA"]
|
|
d: str | None = Field(default=None)
|
|
q: str | None = Field(default=None)
|
|
qi: str | None = Field(default=None)
|
|
dq: str | None = Field(default=None)
|
|
e: str | None = Field(default=None)
|
|
key_ops: list[str] | None = Field(default=None)
|
|
dp: str | None = Field(default=None)
|
|
n: str | None = Field(default=None)
|
|
p: str | None = Field(default=None)
|
|
|
|
|
|
class ResponseEcJwk(BaseModel):
|
|
kty: Literal["EC"]
|
|
|
|
|
|
ResponseJwk = Annotated[
|
|
Union[ResponseRsaJwk, ResponseEcJwk], Field(discriminator="kty")
|
|
]
|