Coverage Report

Created: 2026-02-22 06:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl/crypto/evp/e_aria.c
Line
Count
Source
1
/*
2
 * Copyright 2017-2025 The OpenSSL Project Authors. All Rights Reserved.
3
 * Copyright (c) 2017, Oracle and/or its affiliates.  All rights reserved.
4
 *
5
 * Licensed under the Apache License 2.0 (the "License").  You may not use
6
 * this file except in compliance with the License.  You can obtain a copy
7
 * in the file LICENSE in the source distribution or at
8
 * https://www.openssl.org/source/license.html
9
 */
10
11
#include <openssl/macros.h>
12
13
#ifndef OPENSSL_NO_ARIA
14
#include "crypto/evp.h"
15
16
IMPLEMENT_BLOCK_CIPHER(aria_128, ks, aria, EVP_ARIA_KEY,
17
    NID_aria_128, 16, 16, 16, 128,
18
    0)
19
IMPLEMENT_BLOCK_CIPHER(aria_192, ks, aria, EVP_ARIA_KEY,
20
    NID_aria_192, 16, 24, 16, 128,
21
    0)
22
IMPLEMENT_BLOCK_CIPHER(aria_256, ks, aria, EVP_ARIA_KEY,
23
    NID_aria_256, 16, 32, 16, 128,
24
    0)
25
26
#define IMPLEMENT_ARIA_CFBR(ksize, cbits) \
27
    IMPLEMENT_CFBR(aria, aria, EVP_ARIA_KEY, ks, ksize, cbits, 16, 0)
28
IMPLEMENT_ARIA_CFBR(128, 1)
29
IMPLEMENT_ARIA_CFBR(192, 1)
30
IMPLEMENT_ARIA_CFBR(256, 1)
31
IMPLEMENT_ARIA_CFBR(128, 8)
32
IMPLEMENT_ARIA_CFBR(192, 8)
33
IMPLEMENT_ARIA_CFBR(256, 8)
34
35
#define BLOCK_CIPHER_generic(nid, keylen, blocksize, ivlen, nmode, mode, MODE, flags) \
36
    static const EVP_CIPHER aria_##keylen##_##mode = {                                \
37
        nid##_##keylen##_##nmode, blocksize, keylen / 8, ivlen,                       \
38
        flags | EVP_CIPH_##MODE##_MODE,                                               \
39
        EVP_ORIG_GLOBAL                                                               \
40
    };                                                                                \
41
    const EVP_CIPHER *EVP_aria_##keylen##_##mode(void)                                \
42
9
    {                                                                                 \
43
9
        return &aria_##keylen##_##mode;                                               \
44
9
    }
EVP_aria_128_ctr
Line
Count
Source
42
3
    {                                                                                 \
43
3
        return &aria_##keylen##_##mode;                                               \
44
3
    }
EVP_aria_192_ctr
Line
Count
Source
42
3
    {                                                                                 \
43
3
        return &aria_##keylen##_##mode;                                               \
44
3
    }
EVP_aria_256_ctr
Line
Count
Source
42
3
    {                                                                                 \
43
3
        return &aria_##keylen##_##mode;                                               \
44
3
    }
45
46
BLOCK_CIPHER_generic(NID_aria, 128, 1, 16, ctr, ctr, CTR, 0)
47
BLOCK_CIPHER_generic(NID_aria, 192, 1, 16, ctr, ctr, CTR, 0)
48
BLOCK_CIPHER_generic(NID_aria, 256, 1, 16, ctr, ctr, CTR, 0)
49
50
#define ARIA_AUTH_FLAGS (EVP_CIPH_FLAG_DEFAULT_ASN1    \
51
    | EVP_CIPH_CUSTOM_IV | EVP_CIPH_FLAG_CUSTOM_CIPHER \
52
    | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT   \
53
    | EVP_CIPH_CUSTOM_COPY | EVP_CIPH_FLAG_AEAD_CIPHER \
54
    | EVP_CIPH_CUSTOM_IV_LENGTH)
55
56
#define BLOCK_CIPHER_aead(keylen, mode, MODE)          \
57
    static const EVP_CIPHER aria_##keylen##_##mode = { \
58
        NID_aria_##keylen##_##mode,                    \
59
        1, keylen / 8, 12,                             \
60
        ARIA_AUTH_FLAGS | EVP_CIPH_##MODE##_MODE,      \
61
        EVP_ORIG_GLOBAL                                \
62
    };                                                 \
63
    const EVP_CIPHER *EVP_aria_##keylen##_##mode(void) \
64
18
    {                                                  \
65
18
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
18
    }
EVP_aria_128_gcm
Line
Count
Source
64
3
    {                                                  \
65
3
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
3
    }
EVP_aria_192_gcm
Line
Count
Source
64
3
    {                                                  \
65
3
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
3
    }
EVP_aria_256_gcm
Line
Count
Source
64
3
    {                                                  \
65
3
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
3
    }
EVP_aria_128_ccm
Line
Count
Source
64
3
    {                                                  \
65
3
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
3
    }
EVP_aria_192_ccm
Line
Count
Source
64
3
    {                                                  \
65
3
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
3
    }
EVP_aria_256_ccm
Line
Count
Source
64
3
    {                                                  \
65
3
        return (EVP_CIPHER *)&aria_##keylen##_##mode;  \
66
3
    }
67
68
BLOCK_CIPHER_aead(128, gcm, GCM)
69
BLOCK_CIPHER_aead(192, gcm, GCM)
70
BLOCK_CIPHER_aead(256, gcm, GCM)
71
72
BLOCK_CIPHER_aead(128, ccm, CCM)
73
BLOCK_CIPHER_aead(192, ccm, CCM)
74
BLOCK_CIPHER_aead(256, ccm, CCM)
75
76
#else
77
NON_EMPTY_TRANSLATION_UNIT
78
#endif