|
|
1.1.1.4 ! root 1: /* Deprecated/legacy */ ! 2: 1.1 root 3: /* crypto/des/des.org */ 4: /* Copyright (C) 1995-1997 Eric Young ([email protected]) 5: * All rights reserved. 6: * 7: * This package is an SSL implementation written 8: * by Eric Young ([email protected]). 9: * The implementation was written so as to conform with Netscapes SSL. 10: * 11: * This library is free for commercial and non-commercial use as long as 12: * the following conditions are aheared to. The following conditions 13: * apply to all code found in this distribution, be it the RC4, RSA, 14: * lhash, DES, etc., code; not just the SSL code. The SSL documentation 15: * included with this distribution is covered by the same copyright terms 16: * except that the holder is Tim Hudson ([email protected]). 17: * 18: * Copyright remains Eric Young's, and as such any Copyright notices in 19: * the code are not to be removed. 20: * If this package is used in a product, Eric Young should be given attribution 21: * as the author of the parts of the library used. 22: * This can be in the form of a textual message at program startup or 23: * in documentation (online or textual) provided with the package. 24: * 25: * Redistribution and use in source and binary forms, with or without 26: * modification, are permitted provided that the following conditions 27: * are met: 28: * 1. Redistributions of source code must retain the copyright 29: * notice, this list of conditions and the following disclaimer. 30: * 2. Redistributions in binary form must reproduce the above copyright 31: * notice, this list of conditions and the following disclaimer in the 32: * documentation and/or other materials provided with the distribution. 33: * 3. All advertising materials mentioning features or use of this software 34: * must display the following acknowledgement: 35: * "This product includes cryptographic software written by 36: * Eric Young ([email protected])" 37: * The word 'cryptographic' can be left out if the rouines from the library 38: * being used are not cryptographic related :-). 39: * 4. If you include any Windows specific code (or a derivative thereof) from 40: * the apps directory (application code) you must include an acknowledgement: 41: * "This product includes software written by Tim Hudson ([email protected])" 42: * 43: * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 44: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 45: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 46: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 47: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 48: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 49: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 51: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 52: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 53: * SUCH DAMAGE. 54: * 55: * The licence and distribution terms for any publically available version or 56: * derivative of this code cannot be changed. i.e. this code cannot simply be 57: * copied and put under another distribution licence 58: * [including the GNU Public Licence.] 59: */ 60: 61: /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 62: * 63: * Always modify des.org since des.h is automatically generated from 64: * it during SSLeay configuration. 65: * 66: * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 67: */ 68: 69: #ifndef HEADER_DES_H 70: #define HEADER_DES_H 71: 72: #ifdef __cplusplus 73: extern "C" { 74: #endif 75: 1.1.1.2 root 76: #ifndef LINUX_DRIVER 1.1 root 77: #include <stdio.h> 1.1.1.2 root 78: #endif 1.1 root 79: 80: /* If this is set to 'unsigned int' on a DEC Alpha, this gives about a 81: * %20 speed up (longs are 8 bytes, int's are 4). */ 82: #ifndef DES_LONG 1.1.1.2 root 83: #define DES_LONG unsigned __int32 1.1 root 84: #endif 85: 86: typedef unsigned char des_cblock[8]; 87: typedef struct des_ks_struct 88: { 89: union { 90: des_cblock _; 91: /* make sure things are correct size on machines with 92: * 8 byte longs */ 93: DES_LONG pad[2]; 94: } ks; 95: #undef _ 96: #define _ ks._ 97: } des_key_schedule[16]; 98: 99: #define DES_KEY_SZ (sizeof(des_cblock)) 100: #define DES_SCHEDULE_SZ (sizeof(des_key_schedule)) 101: 102: #define DES_ENCRYPT 1 103: #define DES_DECRYPT 0 104: 105: #define DES_CBC_MODE 0 106: #define DES_PCBC_MODE 1 107: 108: #define des_ecb2_encrypt(i,o,k1,k2,e) \ 109: des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) 110: 111: #define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ 112: des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) 113: 114: #define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ 115: des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) 116: 117: #define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ 118: des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) 119: 120: #define C_Block des_cblock 121: #define Key_schedule des_key_schedule 122: #ifdef KERBEROS 123: #define ENCRYPT DES_ENCRYPT 124: #define DECRYPT DES_DECRYPT 125: #endif 126: #define KEY_SZ DES_KEY_SZ 127: #define string_to_key des_string_to_key 128: #define read_pw_string des_read_pw_string 129: #define random_key des_random_key 130: #define pcbc_encrypt des_pcbc_encrypt 131: #define set_key des_set_key 132: #define key_sched des_key_sched 133: #define ecb_encrypt des_ecb_encrypt 134: #define cbc_encrypt des_cbc_encrypt 135: #define ncbc_encrypt des_ncbc_encrypt 136: #define xcbc_encrypt des_xcbc_encrypt 137: #define cbc_cksum des_cbc_cksum 138: #define quad_cksum des_quad_cksum 139: 140: /* For compatibility with the MIT lib - eay 20/05/92 */ 141: typedef des_key_schedule bit_64; 142: #define des_fixup_key_parity des_set_odd_parity 143: #define des_check_key_parity check_parity 144: 145: extern int des_check_key; /* defaults to false */ 146: extern int des_rw_mode; /* defaults to DES_PCBC_MODE */ 147: 148: /* The next line is used to disable full ANSI prototypes, if your 149: * compiler has problems with the prototypes, make sure this line always 150: * evaluates to true :-) */ 151: #if defined(MSDOS) || defined(__STDC__) 152: #undef NOPROTO 153: #endif 154: #ifndef NOPROTO 155: char *des_options(void); 1.1.1.3 root 156: void des_ecb3_encrypt(des_cblock *input,des_cblock *output, 1.1 root 157: des_key_schedule ks1,des_key_schedule ks2, 158: des_key_schedule ks3, int enc); 159: DES_LONG des_cbc_cksum(des_cblock *input,des_cblock *output, 160: long length,des_key_schedule schedule,des_cblock *ivec); 161: void des_cbc_encrypt(des_cblock *input,des_cblock *output,long length, 162: des_key_schedule schedule,des_cblock *ivec,int enc); 163: void des_ncbc_encrypt(des_cblock *input,des_cblock *output,long length, 164: des_key_schedule schedule,des_cblock *ivec,int enc); 165: void des_xcbc_encrypt(des_cblock *input,des_cblock *output,long length, 166: des_key_schedule schedule,des_cblock *ivec, 167: des_cblock *inw,des_cblock *outw,int enc); 168: void des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits, 169: long length,des_key_schedule schedule,des_cblock *ivec,int enc); 170: void des_ecb_encrypt(des_cblock *input,des_cblock *output, 171: des_key_schedule ks,int enc); 1.1.1.3 root 172: void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc); 173: void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc); 174: void des_encrypt3(DES_LONG *data, des_key_schedule ks1, 1.1 root 175: des_key_schedule ks2, des_key_schedule ks3); 1.1.1.3 root 176: void des_decrypt3(DES_LONG *data, des_key_schedule ks1, 1.1 root 177: des_key_schedule ks2, des_key_schedule ks3); 178: void des_ede3_cbc_encrypt(des_cblock *input, des_cblock *output, 179: long length, des_key_schedule ks1, des_key_schedule ks2, 180: des_key_schedule ks3, des_cblock *ivec, int enc); 181: void des_ede3_cfb64_encrypt(unsigned char *in, unsigned char *out, 182: long length, des_key_schedule ks1, des_key_schedule ks2, 183: des_key_schedule ks3, des_cblock *ivec, int *num, int enc); 184: void des_ede3_ofb64_encrypt(unsigned char *in, unsigned char *out, 185: long length, des_key_schedule ks1, des_key_schedule ks2, 186: des_key_schedule ks3, des_cblock *ivec, int *num); 187: 188: void des_xwhite_in2out(des_cblock (*des_key), des_cblock (*in_white), 189: des_cblock (*out_white)); 190: 191: int des_enc_read(int fd,char *buf,int len,des_key_schedule sched, 192: des_cblock *iv); 193: int des_enc_write(int fd,char *buf,int len,des_key_schedule sched, 194: des_cblock *iv); 195: char *des_fcrypt(const char *buf,const char *salt, char *ret); 196: #ifdef PERL5 197: char *des_crypt(const char *buf,const char *salt); 198: #else 199: /* some stupid compilers complain because I have declared char instead 200: * of const char */ 201: #ifdef HEADER_DES_LOCL_H 202: char *crypt(const char *buf,const char *salt); 203: #else 204: char *crypt(); 205: #endif 206: #endif 207: void des_ofb_encrypt(unsigned char *in,unsigned char *out, 208: int numbits,long length,des_key_schedule schedule,des_cblock *ivec); 209: void des_pcbc_encrypt(des_cblock *input,des_cblock *output,long length, 210: des_key_schedule schedule,des_cblock *ivec,int enc); 211: DES_LONG des_quad_cksum(des_cblock *input,des_cblock *output, 212: long length,int out_count,des_cblock *seed); 213: void des_random_seed(des_cblock key); 214: void des_random_key(des_cblock ret); 215: int des_read_password(des_cblock *key,char *prompt,int verify); 216: int des_read_2passwords(des_cblock *key1,des_cblock *key2, 217: char *prompt,int verify); 218: int des_read_pw_string(char *buf,int length,char *prompt,int verify); 219: void des_set_odd_parity(des_cblock *key); 220: int des_is_weak_key(des_cblock *key); 221: int des_set_key(des_cblock *key,des_key_schedule schedule); 1.1.1.3 root 222: int des_key_sched(des_cblock *key,des_key_schedule schedule); 1.1 root 223: void des_string_to_key(char *str,des_cblock *key); 224: void des_string_to_2keys(char *str,des_cblock *key1,des_cblock *key2); 225: void des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length, 226: des_key_schedule schedule, des_cblock *ivec, int *num, int enc); 227: void des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length, 228: des_key_schedule schedule, des_cblock *ivec, int *num); 229: int des_read_pw(char *buf, char *buff, int size, char *prompt, int verify); 230: 231: /* Extra functions from Mark Murray <[email protected]> */ 1.1.1.2 root 232: #ifndef LINUX_DRIVER 1.1 root 233: void des_cblock_print_file(des_cblock *cb, FILE *fp); 1.1.1.2 root 234: #endif 1.1 root 235: /* The following functions are not in the normal unix build or the 236: * SSLeay build. When using the SSLeay build, use RAND_seed() 237: * and RAND_bytes() instead. */ 238: int des_new_random_key(des_cblock *key); 239: void des_init_random_number_generator(des_cblock *key); 240: void des_set_random_generator_seed(des_cblock *key); 241: void des_set_sequence_number(des_cblock new_sequence_number); 242: void des_generate_random_block(des_cblock *block); 243: 244: #else 245: 246: char *des_options(); 247: void des_ecb3_encrypt(); 248: DES_LONG des_cbc_cksum(); 249: void des_cbc_encrypt(); 250: void des_ncbc_encrypt(); 251: void des_xcbc_encrypt(); 252: void des_cfb_encrypt(); 253: void des_ede3_cfb64_encrypt(); 254: void des_ede3_ofb64_encrypt(); 255: void des_ecb_encrypt(); 1.1.1.3 root 256: void des_encrypt(); 257: void des_encrypt2(); 258: void des_encrypt3(); 259: void des_decrypt3(); 1.1 root 260: void des_ede3_cbc_encrypt(); 261: int des_enc_read(); 262: int des_enc_write(); 263: char *des_fcrypt(); 264: #ifdef PERL5 265: char *des_crypt(); 266: #else 267: char *crypt(); 268: #endif 269: void des_ofb_encrypt(); 270: void des_pcbc_encrypt(); 271: DES_LONG des_quad_cksum(); 272: void des_random_seed(); 273: void des_random_key(); 274: int des_read_password(); 275: int des_read_2passwords(); 276: int des_read_pw_string(); 277: void des_set_odd_parity(); 278: int des_is_weak_key(); 279: int des_set_key(); 280: int des_key_sched(); 281: void des_string_to_key(); 282: void des_string_to_2keys(); 283: void des_cfb64_encrypt(); 284: void des_ofb64_encrypt(); 285: int des_read_pw(); 286: void des_xwhite_in2out(); 287: 288: /* Extra functions from Mark Murray <[email protected]> */ 289: void des_cblock_print_file(); 290: /* The following functions are not in the normal unix build or the 291: * SSLeay build. When using the SSLeay build, use RAND_seed() 292: * and RAND_bytes() instead. */ 293: #ifdef FreeBSD 294: int des_new_random_key(); 295: void des_init_random_number_generator(); 296: void des_set_random_generator_seed(); 297: void des_set_sequence_number(); 298: void des_generate_random_block(); 299: #endif 300: 301: #endif 302: 303: #ifdef __cplusplus 304: } 305: #endif 306: 307: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.