]> git.ipfire.org Git - thirdparty/openssl.git/blame - providers/implementations/ciphers/cipher_aes.c
prov: prefix all exposed 'cipher' symbols with ossl_
[thirdparty/openssl.git] / providers / implementations / ciphers / cipher_aes.c
CommitLineData
e1178600 1/*
33388b44 2 * Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
e1178600
SL
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
c72fa255
MC
10/*
11 * AES low level APIs are deprecated for public use, but still ok for internal
12 * use where we're using them to implement the higher level EVP interface, as is
13 * the case here.
14 */
15#include "internal/deprecated.h"
16
e1178600
SL
17/* Dispatch functions for AES cipher modes ecb, cbc, ofb, cfb, ctr */
18
4a42e264 19#include "cipher_aes.h"
af3e7e1b 20#include "prov/implementations.h"
f99d3eed 21#include "prov/providercommon.h"
e1178600 22
363b1e5d
DMSP
23static OSSL_FUNC_cipher_freectx_fn aes_freectx;
24static OSSL_FUNC_cipher_dupctx_fn aes_dupctx;
e1178600
SL
25
26static void aes_freectx(void *vctx)
27{
28 PROV_AES_CTX *ctx = (PROV_AES_CTX *)vctx;
29
592dcfd3 30 ossl_cipher_generic_reset_ctx((PROV_CIPHER_CTX *)vctx);
e1178600
SL
31 OPENSSL_clear_free(ctx, sizeof(*ctx));
32}
33
34static void *aes_dupctx(void *ctx)
35{
36 PROV_AES_CTX *in = (PROV_AES_CTX *)ctx;
f99d3eed 37 PROV_AES_CTX *ret;
e1178600 38
f99d3eed
P
39 if (!ossl_prov_is_running())
40 return NULL;
41
42 ret = OPENSSL_malloc(sizeof(*ret));
e1178600
SL
43 if (ret == NULL) {
44 ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
45 return NULL;
46 }
f75abcc0 47 in->base.hw->copyctx(&ret->base, &in->base);
e1178600
SL
48
49 return ret;
50}
51
1be63951 52/* ossl_aes256ecb_functions */
e1178600 53IMPLEMENT_generic_cipher(aes, AES, ecb, ECB, 0, 256, 128, 0, block)
1be63951 54/* ossl_aes192ecb_functions */
e1178600 55IMPLEMENT_generic_cipher(aes, AES, ecb, ECB, 0, 192, 128, 0, block)
1be63951 56/* ossl_aes128ecb_functions */
e1178600 57IMPLEMENT_generic_cipher(aes, AES, ecb, ECB, 0, 128, 128, 0, block)
1be63951 58/* ossl_aes256cbc_functions */
e1178600 59IMPLEMENT_generic_cipher(aes, AES, cbc, CBC, 0, 256, 128, 128, block)
1be63951 60/* ossl_aes192cbc_functions */
e1178600 61IMPLEMENT_generic_cipher(aes, AES, cbc, CBC, 0, 192, 128, 128, block)
1be63951 62/* ossl_aes128cbc_functions */
e1178600 63IMPLEMENT_generic_cipher(aes, AES, cbc, CBC, 0, 128, 128, 128, block)
1be63951 64/* ossl_aes256ofb_functions */
e1178600 65IMPLEMENT_generic_cipher(aes, AES, ofb, OFB, 0, 256, 8, 128, stream)
1be63951 66/* ossl_aes192ofb_functions */
e1178600 67IMPLEMENT_generic_cipher(aes, AES, ofb, OFB, 0, 192, 8, 128, stream)
1be63951 68/* ossl_aes128ofb_functions */
e1178600 69IMPLEMENT_generic_cipher(aes, AES, ofb, OFB, 0, 128, 8, 128, stream)
1be63951 70/* ossl_aes256cfb_functions */
e1178600 71IMPLEMENT_generic_cipher(aes, AES, cfb, CFB, 0, 256, 8, 128, stream)
1be63951 72/* ossl_aes192cfb_functions */
e1178600 73IMPLEMENT_generic_cipher(aes, AES, cfb, CFB, 0, 192, 8, 128, stream)
1be63951 74/* ossl_aes128cfb_functions */
e1178600 75IMPLEMENT_generic_cipher(aes, AES, cfb, CFB, 0, 128, 8, 128, stream)
1be63951 76/* ossl_aes256cfb1_functions */
e1178600 77IMPLEMENT_generic_cipher(aes, AES, cfb1, CFB, 0, 256, 8, 128, stream)
1be63951 78/* ossl_aes192cfb1_functions */
e1178600 79IMPLEMENT_generic_cipher(aes, AES, cfb1, CFB, 0, 192, 8, 128, stream)
1be63951 80/* ossl_aes128cfb1_functions */
e1178600 81IMPLEMENT_generic_cipher(aes, AES, cfb1, CFB, 0, 128, 8, 128, stream)
1be63951 82/* ossl_aes256cfb8_functions */
e1178600 83IMPLEMENT_generic_cipher(aes, AES, cfb8, CFB, 0, 256, 8, 128, stream)
1be63951 84/* ossl_aes192cfb8_functions */
e1178600 85IMPLEMENT_generic_cipher(aes, AES, cfb8, CFB, 0, 192, 8, 128, stream)
1be63951 86/* ossl_aes128cfb8_functions */
e1178600 87IMPLEMENT_generic_cipher(aes, AES, cfb8, CFB, 0, 128, 8, 128, stream)
1be63951 88/* ossl_aes256ctr_functions */
e1178600 89IMPLEMENT_generic_cipher(aes, AES, ctr, CTR, 0, 256, 8, 128, stream)
1be63951 90/* ossl_aes192ctr_functions */
e1178600 91IMPLEMENT_generic_cipher(aes, AES, ctr, CTR, 0, 192, 8, 128, stream)
1be63951 92/* ossl_aes128ctr_functions */
e1178600 93IMPLEMENT_generic_cipher(aes, AES, ctr, CTR, 0, 128, 8, 128, stream)
7cc355c2
SL
94
95#include "cipher_aes_cts.inc"