KCAPI_AKCIPHER_STREA(3)

✨ NAME ✨

kcapi_akcipher_stream_op β€” bestie, this is the one that goes and obtains your processed data 🫢 (the stream kind, obvs)


🌸 SYNOPSIS 🌸

ssize_t kcapi_akcipher_stream_op(struct kcapi_handle * handle,
                                 struct iovec * iov, size_t iovlen);

πŸŽ€ ARGUMENTS πŸŽ€

  • handle β€” [in] the cipher handle, your little main character πŸ’…
  • iov β€” [in/out] a scatter/gather list pointing at the buffers that are gonna get filled with the resulting data from a cipher operation ✨
  • iovlen β€” [in] how many scatter/gather list elements there are πŸ”’

πŸ’– DESCRIPTION πŸ’–

okay so listen πŸ‘‚ β€” you can call this thing interleaved with kcapi_akcipher_stream_update to go fetch the processed data. they're a duo, they work together, it's giving dynamic duo energy πŸ¦‹

heads up bestie: this function may cause the caller to sleep 😴 if the kernel buffer holding the data is empty. like, it'll just nap. the process gets woken up once more data is sent by calling kcapi_cipher_stream_update. so basically it's waiting for its friend to text back 😭

also, NOT ME FORGETTING THIS PART β€” when you supply buffers that are not a multiple of block size, the buffers will only be filled up to the maximum number of full block sizes that fit into the buffer. so like, partial blocks just get left on read πŸ™ˆ

and on the return tip: you get the number of bytes obtained from the kernel upon success πŸŽ‰ β€” or a negative errno-style error code if something went wrong πŸ’€


πŸ‘‘ AUTHOR πŸ‘‘

Stephan Mueller <smueller@chronox.de> Author. (yes the whole author, iconic, we stan 🫢)


that's the libkcapi Manual 1.5.0, dated July 2025 β€” literally the whole vibe, no cap, periodt πŸ’…βœ¨ bye bestie, go process some streams πŸ¦‹

πŸ“¦ where this page comes from