2 * SEC Descriptor Construction Library
3 * Basic job descriptor construction
5 * Copyright 2014 Freescale Semiconductor, Inc.
7 * SPDX-License-Identifier: GPL-2.0+
12 #include "desc_constr.h"
15 void inline_cnstr_jobdesc_hash(uint32_t *desc,
16 const uint8_t *msg, uint32_t msgsz, uint8_t *digest,
17 u32 alg_type, uint32_t alg_size, int sg_tbl)
19 /* SHA 256 , output is of length 32 words */
20 uint32_t storelen = alg_size;
22 dma_addr_t dma_addr_in, dma_addr_out;
24 dma_addr_in = virt_to_phys((void *)msg);
25 dma_addr_out = virt_to_phys((void *)digest);
27 init_job_desc(desc, 0);
28 append_operation(desc, OP_TYPE_CLASS2_ALG |
29 OP_ALG_AAI_HASH | OP_ALG_AS_INITFINAL |
30 OP_ALG_ENCRYPT | OP_ALG_ICV_OFF | alg_type);
32 options = LDST_CLASS_2_CCB | FIFOLD_TYPE_MSG | FIFOLD_TYPE_LAST2;
34 options |= FIFOLDST_SGF;
36 options |= FIFOLDST_EXT;
37 append_fifo_load(desc, dma_addr_in, 0, options);
38 append_cmd(desc, msgsz);
40 append_fifo_load(desc, dma_addr_in, msgsz, options);
43 append_store(desc, dma_addr_out, storelen,
44 LDST_CLASS_2_CCB | LDST_SRCDST_BYTE_CONTEXT);