home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0679.ZIP / CCE_0679.PD / DES301 / DES.H < prev    next >
C/C++ Source or Header  |  1993-10-08  |  4KB  |  117 lines

  1. /* des.h */
  2. /* Copyright (C) 1993 Eric Young - see README for more details */
  3. #ifndef DES_DEFS
  4. #define DES_DEFS
  5.  
  6. typedef unsigned char des_cblock[8];
  7. typedef struct des_ks_struct
  8.     {
  9.     union    {
  10.         des_cblock _;
  11.         /* make sure things are correct size on machines with
  12.          * 8 byte longs */
  13.         unsigned long pad[2];
  14.         } ks;
  15. #define _    ks._
  16.     } des_key_schedule[16];
  17.  
  18. #define DES_KEY_SZ     (sizeof(des_cblock))
  19. #define DES_ENCRYPT    1
  20. #define DES_DECRYPT    0
  21.  
  22. #define DES_CBC_MODE    0
  23. #define DES_PCBC_MODE    1
  24.  
  25. #define C_Block des_cblock
  26. #define Key_schedule des_key_schedule
  27. #define ENCRYPT DES_ENCRYPT
  28. #define DECRYPT DES_DECRYPT
  29. #define KEY_SZ DES_KEY_SZ
  30. #define string_to_key des_string_to_key
  31. #define read_pw_string des_read_pw_string
  32. #define random_key des_random_key
  33. #define pcbc_encrypt des_pcbc_encrypt
  34. #define set_key des_set_key
  35. #define key_sched des_key_sched
  36. #define ecb_encrypt des_ecb_encrypt
  37. #define cbc_encrypt des_cbc_encrypt
  38. #define cbc_cksum des_cbc_cksum
  39. #define quad_cksum des_quad_cksum
  40.  
  41. /* For compatibility with the MIT lib - eay 20/05/92 */
  42. typedef struct des_ks_struct bit_64;
  43.  
  44. extern int des_check_key;    /* defaults to false */
  45. extern int des_rw_mode;        /* defaults to DES_PCBC_MODE */
  46.  
  47. /* The next line is used to disable full ANSI prototypes, if your
  48.  * compiler has problems with the prototypes, make sure this line always
  49.  * evaluates to true :-) */
  50. #if !defined(MSDOS) && !defined(__STDC__)
  51. #ifndef KERBEROS
  52. int des_3ecb_encrypt();
  53. int des_cbc_encrypt();
  54. int des_3cbc_encrypt();
  55. int des_cfb_encrypt();
  56. int des_ecb_encrypt();
  57. int des_encrypt();
  58. int des_enc_read();
  59. int des_enc_write();
  60. int des_ofb_encrypt();
  61. int des_pcbc_encrypt();
  62. int des_random_key();
  63. int des_read_password();
  64. int des_read_2passwords();
  65. int des_read_pw_string();
  66. int des_is_weak_key();
  67. int des_set_key();
  68. int des_key_sched();
  69. int des_string_to_key();
  70. int des_string_to_2keys();
  71. #endif
  72. char *crypt();
  73. unsigned long des_cbc_cksum();
  74. unsigned long des_quad_cksum();
  75. unsigned long des_cbc_cksum();
  76. void des_set_odd_parity();
  77. #else /* PROTO */
  78. int des_3ecb_encrypt(des_cblock *input,des_cblock *output,\
  79.     des_key_schedule ks1,des_key_schedule ks2,int encrypt);
  80. unsigned long des_cbc_cksum(des_cblock *input,des_cblock *output,\
  81.     long length,des_key_schedule schedule,des_cblock *ivec);
  82. int des_cbc_encrypt(des_cblock *input,des_cblock *output,long length,\
  83.     des_key_schedule schedule,des_cblock *ivec,int encrypt);
  84. int des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length,\
  85.     des_key_schedule sk1,des_key_schedule sk2,\
  86.     des_cblock *ivec1,des_cblock *ivec2,int encrypt);
  87. int des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits,\
  88.     long length,des_key_schedule schedule,des_cblock *ivec,int encrypt);
  89. int des_ecb_encrypt(des_cblock *input,des_cblock *output,\
  90.     des_key_schedule ks,int encrypt);
  91. int des_encrypt(unsigned long *input,unsigned long *output,
  92.     des_key_schedule ks, int encrypt);
  93. int des_enc_read(int fd,char *buf,int len,des_key_schedule sched,\
  94.     des_cblock *iv);
  95. int des_enc_write(int fd,char *buf,int len,des_key_schedule sched,\
  96.     des_cblock *iv);
  97. char *crypt(char *buf,char *salt);
  98. int des_ofb_encrypt(unsigned char *in,unsigned char *out,\
  99.     int numbits,long length,des_key_schedule schedule,des_cblock *ivec);
  100. int des_pcbc_encrypt(des_cblock *input,des_cblock *output,long length,\
  101.     des_key_schedule schedule,des_cblock *ivec,int encrypt);
  102. unsigned long des_quad_cksum(des_cblock *input,des_cblock *output,\
  103.     long length,int out_count,des_cblock *seed);
  104. int des_random_key(des_cblock ret);
  105. int des_read_password(des_cblock *key,char *prompt,int verify);
  106. int des_read_2passwords(des_cblock *key1,des_cblock *key2, \
  107.     char *prompt,int verify);
  108. int des_read_pw_string(char *buf,int length,char *prompt,int verify);
  109. void des_set_odd_parity(des_cblock *key);
  110. int des_is_weak_key(des_cblock *key);
  111. int des_set_key(des_cblock *key,des_key_schedule schedule);
  112. int des_key_sched(des_cblock *key,des_key_schedule schedule);
  113. int des_string_to_key(char *str,des_cblock *key);
  114. int des_string_to_2keys(char *str,des_cblock *key1,des_cblock *key2);
  115. #endif
  116. #endif
  117.