Home | History | Annotate | Line # | Download | only in openssl
      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_CAST_H
     11 # define HEADER_CAST_H
     12 
     13 # include <openssl/opensslconf.h>
     14 
     15 # ifndef OPENSSL_NO_CAST
     16 # ifdef  __cplusplus
     17 extern "C" {
     18 # endif
     19 
     20 # define CAST_ENCRYPT    1
     21 # define CAST_DECRYPT    0
     22 
     23 # define CAST_LONG unsigned int
     24 
     25 # define CAST_BLOCK      8
     26 # define CAST_KEY_LENGTH 16
     27 
     28 typedef struct cast_key_st {
     29     CAST_LONG data[32];
     30     int short_key;              /* Use reduced rounds for short key */
     31 } CAST_KEY;
     32 
     33 void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
     34 void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
     35                       const CAST_KEY *key, int enc);
     36 void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
     37 void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
     38 void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out,
     39                       long length, const CAST_KEY *ks, unsigned char *iv,
     40                       int enc);
     41 void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
     42                         long length, const CAST_KEY *schedule,
     43                         unsigned char *ivec, int *num, int enc);
     44 void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
     45                         long length, const CAST_KEY *schedule,
     46                         unsigned char *ivec, int *num);
     47 
     48 # ifdef  __cplusplus
     49 }
     50 # endif
     51 # endif
     52 
     53 #endif
     54