The Hash engine hashes the data received from the external memory through DMA, and may be programmed to store the result digest into external memory using a DMA operation. The typical sequence for using the EIP-120t for operations follow:
- The Hash engine mode is programmed through the slave interface.
- For resumed Hash operations, the intermediate digest of the Hash engine from a previous session is programmed through the slave device. If the resumed operation is a continuation of the previous (unfinished) Hash operation, the Hash engine holds its current state. In this case, it may be reused for the next operation, and the initial digest does not need to be programmed.
- The master controller is programmed to move data to the Hash engine. If the result digest must be written to the external memory, the master controller should be programmed accordingly.
- DMAC channel 0 is programmed to read data from the external memory and copy it to the data input port of the Hash engine.
- If the result digest must be written to the external memory, DMAC channel 1 is programmed to store the result digest into a preallocated area in the external memory.
- The interrupt status is observed to check when the Hash engine has completed the operation.
- If the result digest must be ready by the host, it can be read through the slave interface. If the result digest is written to external memory through the DMA, it is available in external memory (see Section 13.7.2.3).