1/* 2 * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10#ifndef OPENSSL_AES_H 11# define OPENSSL_AES_H 12# pragma once 13 14# include <openssl/macros.h> 15# ifndef OPENSSL_NO_DEPRECATED_3_0 16# define HEADER_AES_H 17# endif 18 19# include <openssl/opensslconf.h> 20 21# include <stddef.h> 22# ifdef __cplusplus 23extern "C" { 24# endif 25 26# define AES_BLOCK_SIZE 16 27 28# ifndef OPENSSL_NO_DEPRECATED_3_0 29 30# define AES_ENCRYPT 1 31# define AES_DECRYPT 0 32 33# define AES_MAXNR 14 34 35 36/* This should be a hidden type, but EVP requires that the size be known */ 37struct aes_key_st { 38# ifdef AES_LONG 39 unsigned long rd_key[4 * (AES_MAXNR + 1)]; 40# else 41 unsigned int rd_key[4 * (AES_MAXNR + 1)]; 42# endif 43 int rounds; 44}; 45typedef struct aes_key_st AES_KEY; 46 47# endif 48# ifndef OPENSSL_NO_DEPRECATED_3_0 49OSSL_DEPRECATEDIN_3_0 const char *AES_options(void); 50OSSL_DEPRECATEDIN_3_0 51int AES_set_encrypt_key(const unsigned char *userKey, const int bits, 52 AES_KEY *key); 53OSSL_DEPRECATEDIN_3_0 54int AES_set_decrypt_key(const unsigned char *userKey, const int bits, 55 AES_KEY *key); 56OSSL_DEPRECATEDIN_3_0 57void AES_encrypt(const unsigned char *in, unsigned char *out, 58 const AES_KEY *key); 59OSSL_DEPRECATEDIN_3_0 60void AES_decrypt(const unsigned char *in, unsigned char *out, 61 const AES_KEY *key); 62OSSL_DEPRECATEDIN_3_0 63void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, 64 const AES_KEY *key, const int enc); 65OSSL_DEPRECATEDIN_3_0 66void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, 67 size_t length, const AES_KEY *key, 68 unsigned char *ivec, const int enc); 69OSSL_DEPRECATEDIN_3_0 70void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, 71 size_t length, const AES_KEY *key, 72 unsigned char *ivec, int *num, const int enc); 73OSSL_DEPRECATEDIN_3_0 74void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, 75 size_t length, const AES_KEY *key, 76 unsigned char *ivec, int *num, const int enc); 77OSSL_DEPRECATEDIN_3_0 78void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, 79 size_t length, const AES_KEY *key, 80 unsigned char *ivec, int *num, const int enc); 81OSSL_DEPRECATEDIN_3_0 82void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, 83 size_t length, const AES_KEY *key, 84 unsigned char *ivec, int *num); 85 86/* NB: the IV is _two_ blocks long */ 87OSSL_DEPRECATEDIN_3_0 88void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 89 size_t length, const AES_KEY *key, 90 unsigned char *ivec, const int enc); 91/* NB: the IV is _four_ blocks long */ 92OSSL_DEPRECATEDIN_3_0 93void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 94 size_t length, const AES_KEY *key, const AES_KEY *key2, 95 const unsigned char *ivec, const int enc); 96OSSL_DEPRECATEDIN_3_0 97int AES_wrap_key(AES_KEY *key, const unsigned char *iv, 98 unsigned char *out, const unsigned char *in, 99 unsigned int inlen); 100OSSL_DEPRECATEDIN_3_0 101int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, 102 unsigned char *out, const unsigned char *in, 103 unsigned int inlen); 104# endif 105 106 107# ifdef __cplusplus 108} 109# endif 110 111#endif 112