STRUCT CCP_AES_ENGINE(9)
β¨ struct ccp_aes_engine(9) β¨
okay bestie so this is a page from the Kernel API Manual and it's literally all about struct ccp_aes_engine β the struct that holds everything the CCP needs for one AES operation. it's giving "let me tell you about my blorbo" energy and honestly? obsessed. π
πΈ NAME πΈ
struct ccp_aes_engine β CCP AES operation π
π¦ SYNOPSIS π¦
like, here's the whole vibe, character for character:
struct ccp_aes_engine {
enum ccp_aes_type type;
enum ccp_aes_mode mode;
enum ccp_aes_action action;
u32 authsize;
struct scatterlist *key;
u32 key_len;
struct scatterlist *iv;
u32 iv_len;
struct scatterlist *src, *dst;
u64 src_len;
u32 cmac_final;
struct scatterlist *cmac_key;
u32 cmac_key_len;
u32 aad_len;
};
π Members π
okay so here's the whole cast, main character energy each and every one:
typeβ the AES operation key size πmodeβ the AES operation modeactionβ the AES operation itself (decrypt/encrypt), pick a side bestiekeyβ the key to be used for this AES operationkey_lenβ length in bytes ofkeyπivβ the IV to be used for this AES operationiv_lenβ length in bytes ofivsrcβ data to be used for this operation (the input, the moment before)dstβ data produced by this operation (the glow-up β¨)src_lenβ length in bytes of data used for this operationcmac_finalβ indicates final operation when running in CMAC mode πcmac_keyβ K1/K2 key used in final CMAC operationcmac_key_lenβ length in bytes ofcmac_key
π Description π
so these are the variables you literally have to set before you call ccp_enqueue_cmd, no cap:
type,mode,action,key,key_len,src,dst,src_leniv,iv_lenfor any mode other than ECBcmac_finalfor CMAC modecmac_key,cmac_key_lenfor CMAC mode ifcmac_finalis non-zero
β οΈ heads up bestie, this one's important: the iv variable is used as both input and output. On completion of the AES operation the new IV overwrites the old IV. so don't be out here expecting your old IV to still be chilling there afterward π it's gone, it's been replaced, it's not coming back. π
π₯ SEE ALSO π₯
Kernel file ./include/linux/ccp.h plus the whole friend group: ccp_present(9), ccp_version(9), ccp_enqueue_cmd(9), struct ccp_xts_aes_engine(9), struct ccp_sha_engine(9), struct ccp_des3_engine(9), struct ccp_rsa_engine(9), struct ccp_passthru_engine(9), struct ccp_passthru_nomap_engine(9), struct ccp_ecc_modular_math(9), struct ccp_ecc_point(9), struct ccp_ecc_point_math(9), struct ccp_ecc_engine(9), struct ccp_cmd(9). iykyk, go read them all π«Ά
and that's the whole page!! this one lives in ./include/linux, dated October 2026, and it's titled struct ccp_aes_engine(9) β mwah, slay, periodt. ππ§ββοΈ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms