Did you know ... Search Documentation:
Pack logtalk -- logtalk-3.102.0/docs/apis/_sources/cmac_protocol_0.rst.txt

.. index:: single: cmac_protocol .. _cmac_protocol/0:

.. rst-class:: right

protocol

cmac_protocol

Protocol for one-shot CMAC digest computation using block cipher objects implementing block_cipher_prepared_key_protocol.

| Availability: | logtalk_load(cmac(loader))

| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-08-08

| Compilation flags: | static

| Dependencies: | (none)

| Remarks: | (none)

| Inherited public predicates: | (none)

.. contents:: :local: :backlinks: top

Public predicates

.. index:: digest/4 .. _cmac_protocol/0::digest/4:

digest/4 ^^^^^^^^^^^^

Computes the full CMAC digest for a block cipher object, key bytes, and message bytes.

| Compilation flags: | static

| Template: | digest(Cipher,KeyBytes,MessageBytes,DigestBytes) | Mode and number of proofs: | digest(+object_identifier,+list(byte),+list(byte),--list(byte)) - one_or_error

| Exceptions: | Cipher or MessageBytes is a variable or a partial list: | instantiation_error | Cipher does not implement the required prepared-key block cipher protocol: | domain_error(cmac_cipher,Cipher) | Cipher reports a block size other than 8 or 16 bytes: | domain_error(cmac_block_size,BlockSize) | MessageBytes is neither a variable nor a list: | type_error(list(byte),MessageBytes) | MessageBytes contains a non-integer byte: | type_error(integer,Byte) | MessageBytes contains an integer outside the byte range: | domain_error(byte,Byte)


.. index:: hex_digest/4 .. _cmac_protocol/0::hex_digest/4:

hex_digest/4 ^^^^^^^^^^^^^^^^

Computes the full CMAC digest for a block cipher object, key bytes, and message bytes, returning a lowercase hexadecimal atom.

| Compilation flags: | static

| Template: | hex_digest(Cipher,KeyBytes,MessageBytes,HexDigest) | Mode and number of proofs: | hex_digest(+object_identifier,+list(byte),+list(byte),--atom) - one_or_error

| Exceptions: | Cipher or MessageBytes is a variable or a partial list: | instantiation_error | Cipher does not implement the required prepared-key block cipher protocol: | domain_error(cmac_cipher,Cipher) | Cipher reports a block size other than 8 or 16 bytes: | domain_error(cmac_block_size,BlockSize) | MessageBytes is neither a variable nor a list: | type_error(list(byte),MessageBytes) | An element Byte of the MessageBytes` list is neither a variable nor an integer: | type_error(integer,Byte) | An element Byte of the MessageBytes list is an integer but not a valid byte: | domain_error(byte,Byte)


.. index:: digest/5 .. _cmac_protocol/0::digest/5:

digest/5 ^^^^^^^^^^^^

Computes a truncated CMAC digest containing the requested number of leftmost bytes.

| Compilation flags: | static

| Template: | digest(Cipher,KeyBytes,MessageBytes,Length,DigestBytes) | Mode and number of proofs: | digest(+object_identifier,+list(byte),+list(byte),+integer,--list(byte)) - one_or_error

| Exceptions: | Length is a variable: | instantiation_error | Length is neither a variable nor an integer: | type_error(integer,Length) | Length is an integer outside the range from one through the cipher block size: | domain_error(cmac_output_length(1,BlockSize),Length)


.. index:: hex_digest/5 .. _cmac_protocol/0::hex_digest/5:

hex_digest/5 ^^^^^^^^^^^^^^^^

Computes a truncated CMAC digest containing the requested number of leftmost bytes and returns it as a lowercase hexadecimal atom.

| Compilation flags: | static

| Template: | hex_digest(Cipher,KeyBytes,MessageBytes,Length,HexDigest) | Mode and number of proofs: | hex_digest(+object_identifier,+list(byte),+list(byte),+integer,--atom) - one_or_error

| Exceptions: | Cipher, MessageBytes, or Length is a variable or a partial list: | instantiation_error | Cipher does not implement the required prepared-key block cipher protocol: | domain_error(cmac_cipher,Cipher) | Cipher reports a block size other than 8 or 16 bytes: | domain_error(cmac_block_size,BlockSize) | MessageBytes is neither a variable nor a list: | type_error(list(byte),MessageBytes) | An element Byte of the MessageBytes` list is neither a variable nor an integer: | type_error(integer,Byte) | An element Byte of the MessageBytes list is an integer but not a valid byte: | domain_error(byte,Byte) | Length is neither a variable nor an integer: | type_error(integer,Length) | Length is an integer outside the range from one through the cipher block size: | domain_error(cmac_output_length(1,BlockSize),Length)


Protected predicates

(none)

Private predicates

(none)

Operators

(none)

.. seealso::

:ref:`block_cipher_prepared_key_protocol <block_cipher_prepared_key_protocol/0>`