/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 | } Line | Count | Source | 42 | 3 | { \ | 43 | 3 | return &aria_##keylen##_##mode; \ | 44 | 3 | } |
Line | Count | Source | 42 | 3 | { \ | 43 | 3 | return &aria_##keylen##_##mode; \ | 44 | 3 | } |
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 | } Line | Count | Source | 64 | 3 | { \ | 65 | 3 | return (EVP_CIPHER *)&aria_##keylen##_##mode; \ | 66 | 3 | } |
Line | Count | Source | 64 | 3 | { \ | 65 | 3 | return (EVP_CIPHER *)&aria_##keylen##_##mode; \ | 66 | 3 | } |
Line | Count | Source | 64 | 3 | { \ | 65 | 3 | return (EVP_CIPHER *)&aria_##keylen##_##mode; \ | 66 | 3 | } |
Line | Count | Source | 64 | 3 | { \ | 65 | 3 | return (EVP_CIPHER *)&aria_##keylen##_##mode; \ | 66 | 3 | } |
Line | Count | Source | 64 | 3 | { \ | 65 | 3 | return (EVP_CIPHER *)&aria_##keylen##_##mode; \ | 66 | 3 | } |
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 |