first commit

This commit is contained in:
linkitapps
2026-09-14 23:22:10 +09:00
commit 9f9c8fb69b
4207 changed files with 1333187 additions and 0 deletions
@@ -0,0 +1,51 @@
from .._rfc7515.types import FlattenedJSONSerialization, JSONSignatureDict
from .._rfc7515.model import HeaderMember, FlattenedJSONSignature
from .._rfc7515.registry import JWSRegistry
from .._rfc7515.json import sign_json_member, FindKey
from ..util import to_bytes, json_b64decode, urlsafe_b64decode
from ..errors import DecodeError
from .util import is_rfc7797_enabled
def sign_rfc7797_json(
member: HeaderMember,
payload: bytes,
registry: JWSRegistry,
find_key: FindKey,
) -> FlattenedJSONSerialization:
signature = sign_json_member(payload, member, registry, find_key)
data: FlattenedJSONSerialization = {"payload": payload.decode("utf-8"), **signature}
return data
def extract_rfc7797_json(value: FlattenedJSONSerialization, registry: JWSRegistry) -> FlattenedJSONSignature:
if "protected" in value:
protected_segment = to_bytes(value["protected"])
registry.validate_header_size(protected_segment)
protected = json_b64decode(protected_segment)
else:
protected = None
header = value.get("header")
member = HeaderMember(protected, header)
payload_segment: bytes = value["payload"].encode("utf-8")
registry.validate_payload_size(payload_segment)
if is_rfc7797_enabled(member.headers()):
payload = payload_segment
else:
try:
payload = urlsafe_b64decode(payload_segment)
except (TypeError, ValueError):
raise DecodeError("Invalid payload")
obj = FlattenedJSONSignature(member, payload)
_sig: JSONSignatureDict = {"signature": value["signature"]}
if "protected" in value:
_sig["protected"] = value["protected"]
if "header" in value:
_sig["header"] = value["header"]
obj.signature = _sig
obj.segments = {"payload": payload_segment}
return obj