mirror of
https://github.com/openssl/openssl.git
synced 2025-01-06 13:26:43 +08:00
e1178600cc
The aes code has been refactored into generic and algorithn specific parts, so that most of the code can be shared. The cipher related files have been broken up into smaller parts. Add chunked variant of mode ciphers - aria uses this (many other ciphers will use this new code instead of the generic code used by aes). Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/9451)
62 lines
2.1 KiB
C
62 lines
2.1 KiB
C
/*
|
|
* Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
|
* this file except in compliance with the License. You can obtain a copy
|
|
* in the file LICENSE in the source distribution or at
|
|
* https://www.openssl.org/source/license.html
|
|
*/
|
|
|
|
#include <openssl/aes.h>
|
|
|
|
typedef struct prov_aes_ctx_st {
|
|
PROV_CIPHER_CTX base; /* Must be first */
|
|
union {
|
|
OSSL_UNION_ALIGN;
|
|
AES_KEY ks;
|
|
} ks;
|
|
|
|
/* Platform specific data */
|
|
union {
|
|
int dummy;
|
|
#if defined(OPENSSL_CPUID_OBJ) && defined(__s390__)
|
|
struct {
|
|
union {
|
|
OSSL_UNION_ALIGN;
|
|
/*-
|
|
* KM-AES parameter block - begin
|
|
* (see z/Architecture Principles of Operation >= SA22-7832-06)
|
|
*/
|
|
struct {
|
|
unsigned char k[32];
|
|
} km;
|
|
/* KM-AES parameter block - end */
|
|
/*-
|
|
* KMO-AES/KMF-AES parameter block - begin
|
|
* (see z/Architecture Principles of Operation >= SA22-7832-08)
|
|
*/
|
|
struct {
|
|
unsigned char cv[16];
|
|
unsigned char k[32];
|
|
} kmo_kmf;
|
|
/* KMO-AES/KMF-AES parameter block - end */
|
|
} param;
|
|
unsigned int fc;
|
|
int res;
|
|
} s390x;
|
|
#endif /* defined(OPENSSL_CPUID_OBJ) && defined(__s390__) */
|
|
} plat;
|
|
|
|
} PROV_AES_CTX;
|
|
|
|
#define PROV_CIPHER_HW_aes_ofb PROV_CIPHER_HW_aes_ofb128
|
|
#define PROV_CIPHER_HW_aes_cfb PROV_CIPHER_HW_aes_cfb128
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_ecb(size_t keybits);
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cbc(size_t keybits);
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_ofb128(size_t keybits);
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cfb128(size_t keybits);
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cfb1(size_t keybits);
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cfb8(size_t keybits);
|
|
const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_ctr(size_t keybits);
|
|
|