summaryrefslogtreecommitdiffstats
path: root/src/lib/crypto/des/des_int.h
blob: 6f689bc83d0cb18289bfa30bbb88739e0a1e8c2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*
 * $Source$
 * $Author$
 * $Id$ 
 *
 * Copyright 1987, 1988, 1990 by the Massachusetts Institute of Technology.
 * All Rights Reserved.
 *
 * For copying and distribution information, please see the file
 * <krb5/copyright.h>.
 *
 * Private include file for the Data Encryption Standard library.
 */

/* only do the whole thing once	 */
#ifndef DES_INTERNAL_DEFS
#define DES_INTERNAL_DEFS

#include <krb5/mit-des.h>

/*
 * number of iterations of the inner
 * loop of the DES algorithm.  The
 * standard is 16, but in case that is
 * too slow, we might do less.  Of
 * course, less also means less
 * security.
 */
#define	 AUTH_DES_ITER   16

#ifdef  BITS32
/* these are for 32 bit machines */

typedef struct {
    unsigned b0:6;
    unsigned b1:6;
    unsigned b2:6;
    unsigned b3:6;
    unsigned b4:6;
    unsigned b5:2;
}       sbox_in_a;

typedef struct {
    unsigned b5:4;
    unsigned b6:6;
    unsigned b7:6;
}       sbox_in_b;

typedef struct {
    unsigned b0:4;
    unsigned b1:4;
    unsigned b2:4;
    unsigned b3:4;
    unsigned b4:4;
    unsigned b5:4;
    unsigned b6:4;
    unsigned b7:4;
}       sbox_out;

#else	/*BITS32*/
/* for sixteen bit machines */

typedef struct {
    unsigned b0:6;
    unsigned b1:6;
    unsigned b2:4;
}       sbox_in_16_a;

typedef struct {
    unsigned b2:2;
    unsigned b3:6;
    unsigned b4:6;
    unsigned b5:2;
}       sbox_in_16_b;

typedef struct {
    unsigned b5:4;
    unsigned b6:6;
    unsigned b7:6;
}       sbox_in_16_c;

typedef struct {
    unsigned b0:4;
    unsigned b1:4;
    unsigned b2:4;
    unsigned b3:4;
    unsigned b4:4;
    unsigned b5:4;
    unsigned b6:4;
    unsigned b7:4;
}       sbox_out;
#endif	/*BITS32*/


/* widen prototypes, if needed */
#include <krb5/widen.h>

/* cbc_cksum.c */
extern krb5_error_code mit_des_cbc_checksum
    PROTOTYPE((krb5_pointer, size_t,krb5_pointer,size_t, krb5_checksum * ));

/* cksum.c */
extern void mit_des_cbc_cksum
    PROTOTYPE((krb5_octet *, krb5_octet *, long , mit_des_key_schedule ,
	       krb5_octet *));
/* des.c */
extern int mit_des_ecb_encrypt
    PROTOTYPE((unsigned long *, unsigned long *, mit_des_key_schedule , int ));

/* enc_dec.c */
extern krb5_error_code mit_des_encrypt_func
    PROTOTYPE(( krb5_const_pointer, krb5_pointer, const size_t,
	       krb5_encrypt_block *, krb5_pointer ));
extern krb5_error_code mit_des_decrypt_func
    PROTOTYPE(( krb5_const_pointer, krb5_pointer, const size_t,
	       krb5_encrypt_block *, krb5_pointer ));
extern krb5_error_code mit_des_cbc_encrypt
    PROTOTYPE((krb5_octet *, krb5_octet *, long, mit_des_key_schedule,
	       krb5_octet *, int));

/* fin_rndkey.c */
extern krb5_error_code mit_des_finish_random_key
    PROTOTYPE(( krb5_pointer *));

/* finish_key.c */
extern krb5_error_code mit_des_finish_key
    PROTOTYPE(( krb5_encrypt_block *));

/* init_rkey.c */
extern krb5_error_code mit_des_init_random_key
    PROTOTYPE(( const krb5_keyblock *,  krb5_pointer *));

/* key_parity.c */
extern void mit_des_fixup_key_parity PROTOTYPE((mit_des_cblock ));
extern int mit_des_check_key_parity PROTOTYPE((mit_des_cblock ));

/* key_sched.c */
extern int mit_des_key_sched
    PROTOTYPE((mit_des_cblock , mit_des_key_schedule ));

/* new_rnd_key.c */
extern int mit_des_new_random_key
    PROTOTYPE((mit_des_cblock , mit_des_random_key_seed *));
extern void mit_des_init_random_number_generator
    PROTOTYPE((mit_des_cblock, mit_des_random_key_seed *));
extern void mit_des_set_random_generator_seed
    PROTOTYPE((mit_des_cblock , mit_des_random_key_seed *));
extern void mit_des_set_sequence_number
    PROTOTYPE((mit_des_cblock , mit_des_random_key_seed *));
extern void mit_des_generate_random_block
    PROTOTYPE((mit_des_cblock , mit_des_random_key_seed *));

/* process_ky.c */
extern krb5_error_code mit_des_process_key
    PROTOTYPE(( krb5_encrypt_block *,  const krb5_keyblock *));

/* random_key.c */
extern krb5_error_code mit_des_random_key
    PROTOTYPE(( krb5_pointer ,  krb5_keyblock **));

/* string2key.c */
extern krb5_error_code mit_des_string_to_key
    PROTOTYPE((const krb5_keytype, krb5_keyblock *, const krb5_data *,
	       const krb5_data *));

/* weak_key.c */
extern int mit_des_is_weak_key PROTOTYPE((mit_des_cblock ));

/* cmb_keys.c */
krb5_error_code mit_des_combine_subkeys
    PROTOTYPE((const krb5_keyblock *, const krb5_keyblock *,
	       krb5_keyblock **));

/* misc.c */
extern void swap_bits PROTOTYPE((char *));
extern unsigned long long_swap_bits PROTOTYPE((unsigned long ));
extern unsigned long swap_six_bits_to_ansi PROTOTYPE((unsigned long ));
extern unsigned long swap_four_bits_to_ansi PROTOTYPE((unsigned long ));
extern unsigned long swap_bit_pos_1 PROTOTYPE((unsigned long ));
extern unsigned long swap_bit_pos_0 PROTOTYPE((unsigned long ));
extern unsigned long swap_bit_pos_0_to_ansi PROTOTYPE((unsigned long ));
extern unsigned long rev_swap_bit_pos_0 PROTOTYPE((unsigned long ));
extern unsigned long swap_byte_bits PROTOTYPE((unsigned long ));
extern unsigned long swap_long_bytes_bit_number PROTOTYPE((unsigned long ));
#ifdef FILE
/* XXX */
extern void test_set PROTOTYPE((FILE *, const char *, int, const char *, int));
#endif

/* and back to normal... */
#include <krb5/narrow.h>

#endif	/*DES_INTERNAL_DEFS*/