xref: /haiku/src/libs/compat/openbsd_wlan/crypto/aes.h (revision 04171cfc5c10c98b9ba3c7233a271f6165cdd36f)
1*04171cfcSAugustin Cavalier /*	$OpenBSD: aes.h,v 1.4 2020/07/22 13:54:30 tobhe Exp $	*/
2*04171cfcSAugustin Cavalier /*
3*04171cfcSAugustin Cavalier  * Copyright (c) 2016 Thomas Pornin <pornin@bolet.org>
4*04171cfcSAugustin Cavalier  * Copyright (c) 2016 Mike Belopuhov
5*04171cfcSAugustin Cavalier  *
6*04171cfcSAugustin Cavalier  * Permission is hereby granted, free of charge, to any person obtaining
7*04171cfcSAugustin Cavalier  * a copy of this software and associated documentation files (the
8*04171cfcSAugustin Cavalier  * "Software"), to deal in the Software without restriction, including
9*04171cfcSAugustin Cavalier  * without limitation the rights to use, copy, modify, merge, publish,
10*04171cfcSAugustin Cavalier  * distribute, sublicense, and/or sell copies of the Software, and to
11*04171cfcSAugustin Cavalier  * permit persons to whom the Software is furnished to do so, subject to
12*04171cfcSAugustin Cavalier  * the following conditions:
13*04171cfcSAugustin Cavalier  *
14*04171cfcSAugustin Cavalier  * The above copyright notice and this permission notice shall be
15*04171cfcSAugustin Cavalier  * included in all copies or substantial portions of the Software.
16*04171cfcSAugustin Cavalier  *
17*04171cfcSAugustin Cavalier  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18*04171cfcSAugustin Cavalier  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19*04171cfcSAugustin Cavalier  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20*04171cfcSAugustin Cavalier  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21*04171cfcSAugustin Cavalier  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22*04171cfcSAugustin Cavalier  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23*04171cfcSAugustin Cavalier  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24*04171cfcSAugustin Cavalier  * SOFTWARE.
25*04171cfcSAugustin Cavalier  */
26*04171cfcSAugustin Cavalier 
27*04171cfcSAugustin Cavalier #ifndef _AES_H_
28*04171cfcSAugustin Cavalier #define _AES_H_
29*04171cfcSAugustin Cavalier 
30*04171cfcSAugustin Cavalier #ifndef AES_MAXROUNDS
31*04171cfcSAugustin Cavalier #define AES_MAXROUNDS	(14)
32*04171cfcSAugustin Cavalier #endif
33*04171cfcSAugustin Cavalier 
34*04171cfcSAugustin Cavalier typedef struct aes_ctx {
35*04171cfcSAugustin Cavalier 	uint32_t sk[60];
36*04171cfcSAugustin Cavalier 	uint32_t sk_exp[120];
37*04171cfcSAugustin Cavalier 
38*04171cfcSAugustin Cavalier 	unsigned num_rounds;
39*04171cfcSAugustin Cavalier } AES_CTX;
40*04171cfcSAugustin Cavalier 
41*04171cfcSAugustin Cavalier int	AES_Setkey(AES_CTX *, const uint8_t *, int);
42*04171cfcSAugustin Cavalier void	AES_Encrypt(AES_CTX *, const uint8_t *, uint8_t *);
43*04171cfcSAugustin Cavalier void	AES_Decrypt(AES_CTX *, const uint8_t *, uint8_t *);
44*04171cfcSAugustin Cavalier void	AES_Encrypt_ECB(AES_CTX *, const uint8_t *, uint8_t *, size_t);
45*04171cfcSAugustin Cavalier void	AES_Decrypt_ECB(AES_CTX *, const uint8_t *, uint8_t *, size_t);
46*04171cfcSAugustin Cavalier 
47*04171cfcSAugustin Cavalier int	AES_KeySetup_Encrypt(uint32_t *, const uint8_t *, int);
48*04171cfcSAugustin Cavalier int	AES_KeySetup_Decrypt(uint32_t *, const uint8_t *, int);
49*04171cfcSAugustin Cavalier 
50*04171cfcSAugustin Cavalier #endif	/* _AES_H_ */
51