FreeTDS API
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
des.h
1 #ifndef DES_H
2 #define DES_H
3 
4 #ifdef HAVE_NETTLE
5 #include <nettle/des.h>
6 
7 typedef struct des_ctx DES_KEY;
8 #endif
9 
10 #include <freetds/pushvis.h>
11 
12 typedef unsigned char des_cblock[8];
13 
14 #ifndef HAVE_NETTLE
15 typedef struct des_key
16 {
17  unsigned char kn[16][8];
18  TDS_UINT sp[8][64];
19  unsigned char iperm[16][16][8];
20  unsigned char fperm[16][16][8];
21 } DES_KEY;
22 
23 int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len);
24 void tds_des_encrypt(DES_KEY * key, des_cblock block);
25 void _mcrypt_decrypt(DES_KEY * key, unsigned char *block);
26 #endif
27 
28 void tds_des_set_odd_parity(des_cblock key);
29 int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, des_cblock output);
30 
31 #include <freetds/popvis.h>
32 
33 #ifdef HAVE_NETTLE
34 static inline void tds_des_encrypt(DES_KEY * key, des_cblock block)
35 {
36  nettle_des_encrypt(key, sizeof(block), block, block);
37 }
38 
39 static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len)
40 {
41  return nettle_des_set_key(dkey, user_key);
42 }
43 #endif
44 
45 #endif /* !DES_H */
Definition: des.h:15