2 * lib/crypto/des/des_int.h
4 * Copyright 1987, 1988, 1990 by the Massachusetts Institute of Technology.
7 * Export of this software from the United States of America may
8 * require a specific license from the United States Government.
9 * It is the responsibility of any person or organization contemplating
10 * export to obtain such a license before exporting.
12 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13 * distribute this software and its documentation for any purpose and
14 * without fee is hereby granted, provided that the above copyright
15 * notice appear in all copies and that both that copyright notice and
16 * this permission notice appear in supporting documentation, and that
17 * the name of M.I.T. not be used in advertising or publicity pertaining
18 * to distribution of the software without specific, written prior
19 * permission. M.I.T. makes no representations about the suitability of
20 * this software for any purpose. It is provided "as is" without express
21 * or implied warranty.
24 * Private include file for the Data Encryption Standard library.
27 /* only do the whole thing once */
28 #ifndef DES_INTERNAL_DEFS
29 #define DES_INTERNAL_DEFS
31 #include "mit-des.h" /* From include/krb5 */
34 extern krb5_error_code mit_des_cbc_checksum
35 PROTOTYPE((krb5_pointer, size_t,krb5_pointer,size_t, krb5_checksum FAR * ));
38 extern long mit_des_cbc_cksum
39 PROTOTYPE((krb5_octet FAR *, krb5_octet FAR *, long , mit_des_key_schedule ,
42 extern int mit_des_ecb_encrypt
43 PROTOTYPE((unsigned long FAR *, unsigned long FAR *, mit_des_key_schedule , int ));
46 extern int mit_des_cbc_encrypt
47 PROTOTYPE((const mit_des_cblock FAR *in, mit_des_cblock FAR *out, long length,
48 mit_des_key_schedule schedule, mit_des_cblock ivec,
52 extern krb5_error_code mit_des_finish_random_key
53 PROTOTYPE(( krb5_pointer FAR *));
56 extern krb5_error_code mit_des_finish_key
57 PROTOTYPE(( krb5_encrypt_block FAR *));
60 extern krb5_error_code mit_des_init_random_key
61 PROTOTYPE(( const krb5_keyblock FAR *, krb5_pointer FAR *));
64 extern void mit_des_fixup_key_parity PROTOTYPE((mit_des_cblock ));
65 extern int mit_des_check_key_parity PROTOTYPE((mit_des_cblock ));
68 extern int mit_des_key_sched
69 PROTOTYPE((mit_des_cblock , mit_des_key_schedule ));
72 extern int mit_des_new_random_key
73 PROTOTYPE((mit_des_cblock , mit_des_random_key_seed FAR *));
74 extern void mit_des_init_random_number_generator
75 PROTOTYPE((mit_des_cblock, mit_des_random_key_seed FAR *));
76 extern void mit_des_set_random_generator_seed
77 PROTOTYPE((mit_des_cblock , mit_des_random_key_seed FAR *));
78 extern void mit_des_set_sequence_number
79 PROTOTYPE((mit_des_cblock , mit_des_random_key_seed FAR *));
80 extern void mit_des_generate_random_block
81 PROTOTYPE((mit_des_cblock , mit_des_random_key_seed FAR *));
84 extern krb5_error_code mit_des_process_key
85 PROTOTYPE(( krb5_encrypt_block FAR *, const krb5_keyblock FAR *));
88 extern krb5_error_code mit_des_random_key
89 PROTOTYPE(( const krb5_encrypt_block FAR *, krb5_pointer ,
90 krb5_keyblock FAR * FAR *));
93 extern krb5_error_code mit_des_string_to_key
94 PROTOTYPE(( const krb5_encrypt_block FAR *, const krb5_keytype,
95 krb5_keyblock FAR *, const krb5_data FAR *, const krb5_data FAR *));
98 extern int mit_des_is_weak_key PROTOTYPE((mit_des_cblock ));
101 krb5_error_code mit_des_combine_subkeys
102 PROTOTYPE((const krb5_keyblock FAR *, const krb5_keyblock FAR *,
103 krb5_keyblock FAR * FAR *));
106 int mit_des_pcbc_encrypt ();
109 int make_key_sched PROTOTYPE((mit_des_cblock, mit_des_key_schedule));
113 extern void swap_bits PROTOTYPE((char FAR *));
114 extern unsigned long long_swap_bits PROTOTYPE((unsigned long ));
115 extern unsigned long swap_six_bits_to_ansi PROTOTYPE((unsigned long ));
116 extern unsigned long swap_four_bits_to_ansi PROTOTYPE((unsigned long ));
117 extern unsigned long swap_bit_pos_1 PROTOTYPE((unsigned long ));
118 extern unsigned long swap_bit_pos_0 PROTOTYPE((unsigned long ));
119 extern unsigned long swap_bit_pos_0_to_ansi PROTOTYPE((unsigned long ));
120 extern unsigned long rev_swap_bit_pos_0 PROTOTYPE((unsigned long ));
121 extern unsigned long swap_byte_bits PROTOTYPE((unsigned long ));
122 extern unsigned long swap_long_bytes_bit_number PROTOTYPE((unsigned long ));
124 /* XXX depends on FILE being a #define! */
125 extern void test_set PROTOTYPE((FILE *, const char *, int, const char *, int));
128 #endif /*DES_INTERNAL_DEFS*/