Files
cariflex/tools/shapeshifter-library-python-main/shapeshifter_uftp/uftp/messages/signed_message.py
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

57 lines
2.0 KiB
Python

from dataclasses import dataclass, field
from ..enums import UsefRole
@dataclass(kw_only=True)
class SignedMessage:
"""The SignedMessage element represents the secure wrapper used to submit USEF
XML messages from the local message queue to the message queue of a remote
participant.
It contains minimal metadata (which is distinct from the common
metadata used for all other messages), allowing the recipient to
look up the sender's cryptographic scheme and public keys, and the
actual XML message, as transformed (signed/sealed) using that
cryptographic scheme.
:ivar sender_domain: The Internet domain of the USEF participant
sending this message. Upon receiving a message, the recipient
should validate that its value matches the corresponding
attribute value specified in the inner XML message, once un-
sealed: if not, the message must be rejected as invalid.
:ivar sender_role: The USEF role of the participant sending this
message: AGR, BRP, CRO, DSO or MDC. Receive-time validation
should take place as described for the SenderDomain attribute
above.
:ivar body: The Base-64 encoded inner XML message contained in this
wrapper, as transformed (signed/sealed) using the sender's
cryptographic scheme. The recipient can determine which scheme
applies using a DNS or configuration file lookup, based on the
combination of SenderDomain and SenderRole.
"""
sender_domain: str = field(
metadata={
"name": "SenderDomain",
"type": "Attribute",
"required": True,
"pattern": r"([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}",
}
)
sender_role: UsefRole = field(
metadata={
"name": "SenderRole",
"type": "Attribute",
"required": True,
}
)
body: bytes = field(
metadata={
"name": "Body",
"type": "Attribute",
"required": True,
"format": "base64",
}
)