crypto_shash_final(9)
πΈ crypto_shash_final(9) β the Kernel API Manual, bestie edition πΈ
okay so this is a page from the Kernel API Manual and it's about crypto_shash_final(9), which is literally the "ok we're done, hand me the digest" moment of the synchronous hash world. pull up a chair π«Ά
β¨ NAME β¨
crypto_shash_final β calculate message digest π
π¦ SYNOPSIS π¦
int crypto_shash_final (struct shash_desc *desc , u8 *out );
π ARGUMENTS π
descβ the operational state handle, and it's already filled with data. like, the homework is done, this is the turning-it-in part πoutβ the output buffer that gets filled with the message digest. it's the little envelope your digest gets yeeted into βοΈ
π DESCRIPTION π
so basically you finalize the message digest operation and create the message digest based on all the data added to the cipher handle. the way that this works is the message digest gets placed into the output buffer. periodt.
β οΈ real talk though: the caller must ensure that the output buffer is large enough by using crypto_shash_digestsize. no cap, if you skimp on the buffer that's on you, not on the kernel π
π₯ CONTEXT π₯
Softirq or process context. that's the vibe check, and it passes β
π RETURN π
0if the message digest creation was successful β slay π< 0if an error occurred β π
β SEE ALSO β
okay buckle up bestie, this list is long but it's giving comprehensive, so:
- Kernel file
./include/crypto/hash.hMessage Digest Algorithm Definitions(9) struct ahash_alg(9)struct shash_alg(9)- Asynchronous Message Digest API(9)
crypto_alloc_ahash(9)crypto_free_ahash(9)crypto_has_ahash(9)crypto_ahash_blocksize(9)crypto_ahash_digestsize(9)crypto_ahash_statesize(9)crypto_ahash_reqtfm(9)crypto_ahash_reqsize(9)crypto_ahash_setkey(9)crypto_ahash_finup(9)crypto_ahash_final(9)crypto_ahash_digest(9)crypto_ahash_export(9)crypto_ahash_import(9)crypto_ahash_init(9)crypto_ahash_update(9)- Asynchronous Hash Request Handle(9)
ahash_request_set_tfm(9)ahash_request_alloc(9)ahash_request_free(9)ahash_request_set_callback(9)ahash_request_set_crypt(9)ahash_request_set_virt(9)- Synchronous Message Digest API(9)
crypto_alloc_shash(9)crypto_free_shash(9)crypto_shash_blocksize(9)crypto_shash_digestsize(9)crypto_shash_descsize(9)crypto_shash_setkey(9)crypto_shash_digest(9)crypto_shash_tfm_digest(9)crypto_shash_export(9)crypto_shash_import(9)crypto_shash_init(9)crypto_shash_finup(9)crypto_shash_update(9)
iykyk π
and that's the whole page, no notes π this little gem lives in ./include/crypto and it's dated October 2026, filed under crypto_shash_final(9). go forth and finalize your digests, bestie β you're gonna eat πβ¨
π¦ 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