STRUCT CCP_AES_ENGINE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 mode
  • action β€” the AES operation itself (decrypt/encrypt), pick a side bestie
  • key β€” the key to be used for this AES operation
  • key_len β€” length in bytes of key πŸ“
  • iv β€” the IV to be used for this AES operation
  • iv_len β€” length in bytes of iv
  • src β€” 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 operation
  • cmac_final β€” indicates final operation when running in CMAC mode 🏁
  • cmac_key β€” K1/K2 key used in final CMAC operation
  • cmac_key_len β€” length in bytes of cmac_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_len
  • iv, iv_len for any mode other than ECB
  • cmac_final for CMAC mode
  • cmac_key, cmac_key_len for CMAC mode if cmac_final is 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