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