Add BN_native2bn and BN_bn2nativepad, for native BIGNUM import/export
[openssl.git] / include / openssl / idea.h
1 /*
2  * Copyright 1995-2016 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 HEADER_IDEA_H
11 # define HEADER_IDEA_H
12
13 # include <openssl/opensslconf.h>
14
15 # ifndef OPENSSL_NO_IDEA
16 # ifdef  __cplusplus
17 extern "C" {
18 # endif
19
20 typedef unsigned int IDEA_INT;
21
22 # define IDEA_ENCRYPT    1
23 # define IDEA_DECRYPT    0
24
25 # define IDEA_BLOCK      8
26 # define IDEA_KEY_LENGTH 16
27
28 typedef struct idea_key_st {
29     IDEA_INT data[9][6];
30 } IDEA_KEY_SCHEDULE;
31
32 const char *IDEA_options(void);
33 void IDEA_ecb_encrypt(const unsigned char *in, unsigned char *out,
34                       IDEA_KEY_SCHEDULE *ks);
35 void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks);
36 void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
37 void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out,
38                       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
39                       int enc);
40 void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out,
41                         long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
42                         int *num, int enc);
43 void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out,
44                         long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
45                         int *num);
46 void IDEA_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks);
47
48 # if !OPENSSL_API_1_1_0
49 #  define idea_options          IDEA_options
50 #  define idea_ecb_encrypt      IDEA_ecb_encrypt
51 #  define idea_set_encrypt_key  IDEA_set_encrypt_key
52 #  define idea_set_decrypt_key  IDEA_set_decrypt_key
53 #  define idea_cbc_encrypt      IDEA_cbc_encrypt
54 #  define idea_cfb64_encrypt    IDEA_cfb64_encrypt
55 #  define idea_ofb64_encrypt    IDEA_ofb64_encrypt
56 #  define idea_encrypt          IDEA_encrypt
57 # endif
58
59 # ifdef  __cplusplus
60 }
61 # endif
62 # endif
63
64 #endif