Mac0

Mac0Message messages are used when there is a single receiver. The sender assumes that the receiver knows how to find/derive the authentication key to verify the appended tag. In case there are multiple receivers (each using a different authentication key) or the receiver requires more information to find/derive the key MacMessage should be used.

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

Encode and protect the COSE_Mac0 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.