xref: /openssl/crypto/camellia/cmll_misc.c (revision 33388b44)
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