include/crypto/chacha.h
Source file repositories/reference/linux-study-clean/include/crypto/chacha.h
File Facts
- System
- Linux kernel
- Corpus path
include/crypto/chacha.h- Extension
.h- Size
- 3076 bytes
- Lines
- 103
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/unaligned.hlinux/string.hlinux/types.h
Detected Declarations
struct chacha_stateenum chacha_constantsfunction chacha20_blockfunction chacha_init_constsfunction chacha_initfunction chacha20_cryptfunction chacha_zeroize_state
Annotated Snippet
struct chacha_state {
u32 x[CHACHA_STATE_WORDS];
};
void chacha_block_generic(struct chacha_state *state,
u8 out[at_least CHACHA_BLOCK_SIZE], int nrounds);
static inline void chacha20_block(struct chacha_state *state,
u8 out[at_least CHACHA_BLOCK_SIZE])
{
chacha_block_generic(state, out, 20);
}
void hchacha_block_generic(const struct chacha_state *state,
u32 out[at_least HCHACHA_OUT_WORDS], int nrounds);
void hchacha_block(const struct chacha_state *state,
u32 out[at_least HCHACHA_OUT_WORDS], int nrounds);
enum chacha_constants { /* expand 32-byte k */
CHACHA_CONSTANT_EXPA = 0x61707865U,
CHACHA_CONSTANT_ND_3 = 0x3320646eU,
CHACHA_CONSTANT_2_BY = 0x79622d32U,
CHACHA_CONSTANT_TE_K = 0x6b206574U
};
static inline void chacha_init_consts(struct chacha_state *state)
{
state->x[0] = CHACHA_CONSTANT_EXPA;
state->x[1] = CHACHA_CONSTANT_ND_3;
state->x[2] = CHACHA_CONSTANT_2_BY;
state->x[3] = CHACHA_CONSTANT_TE_K;
}
static inline void chacha_init(struct chacha_state *state,
const u32 key[at_least CHACHA_KEY_WORDS],
const u8 iv[at_least CHACHA_IV_SIZE])
{
chacha_init_consts(state);
state->x[4] = key[0];
state->x[5] = key[1];
state->x[6] = key[2];
state->x[7] = key[3];
state->x[8] = key[4];
state->x[9] = key[5];
state->x[10] = key[6];
state->x[11] = key[7];
state->x[12] = get_unaligned_le32(iv + 0);
state->x[13] = get_unaligned_le32(iv + 4);
state->x[14] = get_unaligned_le32(iv + 8);
state->x[15] = get_unaligned_le32(iv + 12);
}
void chacha_crypt(struct chacha_state *state, u8 *dst, const u8 *src,
unsigned int bytes, int nrounds);
static inline void chacha20_crypt(struct chacha_state *state,
u8 *dst, const u8 *src, unsigned int bytes)
{
chacha_crypt(state, dst, src, bytes, 20);
}
static inline void chacha_zeroize_state(struct chacha_state *state)
{
memzero_explicit(state, sizeof(*state));
}
#endif /* _CRYPTO_CHACHA_H */
Annotation
- Immediate include surface: `linux/unaligned.h`, `linux/string.h`, `linux/types.h`.
- Detected declarations: `struct chacha_state`, `enum chacha_constants`, `function chacha20_block`, `function chacha_init_consts`, `function chacha_init`, `function chacha20_crypt`, `function chacha_zeroize_state`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.