Mac

MacMessage messages are used when there are multiple receivers or additional information required to authenticate/validate the message. The basic COSE structure, consisting of headers and (encrypted) payload, is extended with a list of CoseRecipient structures.

class pycose.messages.macmessage.MacMessage(phdr=None, uhdr=None, payload=b'', external_aad=b'', key=None, recipients=None, *args, **kwargs)
encode(tag=True, mac=True, *args, **kwargs)

Encodes and protects the COSE_Mac message.

compute_tag(*args, **kwargs)

Computes the authentication tag of a COSE_Mac or COSE_Mac0 message.

classmethod decode(received, *args, **kwargs)

Decode received COSE message based on the CBOR tag.

If called on CoseMessage, this function can decode any supported message type. Otherwise, if called on a sub-class of CoseMessage, only messages of that type will be allowed to be decoded.

Parameters:

received – COSE messages encoded as bytes

Raises:
  • AttributeError – When the COSE message, it cannot be decoded properly

  • ValueError – The received parameter must be bytes

  • KeyError – thrown when the CBOR tag, identifying the COSE message is unrecognized

  • TypeError – thrown when the messages cannot be decoded properly

  • TypeError – The message’s tag does not match the expected type.

Returns:

An initialized CoseMessage

get_attr(attribute, default=None)

Fetches an header attribute from the COSE header buckets.

Parameters:
  • attribute – A header parameter to fetch from the buckets.

  • default – A default return value in case the attribute was not found

Raises:

CoseException – When the same attribute is found in both the protected and unprotected header.

Returns:

If found returns a header attribute else ‘None’ or the default value

property phdr_encoded

Encode the protected header.

Returns:

Returns the encoded protected header.

property uhdr_encoded

Encode the unprotected header.

Returns:

Returns the encoded unprotected header.

verify_tag(*args, **kwargs)

Verifies the authentication tag of a received message.