aes_impl
static struct aes_impl aes_hwaes_impl = {
struct aes_impl aes_bear_impl = {
extern struct aes_impl aes_bear_impl;
struct aes_impl aes_bear64_impl = {
extern struct aes_impl aes_bear64_impl;
KASSERT(aes_impl == NULL);
aes_impl = aes_md_impl;
if (aes_impl == NULL) {
aes_impl = aes_default_impl;
if (aes_impl == NULL)
aprint_debug("aes: %s\n", aes_impl->ai_name);
aes_md_init(const struct aes_impl *impl)
KASSERTMSG(aes_impl == NULL,
aes_impl->ai_name, impl->ai_name);
aes_impl->ai_setenckey(enc, key, nrounds);
aes_impl->ai_setdeckey(dec, key, nrounds);
aes_impl->ai_enc(enc, in, out, nrounds);
aes_impl->ai_dec(dec, in, out, nrounds);
aes_impl->ai_cbc_enc(enc, in, out, nbytes, iv, nrounds);
aes_impl->ai_cbc_dec(dec, in, out, nbytes, iv, nrounds);
aes_impl->ai_xts_enc(enc, in, out, nbytes, tweak, nrounds);
aes_impl->ai_xts_dec(dec, in, out, nbytes, tweak, nrounds);
aes_impl->ai_cbcmac_update1(enc, in, nbytes, auth, nrounds);
aes_impl->ai_ccm_enc1(enc, in, out, nbytes, authctr, nrounds);
aes_impl->ai_ccm_dec1(enc, in, out, nbytes, authctr, nrounds);
static const struct aes_impl *const aes_default_impl = &aes_bear64_impl;
static const struct aes_impl *const aes_default_impl = &aes_bear_impl;
static const struct aes_impl *aes_md_impl __read_mostly;
static const struct aes_impl *aes_impl __read_mostly;
KASSERTMSG(aes_impl != NULL,
node.sysctl_data = __UNCONST(aes_impl->ai_name);
node.sysctl_size = strlen(aes_impl->ai_name) + 1;
void aes_md_init(const struct aes_impl *);
int aes_selftest(const struct aes_impl *);
aes_selftest_encdec_cbc(const struct aes_impl *impl)
aes_selftest_encdec_xts(const struct aes_impl *impl)
aes_selftest_cbcmac(const struct aes_impl *impl)
aes_selftest_ccm(const struct aes_impl *impl)
aes_selftest(const struct aes_impl *impl)
aes_selftest_encdec(const struct aes_impl *impl)
struct aes_impl aes_armv8_impl = {
extern struct aes_impl aes_armv8_impl;
extern struct aes_impl aes_neon_impl;
struct aes_impl aes_neon_impl = {
struct aes_impl aes_ni_impl = {
extern struct aes_impl aes_ni_impl;
extern struct aes_impl aes_sse2_4x32_impl;
struct aes_impl aes_sse2_4x32_impl = {
extern struct aes_impl aes_ssse3_impl;
struct aes_impl aes_ssse3_impl = {
struct aes_impl aes_via_impl = {
extern struct aes_impl aes_via_impl;