'\" t .\" Title: kcapi_aead_encrypt .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: November 2020 .\" Manual: Programming Interface .\" Source: libkcapi Manual 1.2.1 .\" Language: English .\" .TH "KCAPI_AEAD_ENCRYPT" "3" "November 2020" "libkcapi Manual 1\&.2\&.1" "Programming Interface" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" kcapi_aead_encrypt \- synchronously encrypt AEAD data (one shot) .SH "SYNOPSIS" .HP \w'int32_t\ kcapi_aead_encrypt('u .BI "int32_t kcapi_aead_encrypt(struct\ kcapi_handle\ *\ " "handle" ", const\ uint8_t\ *\ " "in" ", uint32_t\ " "inlen" ", const\ uint8_t\ *\ " "iv" ", uint8_t\ *\ " "out" ", uint32_t\ " "outlen" ", int\ " "access" ");" .SH "ARGUMENTS" .PP \fIhandle\fR .RS 4 [in] cipher handle .RE .PP \fIin\fR .RS 4 [in] plaintext data buffer .RE .PP \fIinlen\fR .RS 4 [in] length of plaintext buffer .RE .PP \fIiv\fR .RS 4 [in] IV to be used for cipher operation .RE .PP \fIout\fR .RS 4 [out] data buffer holding cipher text and authentication tag .RE .PP \fIoutlen\fR .RS 4 [in] length of out buffer .RE .PP \fIaccess\fR .RS 4 [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) .RE .SH "DESCRIPTION" .PP The AEAD cipher operation requires the furnishing of the associated authentication data\&. In case such data is not required, it can be set to NULL and length value must be set to zero\&. .PP It is perfectly legal to use the same buffer as the plaintext and ciphertext pointers\&. That would mean that after the encryption operation, the plaintext is overwritten with the ciphertext\&. .PP 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\&. .PP The IV buffer must be exactly \fBkcapi_cipher_ivsize\fR bytes in size\&. .PP After invoking this function the caller should use \fBkcapi_aead_getdata_output\fR to obtain the resulting ciphertext and authentication tag references\&. .SH "IMPORTANT NOTE" .PP The kernel will only process sysconf(_SC_PAGESIZE) * ALG_MAX_PAGES at one time\&. Longer input data cannot be handled by the kernel\&. .PP \fIreturn\fR number of bytes encrypted upon success; a negative errno\-style error code if an error occurred .SH "AUTHOR" .PP \fBStephan Mueller\fR <\&smueller@chronox.de\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br