---
name: "kcapi_cipher_decrypt_aio"
section: "3"
platform: "linux"
package: "libkcapi-dev"
version: "1.4.0-1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/kcapi_cipher_decrypt_aio"
---

# kcapi\_cipher\_decrypt\_aio(3)

decrypt data (asynchronous one shot)

## NAME

kcapi\_cipher\_decrypt\_aio - decrypt data (asynchronous one shot)

## SYNOPSIS

**ssize\_t kcapi\_cipher\_decrypt\_aio(struct kcapi\_handle \*** *handle***, struct iovec \*** *iniov***, struct iovec \*** *outiov***, size\_t** *iovlen***, const uint8\_t \*** *iv***, int** *access***);**

## ARGUMENTS

*handle*

\[in\] cipher handle

*iniov*

\[in\] head of scatter-gather list array holding the ciphertext

*outiov*

\[out\] head of scatter-gather list with the destination buffers for the plaintext

*iovlen*

\[in\] number of scatter-gather list entries

*iv*

\[in\] IV to be used for cipher operation

*access*

\[in\] kernel access type (KCAPI\_ACCESS\_HEURISTIC - use internal heuristic for fastest kernel access; KCAPI\_ACCESS\_VMSPLICE - use vmsplice access; KCAPI\_ACCESS\_SENDMSG - sendmsg access)

## DESCRIPTION

The individual scatter-gather list entries are processed with separate invocations of the the given cipher.

The memory should be aligned at the page boundary using posix\_memalign(sysconf(\_SC\_PAGESIZE)), If it is not aligned at the page boundary, the vmsplice call may not send all data to the kernel.

The IV buffer must be exactly **kcapi\_cipher\_ivsize** bytes in size.

*return* number of bytes decrypted upon success; a negative errno-style error code if an error occurred

## AUTHOR

**Stephan Mueller** \<smueller@chronox.de\>

Author.

## COPYRIGHT
