| 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
.. 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)
(none)
(none)
(none)
.. seealso::
:ref:`block_cipher_prepared_key_protocol <block_cipher_prepared_key_protocol/0>`