1/*
2 * Copyright 2019 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/*-
11 * Generic support for ARIA CCM.
12 */
13
14#include "cipher_aria_ccm.h"
15
16static int ccm_aria_initkey(PROV_CCM_CTX *ctx,
17 const unsigned char *key, size_t keylen)
18{
19 PROV_ARIA_CCM_CTX *actx = (PROV_ARIA_CCM_CTX *)ctx;
20
21 aria_set_encrypt_key(key, keylen * 8, &actx->ks.ks);
22 CRYPTO_ccm128_init(&ctx->ccm_ctx, ctx->m, ctx->l, &actx->ks.ks,
23 (block128_f)aria_encrypt);
24 ctx->str = NULL;
25 ctx->key_set = 1;
26 return 1;
27}
28
29static const PROV_CCM_HW ccm_aria = {
30 ccm_aria_initkey,
31 ccm_generic_setiv,
32 ccm_generic_setaad,
33 ccm_generic_auth_encrypt,
34 ccm_generic_auth_decrypt,
35 ccm_generic_gettag
36};
37const PROV_CCM_HW *PROV_ARIA_HW_ccm(size_t keybits)
38{
39 return &ccm_aria;
40}
41