#ifndef _DB_CRYPTO_H_
#define _DB_CRYPTO_H_
#if defined(__cplusplus)
extern "C" {
#endif
#ifdef HAVE_CRYPTO_IPP
#include <ippcp.h>
#endif
struct __db_cipher {
u_int (*adj_size) __P((size_t));
int (*close) __P((ENV *, void *));
int (*decrypt) __P((ENV *, void *, void *, u_int8_t *, size_t));
int (*encrypt) __P((ENV *, void *, void *, u_int8_t *, size_t));
int (*init) __P((ENV *, DB_CIPHER *));
u_int8_t mac_key[DB_MAC_KEY];
void *data;
#define CIPHER_AES 1
u_int8_t alg;
u_int8_t spare[3];
#define CIPHER_ANY 0x00000001
u_int32_t flags;
};
#ifdef HAVE_CRYPTO
#include "crypto/rijndael/rijndael-api-fst.h"
typedef struct __cipher {
roff_t passwd;
size_t passwd_len;
u_int32_t flags;
} CIPHER;
#define DB_AES_KEYLEN 128
#define DB_AES_CHUNK 16
typedef struct __aes_cipher {
#ifdef HAVE_CRYPTO_IPP
void *ipp_ctx;
#else
keyInstance decrypt_ki;
keyInstance encrypt_ki;
#endif
u_int32_t flags;
} AES_CIPHER;
#include "dbinc_auto/crypto_ext.h"
#endif
#if defined(__cplusplus)
}
#endif
#endif