52 #ifndef HEADER_CAMELLIA_H
53 # define HEADER_CAMELLIA_H
55 # include <openssl/opensslconf.h>
57 # ifdef OPENSSL_NO_CAMELLIA
58 # error CAMELLIA is disabled.
63 # define CAMELLIA_ENCRYPT 1
64 # define CAMELLIA_DECRYPT 0
77 # define CAMELLIA_BLOCK_SIZE 16
78 # define CAMELLIA_TABLE_BYTE_LEN 272
79 # define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4)
81 typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN];
84 struct camellia_key_st {
87 KEY_TABLE_TYPE rd_key;
91 typedef struct camellia_key_st CAMELLIA_KEY;
94 int private_Camellia_set_key(
const unsigned char *userKey,
const int bits,
97 int Camellia_set_key(
const unsigned char *userKey,
const int bits,
100 void Camellia_encrypt(
const unsigned char *in,
unsigned char *out,
101 const CAMELLIA_KEY *key);
102 void Camellia_decrypt(
const unsigned char *in,
unsigned char *out,
103 const CAMELLIA_KEY *key);
105 void Camellia_ecb_encrypt(
const unsigned char *in,
unsigned char *out,
106 const CAMELLIA_KEY *key,
const int enc);
107 void Camellia_cbc_encrypt(
const unsigned char *in,
unsigned char *out,
108 size_t length,
const CAMELLIA_KEY *key,
109 unsigned char *ivec,
const int enc);
110 void Camellia_cfb128_encrypt(
const unsigned char *in,
unsigned char *out,
111 size_t length,
const CAMELLIA_KEY *key,
112 unsigned char *ivec,
int *num,
const int enc);
113 void Camellia_cfb1_encrypt(
const unsigned char *in,
unsigned char *out,
114 size_t length,
const CAMELLIA_KEY *key,
115 unsigned char *ivec,
int *num,
const int enc);
116 void Camellia_cfb8_encrypt(
const unsigned char *in,
unsigned char *out,
117 size_t length,
const CAMELLIA_KEY *key,
118 unsigned char *ivec,
int *num,
const int enc);
119 void Camellia_ofb128_encrypt(
const unsigned char *in,
unsigned char *out,
120 size_t length,
const CAMELLIA_KEY *key,
121 unsigned char *ivec,
int *num);
122 void Camellia_ctr128_encrypt(
const unsigned char *in,
unsigned char *out,
123 size_t length,
const CAMELLIA_KEY *key,
124 unsigned char ivec[CAMELLIA_BLOCK_SIZE],
125 unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE],