^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Shared descriptors for aead, skcipher algorithms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright 2016 NXP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #ifndef _CAAMALG_DESC_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define _CAAMALG_DESC_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /* length of descriptors text */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define DESC_AEAD_BASE (4 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define DESC_AEAD_ENC_LEN (DESC_AEAD_BASE + 11 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define DESC_AEAD_DEC_LEN (DESC_AEAD_BASE + 15 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define DESC_AEAD_GIVENC_LEN (DESC_AEAD_ENC_LEN + 8 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define DESC_QI_AEAD_ENC_LEN (DESC_AEAD_ENC_LEN + 3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define DESC_QI_AEAD_DEC_LEN (DESC_AEAD_DEC_LEN + 3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define DESC_QI_AEAD_GIVENC_LEN (DESC_AEAD_GIVENC_LEN + 3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /* Note: Nonce is counted in cdata.keylen */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define DESC_AEAD_CTR_RFC3686_LEN (4 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define DESC_AEAD_NULL_BASE (3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define DESC_AEAD_NULL_ENC_LEN (DESC_AEAD_NULL_BASE + 11 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define DESC_AEAD_NULL_DEC_LEN (DESC_AEAD_NULL_BASE + 13 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define DESC_GCM_BASE (3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define DESC_GCM_ENC_LEN (DESC_GCM_BASE + 16 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define DESC_GCM_DEC_LEN (DESC_GCM_BASE + 12 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define DESC_QI_GCM_ENC_LEN (DESC_GCM_ENC_LEN + 6 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define DESC_QI_GCM_DEC_LEN (DESC_GCM_DEC_LEN + 3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define DESC_RFC4106_BASE (3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define DESC_RFC4106_ENC_LEN (DESC_RFC4106_BASE + 16 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define DESC_RFC4106_DEC_LEN (DESC_RFC4106_BASE + 13 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define DESC_QI_RFC4106_ENC_LEN (DESC_RFC4106_ENC_LEN + 5 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define DESC_QI_RFC4106_DEC_LEN (DESC_RFC4106_DEC_LEN + 5 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define DESC_RFC4543_BASE (3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define DESC_RFC4543_ENC_LEN (DESC_RFC4543_BASE + 11 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define DESC_RFC4543_DEC_LEN (DESC_RFC4543_BASE + 12 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define DESC_QI_RFC4543_ENC_LEN (DESC_RFC4543_ENC_LEN + 4 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define DESC_QI_RFC4543_DEC_LEN (DESC_RFC4543_DEC_LEN + 4 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define DESC_SKCIPHER_BASE (3 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define DESC_SKCIPHER_ENC_LEN (DESC_SKCIPHER_BASE + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 21 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define DESC_SKCIPHER_DEC_LEN (DESC_SKCIPHER_BASE + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 16 * CAAM_CMD_SZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) void cnstr_shdsc_aead_null_encap(u32 * const desc, struct alginfo *adata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) unsigned int icvsize, int era);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) void cnstr_shdsc_aead_null_decap(u32 * const desc, struct alginfo *adata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) unsigned int icvsize, int era);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) void cnstr_shdsc_aead_encap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) struct alginfo *adata, unsigned int ivsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) unsigned int icvsize, const bool is_rfc3686,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) u32 *nonce, const u32 ctx1_iv_off,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) const bool is_qi, int era);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) void cnstr_shdsc_aead_decap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) struct alginfo *adata, unsigned int ivsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) unsigned int icvsize, const bool geniv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) const bool is_rfc3686, u32 *nonce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) const u32 ctx1_iv_off, const bool is_qi, int era);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) void cnstr_shdsc_aead_givencap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) struct alginfo *adata, unsigned int ivsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) unsigned int icvsize, const bool is_rfc3686,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) u32 *nonce, const u32 ctx1_iv_off,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) const bool is_qi, int era);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) void cnstr_shdsc_gcm_encap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) unsigned int ivsize, unsigned int icvsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) void cnstr_shdsc_gcm_decap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) unsigned int ivsize, unsigned int icvsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) void cnstr_shdsc_rfc4106_encap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) unsigned int ivsize, unsigned int icvsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) void cnstr_shdsc_rfc4106_decap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) unsigned int ivsize, unsigned int icvsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) void cnstr_shdsc_rfc4543_encap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) unsigned int ivsize, unsigned int icvsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) void cnstr_shdsc_rfc4543_decap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) unsigned int ivsize, unsigned int icvsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) void cnstr_shdsc_chachapoly(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) struct alginfo *adata, unsigned int ivsize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) unsigned int icvsize, const bool encap,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) const bool is_qi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) void cnstr_shdsc_skcipher_encap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) unsigned int ivsize, const bool is_rfc3686,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) const u32 ctx1_iv_off);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) void cnstr_shdsc_skcipher_decap(u32 * const desc, struct alginfo *cdata,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) unsigned int ivsize, const bool is_rfc3686,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) const u32 ctx1_iv_off);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) void cnstr_shdsc_xts_skcipher_encap(u32 * const desc, struct alginfo *cdata);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) void cnstr_shdsc_xts_skcipher_decap(u32 * const desc, struct alginfo *cdata);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #endif /* _CAAMALG_DESC_H_ */