3.2.2. Functions - 3.2.2. Functions - 5.3 English - 68552

AOCL API Guide (68552)

Document_ID
68552
Release_Date
2026-05-13
Version
5.3 English
Uint64 alcp_digest_context_size(void)#

Returns the digest context size.

This API should be called before alcp_digest_request to identify the memory to be allocated for context

Returns:

Size of context in bytes

alc_error_t alcp_digest_request(alc_digest_mode_t mode, alc_digest_handle_p p_digest_handle)#

Request a handle for digest for a configuration as pointed by alc_digest_mode_t.

Parameters:
  • mode – [in] Description of the requested digest session

  • p_digest_handle – [out] Library populated session handle for future digest operations.

Returns:

ALC_ERROR_NONE on success.

alc_error_t alcp_digest_init(alc_digest_handle_p p_digest_handle)#

Initializes the digest handle.

This API can be called only after alcp_digest_request and before alcp_digest_finish

Parameters:

p_digest_handle – [in] Library populated session handle

Returns:

ALC_ERROR_NONE on success.

alc_error_t alcp_digest_update(const alc_digest_handle_p p_digest_handle, const Uint8 *buf, Uint64 size)#

Computes digest for the buffer pointed by buf for size as mentioned by size in bytes.

This API can be called only after alcp_digest_init and before alcp_digest_finalize

Note

repeated calls to this are allowed and the handle will contain the latest state; the digest is available after alcp_digest_finalize.

Parameters:
  • p_digest_handle – [in] Handle created by alcp_digest_request

  • buf – [in] Input buffer

  • size – [in] Input buffer size in bytes.

Returns:

ALC_ERROR_NONE on success.

alc_error_t alcp_digest_finalize(const alc_digest_handle_p p_digest_handle, Uint8 *buf, Uint64 size)#

Finalize the digest and copy the result into the output buffer.

This API can be called only after alcp_digest_update and before alcp_digest_finish

Parameters:
  • p_digest_handle – [in] Handle created by alcp_digest_request

  • buf – [out] Destination buffer to which digest will be copied

  • size – [in] Destination buffer size in bytes, should be big enough to hold the digest

Returns:

ALC_ERROR_NONE on success.

void alcp_digest_finish(const alc_digest_handle_p p_digest_handle)#

Performs any cleanup actions.

This API is called to free resources so should be called to free the session

Note

Must be called to ensure memory allotted (if any) is cleaned.

Parameters:

p_digest_handle – [in] Handle created by alcp_digest_request. Once this function is called, the handle will not be valid for future calls

Returns:

None

alc_error_t alcp_digest_context_copy(const alc_digest_handle_p pSrcHandle, const alc_digest_handle_p pDestHandle)#

Copies the context from source to destination.

This API can be called only after alcp_digest_init and before alcp_digest_finish on pSrcHandle

Parameters:
  • pSrcHandle – [in] source digest handle

  • pDestHandle – [out] destination digest handle

Returns:

ALC_ERROR_NONE on success.

alc_error_t alcp_digest_shake_squeeze(const alc_digest_handle_p pDigestHandle, Uint8 *pBuff, Uint64 size)#

Valid only for SHAKE algorithm for squeezing the digest out. It can be called multiple times. It should not be called with alcp_digest_finalize.

This API can be called only after alcp_digest_update and before alcp_digest_finish

Parameters:
  • pDigestHandle – [in] Handle created by alcp_digest_request

  • pBuff – [out] Destination Buffer for digest out

  • size – [in] size of data to be squeezed out

Returns:

ALC_ERROR_NONE on success.

alc_error_t alcp_digest_flush(const alc_digest_handle_p pDigestHandle, const Uint8 **ppMsgBuf, const Uint64 numBuffers, const Uint64 msgLen)#

Stage multiple input buffers for multi-buffer digest computation.

This API stages multiple message buffers for parallel digest computation. It must be called after alcp_digest_init and before alcp_digest_dequeue.

This function does not perform digest computation itself — it only records the buffer addresses and parameters. The actual computation is performed by alcp_digest_dequeue.

All input buffers must be the same size (msgLen bytes). For variable-length buffers, use separate single-buffer digest calls instead.

Supported modes: ALC_MB_SHA2_224, ALC_MB_SHA2_256.

Note

Error needs to be checked for each call, valid only if alcp_is_error (ret) is false

Parameters:
  • pDigestHandle – [in] Handle created by alcp_digest_request

  • ppMsgBuf – [in] Array of pointers to input message buffers

  • numBuffers – [in] Number of input buffers

  • msgLen – [in] Length of each input message buffer in bytes; all buffers must be exactly this size

Pre:

alcp_digest_request must be called with an ALC_MB_SHA2_* mode, followed by alcp_digest_init.

Returns:

ALC_ERROR_NONE on success.

alc_error_t alcp_digest_dequeue(const alc_digest_handle_p pDigestHandle, Uint8 **ppDstBuf, const Uint64 numBuffers, const Uint64 digestLen)#

Compute digests for buffers staged via alcp_digest_flush.

Performs parallel digest computation for all buffers previously staged by alcp_digest_flush and writes each result to the corresponding entry in ppDstBuf.

Each output buffer must be pre-allocated with at least digestLen bytes. The digest size depends on the algorithm:

  • ALC_MB_SHA2_224: 28 bytes

  • ALC_MB_SHA2_256: 32 bytes

This API must be called after alcp_digest_flush and before alcp_digest_finish.

Note

Error needs to be checked for each call, valid only if alcp_is_error (ret) is false

Parameters:
  • pDigestHandle – [in] Handle created by alcp_digest_request

  • ppDstBuf – [out] Array of pointers to output digest buffers; each must have space for digestLen bytes

  • numBuffers – [in] Number of output buffers (must match the count provided to alcp_digest_flush)

  • digestLen – [in] Length of each digest in bytes (28 for SHA-224, 32 for SHA-256)

Pre:

alcp_digest_flush must be called before this API with the same number of buffers.

Returns:

ALC_ERROR_NONE on success.