1 /* 2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the OpenSSL license (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_COMPAT < 0x10100000L 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 65