Skip to content

Standard

SEP-001 standard interface.

Source code in nucleus/sdk/expose/sep.py
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
@dataclass(slots=True)
class SEP001:
    """SEP-001 standard interface."""

    _header: Header
    _payload: Payload

    _keys: List[Keyring] = field(init=False)
    # serialization method eg. DagJose, Compact, etc
    _serializer: Type[Serializer] = field(init=False)
    # crypto operation type eg. Sign, Cypher
    _crypto: Type[Crypto] = field(init=False)

    def __post_init__(self):
        self._keys = []
        self._serializer = DagJose  # default
        self._crypto = Sign  # default

    def header(self) -> Raw:
        return vars(self._header)

    def payload(self) -> Raw:
        return vars(self._payload)

    def add_key(self, kr: Keyring) -> None:
        """Add signature/recipient keyring.

        :param kr: Keyring implementation
        :return: None
        """
        self._keys.append(kr)

    def add_metadata(self, meta: Metadata) -> None:
        """Add metadata to payload.

        :param meta: The metadata type to store in payload
        :return: None
        """
        self._payload.add(meta)

    def set_operation(self, crypto: Type[Crypto]) -> None:
        """Set cryptography operation type to use during serialization.

        :param crypto: The crypto operation type
        :return: None
        """
        self._crypto = crypto

    def set_serialization(self, serializer: Type[Serializer]) -> None:
        """Set the serializer to use during serialization.

        :param serializer: The serializer type
        :return: None
        """
        self._serializer = serializer

    def serialize(self) -> Serializer:
        """Serialize the standard according to the defined serialization method and crypto operation.

        :return: the ready-state serializer
        """
        serializer = self._serializer(self)
        crypto = self._crypto(serializer)

        # associate keys
        for k in self._keys:
            crypto.add_key(k)

        return crypto.serialize()

add_key(kr)

Add signature/recipient keyring.

Parameters:

Name Type Description Default
kr Keyring

Keyring implementation

required

Returns:

Type Description
None

None

Source code in nucleus/sdk/expose/sep.py
67
68
69
70
71
72
73
def add_key(self, kr: Keyring) -> None:
    """Add signature/recipient keyring.

    :param kr: Keyring implementation
    :return: None
    """
    self._keys.append(kr)

add_metadata(meta)

Add metadata to payload.

Parameters:

Name Type Description Default
meta Metadata

The metadata type to store in payload

required

Returns:

Type Description
None

None

Source code in nucleus/sdk/expose/sep.py
75
76
77
78
79
80
81
def add_metadata(self, meta: Metadata) -> None:
    """Add metadata to payload.

    :param meta: The metadata type to store in payload
    :return: None
    """
    self._payload.add(meta)

serialize()

Serialize the standard according to the defined serialization method and crypto operation.

Returns:

Type Description
Serializer

the ready-state serializer

Source code in nucleus/sdk/expose/sep.py
 99
100
101
102
103
104
105
106
107
108
109
110
111
def serialize(self) -> Serializer:
    """Serialize the standard according to the defined serialization method and crypto operation.

    :return: the ready-state serializer
    """
    serializer = self._serializer(self)
    crypto = self._crypto(serializer)

    # associate keys
    for k in self._keys:
        crypto.add_key(k)

    return crypto.serialize()

set_operation(crypto)

Set cryptography operation type to use during serialization.

Parameters:

Name Type Description Default
crypto Type[Crypto]

The crypto operation type

required

Returns:

Type Description
None

None

Source code in nucleus/sdk/expose/sep.py
83
84
85
86
87
88
89
def set_operation(self, crypto: Type[Crypto]) -> None:
    """Set cryptography operation type to use during serialization.

    :param crypto: The crypto operation type
    :return: None
    """
    self._crypto = crypto

set_serialization(serializer)

Set the serializer to use during serialization.

Parameters:

Name Type Description Default
serializer Type[Serializer]

The serializer type

required

Returns:

Type Description
None

None

Source code in nucleus/sdk/expose/sep.py
91
92
93
94
95
96
97
def set_serialization(self, serializer: Type[Serializer]) -> None:
    """Set the serializer to use during serialization.

    :param serializer: The serializer type
    :return: None
    """
    self._serializer = serializer