1 /* 2 * Copyright 2006-2020 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 #ifndef OPENSSL_CAMELLIA_H 11 # define OPENSSL_CAMELLIA_H 12 # pragma once 13 14 # include <openssl/macros.h> 15 # ifndef OPENSSL_NO_DEPRECATED_3_0 16 # define HEADER_CAMELLIA_H 17 # endif 18 19 # include <openssl/opensslconf.h> 20 21 # ifndef OPENSSL_NO_CAMELLIA 22 # include <stddef.h> 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 # define CAMELLIA_BLOCK_SIZE 16 28 29 # ifndef OPENSSL_NO_DEPRECATED_3_0 30 31 # define CAMELLIA_ENCRYPT 1 32 # define CAMELLIA_DECRYPT 0 33 34 /* 35 * Because array size can't be a const in C, the following two are macros. 36 * Both sizes are in bytes. 37 */ 38 39 /* This should be a hidden type, but EVP requires that the size be known */ 40 41 # define CAMELLIA_TABLE_BYTE_LEN 272 42 # define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) 43 44 typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match 45 * with WORD */ 46 47 struct camellia_key_st { 48 union { 49 double d; /* ensures 64-bit align */ 50 KEY_TABLE_TYPE rd_key; 51 } u; 52 int grand_rounds; 53 }; 54 typedef struct camellia_key_st CAMELLIA_KEY; 55 56 # endif /* OPENSSL_NO_DEPRECATED_3_0 */ 57 # ifndef OPENSSL_NO_DEPRECATED_3_0 58 OSSL_DEPRECATEDIN_3_0 int Camellia_set_key(const unsigned char *userKey, 59 const int bits, 60 CAMELLIA_KEY *key); 61 OSSL_DEPRECATEDIN_3_0 void Camellia_encrypt(const unsigned char *in, 62 unsigned char *out, 63 const CAMELLIA_KEY *key); 64 OSSL_DEPRECATEDIN_3_0 void Camellia_decrypt(const unsigned char *in, 65 unsigned char *out, 66 const CAMELLIA_KEY *key); 67 OSSL_DEPRECATEDIN_3_0 void Camellia_ecb_encrypt(const unsigned char *in, 68 unsigned char *out, 69 const CAMELLIA_KEY *key, 70 const int enc); 71 OSSL_DEPRECATEDIN_3_0 void Camellia_cbc_encrypt(const unsigned char *in, 72 unsigned char *out, 73 size_t length, 74 const CAMELLIA_KEY *key, 75 unsigned char *ivec, 76 const int enc); 77 OSSL_DEPRECATEDIN_3_0 void Camellia_cfb128_encrypt(const unsigned char *in, 78 unsigned char *out, 79 size_t length, 80 const CAMELLIA_KEY *key, 81 unsigned char *ivec, 82 int *num, 83 const int enc); 84 OSSL_DEPRECATEDIN_3_0 void Camellia_cfb1_encrypt(const unsigned char *in, 85 unsigned char *out, 86 size_t length, 87 const CAMELLIA_KEY *key, 88 unsigned char *ivec, 89 int *num, 90 const int enc); 91 OSSL_DEPRECATEDIN_3_0 void Camellia_cfb8_encrypt(const unsigned char *in, 92 unsigned char *out, 93 size_t length, 94 const CAMELLIA_KEY *key, 95 unsigned char *ivec, 96 int *num, 97 const int enc); 98 OSSL_DEPRECATEDIN_3_0 void Camellia_ofb128_encrypt(const unsigned char *in, 99 unsigned char *out, 100 size_t length, 101 const CAMELLIA_KEY *key, 102 unsigned char *ivec, 103 int *num); 104 OSSL_DEPRECATEDIN_3_0 105 void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out, 106 size_t length, const CAMELLIA_KEY *key, 107 unsigned char ivec[CAMELLIA_BLOCK_SIZE], 108 unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE], 109 unsigned int *num); 110 # endif 111 112 # ifdef __cplusplus 113 } 114 # endif 115 # endif 116 117 #endif 118