.TH AES 2
.SH NAME
setupAESstate, aesCBCencrypt, aesCBCdecrypt - advanced encryption standard (rijndael)
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <mp.h>
.br
.B #include <libsec.h>
.PP
.in +0.5i
.ti -0.5i
.B
void	setupAESstate(AESstate *s, uchar key[], int keybytes, uchar *ivec)
.PP
.B
void	aesCBCencrypt(uchar *p, int len, AESstate *s)
.PP
.B
void	aesCBCdecrypt(uchar *p, int len, AESstate *s)
.SH DESCRIPTION
DES is being replaced by Rijndael, also known as AES, as the preferred
block cipher.
.IR SetupAESstate ,
.IR aesCBCencrypt ,
and
.I aesCBCdecrypt
implement cipher block chaining encryption.
All ciphering is performed in place.
.I Keybytes
should be 16, 24, or 32.
The initialization vector
.I ivec
of
.I AESbsize
bytes should be random enough to be unlikely to be reused
but does not need to be
cryptographically strongly unpredictable.
.SH SOURCE
.B /sys/src/libsec
.SH SEE ALSO
.I aescbc
in
.IR secstore (1),
.IR mp (2),
.IR blowfish (2),
.IR des (2),
.IR dsa (2),
.IR elgamal (2),
.IR rc4 (2),
.IR rsa (2),
.IR sechash (2),
.IR prime (2),
.IR rand (2)
.br
.B http://csrc.nist.gov/encryption/aes/rijndael
