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 /*
11 * Camellia low level APIs are deprecated for public use, but still ok for
12 * internal use.
13 */
14 #include "internal/deprecated.h"
15
16 #include <openssl/opensslv.h>
17 #include <openssl/camellia.h>
18 #include "cmll_local.h"
19
Camellia_set_key(const unsigned char * userKey,const int bits,CAMELLIA_KEY * key)20 int Camellia_set_key(const unsigned char *userKey, const int bits,
21 CAMELLIA_KEY *key)
22 {
23 if (!userKey || !key)
24 return -1;
25 if (bits != 128 && bits != 192 && bits != 256)
26 return -2;
27 key->grand_rounds = Camellia_Ekeygen(bits, userKey, key->u.rd_key);
28 return 0;
29 }
30
Camellia_encrypt(const unsigned char * in,unsigned char * out,const CAMELLIA_KEY * key)31 void Camellia_encrypt(const unsigned char *in, unsigned char *out,
32 const CAMELLIA_KEY *key)
33 {
34 Camellia_EncryptBlock_Rounds(key->grand_rounds, in, key->u.rd_key, out);
35 }
36
Camellia_decrypt(const unsigned char * in,unsigned char * out,const CAMELLIA_KEY * key)37 void Camellia_decrypt(const unsigned char *in, unsigned char *out,
38 const CAMELLIA_KEY *key)
39 {
40 Camellia_DecryptBlock_Rounds(key->grand_rounds, in, key->u.rd_key, out);
41 }
42