cryptlib
3.4.1
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Macros
crypt
rmddgst.c
Go to the documentation of this file.
1
/* crypto/ripemd/rmd_dgst.c */
2
/* Copyright (C) 1995-1998 Eric Young (
[email protected]
)
3
* All rights reserved.
4
*
5
* This package is an SSL implementation written
6
* by Eric Young (
[email protected]
).
7
* The implementation was written so as to conform with Netscapes SSL.
8
*
9
* This library is free for commercial and non-commercial use as long as
10
* the following conditions are aheared to. The following conditions
11
* apply to all code found in this distribution, be it the RC4, RSA,
12
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
* included with this distribution is covered by the same copyright terms
14
* except that the holder is Tim Hudson (
[email protected]
).
15
*
16
* Copyright remains Eric Young's, and as such any Copyright notices in
17
* the code are not to be removed.
18
* If this package is used in a product, Eric Young should be given attribution
19
* as the author of the parts of the library used.
20
* This can be in the form of a textual message at program startup or
21
* in documentation (online or textual) provided with the package.
22
*
23
* Redistribution and use in source and binary forms, with or without
24
* modification, are permitted provided that the following conditions
25
* are met:
26
* 1. Redistributions of source code must retain the copyright
27
* notice, this list of conditions and the following disclaimer.
28
* 2. Redistributions in binary form must reproduce the above copyright
29
* notice, this list of conditions and the following disclaimer in the
30
* documentation and/or other materials provided with the distribution.
31
* 3. All advertising materials mentioning features or use of this software
32
* must display the following acknowledgement:
33
* "This product includes cryptographic software written by
34
* Eric Young (
[email protected]
)"
35
* The word 'cryptographic' can be left out if the rouines from the library
36
* being used are not cryptographic related :-).
37
* 4. If you include any Windows specific code (or a derivative thereof) from
38
* the apps directory (application code) you must include an acknowledgement:
39
* "This product includes software written by Tim Hudson (
[email protected]
)"
40
*
41
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
* SUCH DAMAGE.
52
*
53
* The licence and distribution terms for any publically available version or
54
* derivative of this code cannot be changed. i.e. this code cannot simply be
55
* copied and put under another distribution licence
56
* [including the GNU Public Licence.]
57
*/
58
59
#include <stdio.h>
60
#if defined( INC_ALL )
61
#include "
osconfig.h
"
62
#include "
rmdlocl.h
"
63
#else
64
#include "
crypt/osconfig.h
"
65
#include "
crypt/rmdlocl.h
"
66
#endif
/* Compiler-specific includes */
67
68
# ifdef RMD160_ASM
69
void
ripemd160_block_x86(
RIPEMD160_CTX
*c,
unsigned
long
*
p
,
int
num);
70
# define ripemd160_block ripemd160_block_x86
71
# else
72
void
ripemd160_block
(
RIPEMD160_CTX
*c,
unsigned
long
*
p
,
int
num);
73
# endif
74
75
void
RIPEMD160_Init
(
RIPEMD160_CTX
*c)
76
{
77
c->
A
=
RIPEMD160_A
;
78
c->
B
=
RIPEMD160_B
;
79
c->
C
=
RIPEMD160_C
;
80
c->
D
=
RIPEMD160_D
;
81
c->
E
=
RIPEMD160_E
;
82
c->
Nl
=0;
83
c->
Nh
=0;
84
c->
num
=0;
85
}
86
87
#ifndef ripemd160_block_host_order
88
#ifdef X
89
#undef X
90
#endif
91
#define X(i) XX[i]
92
void
ripemd160_block_host_order
(
RIPEMD160_CTX
*ctx,
const
void
*
p
,
int
num)
93
{
94
const
RIPEMD160_LONG
*XX=
p
;
95
register
unsigned
long
A,B,C,D,E;
96
register
unsigned
long
a,b,c,d,e;
97
98
for
(;num--;XX+=
HASH_LBLOCK
)
99
{
100
101
A=ctx->
A
; B=ctx->
B
; C=ctx->
C
; D=ctx->
D
; E=ctx->
E
;
102
103
RIP1
(A,B,C,D,E,
WL00
,
SL00
);
104
RIP1
(E,A,B,C,D,
WL01
,
SL01
);
105
RIP1
(D,E,A,B,C,
WL02
,
SL02
);
106
RIP1
(C,D,E,A,B,
WL03
,
SL03
);
107
RIP1
(B,C,D,E,A,
WL04
,
SL04
);
108
RIP1
(A,B,C,D,E,
WL05
,
SL05
);
109
RIP1
(E,A,B,C,D,
WL06
,
SL06
);
110
RIP1
(D,E,A,B,C,
WL07
,
SL07
);
111
RIP1
(C,D,E,A,B,
WL08
,
SL08
);
112
RIP1
(B,C,D,E,A,
WL09
,
SL09
);
113
RIP1
(A,B,C,D,E,
WL10
,
SL10
);
114
RIP1
(E,A,B,C,D,
WL11
,
SL11
);
115
RIP1
(D,E,A,B,C,
WL12
,
SL12
);
116
RIP1
(C,D,E,A,B,
WL13
,
SL13
);
117
RIP1
(B,C,D,E,A,
WL14
,
SL14
);
118
RIP1
(A,B,C,D,E,
WL15
,
SL15
);
119
120
RIP2
(E,A,B,C,D,
WL16
,
SL16
,
KL1
);
121
RIP2
(D,E,A,B,C,
WL17
,
SL17
,
KL1
);
122
RIP2
(C,D,E,A,B,
WL18
,
SL18
,
KL1
);
123
RIP2
(B,C,D,E,A,
WL19
,
SL19
,
KL1
);
124
RIP2
(A,B,C,D,E,
WL20
,
SL20
,
KL1
);
125
RIP2
(E,A,B,C,D,
WL21
,
SL21
,
KL1
);
126
RIP2
(D,E,A,B,C,
WL22
,
SL22
,
KL1
);
127
RIP2
(C,D,E,A,B,
WL23
,
SL23
,
KL1
);
128
RIP2
(B,C,D,E,A,
WL24
,
SL24
,
KL1
);
129
RIP2
(A,B,C,D,E,
WL25
,
SL25
,
KL1
);
130
RIP2
(E,A,B,C,D,
WL26
,
SL26
,
KL1
);
131
RIP2
(D,E,A,B,C,
WL27
,
SL27
,
KL1
);
132
RIP2
(C,D,E,A,B,
WL28
,
SL28
,
KL1
);
133
RIP2
(B,C,D,E,A,
WL29
,
SL29
,
KL1
);
134
RIP2
(A,B,C,D,E,
WL30
,
SL30
,
KL1
);
135
RIP2
(E,A,B,C,D,
WL31
,
SL31
,
KL1
);
136
137
RIP3
(D,E,A,B,C,
WL32
,
SL32
,
KL2
);
138
RIP3
(C,D,E,A,B,
WL33
,
SL33
,
KL2
);
139
RIP3
(B,C,D,E,A,
WL34
,
SL34
,
KL2
);
140
RIP3
(A,B,C,D,E,
WL35
,
SL35
,
KL2
);
141
RIP3
(E,A,B,C,D,
WL36
,
SL36
,
KL2
);
142
RIP3
(D,E,A,B,C,
WL37
,
SL37
,
KL2
);
143
RIP3
(C,D,E,A,B,
WL38
,
SL38
,
KL2
);
144
RIP3
(B,C,D,E,A,
WL39
,
SL39
,
KL2
);
145
RIP3
(A,B,C,D,E,
WL40
,
SL40
,
KL2
);
146
RIP3
(E,A,B,C,D,
WL41
,
SL41
,
KL2
);
147
RIP3
(D,E,A,B,C,
WL42
,
SL42
,
KL2
);
148
RIP3
(C,D,E,A,B,
WL43
,
SL43
,
KL2
);
149
RIP3
(B,C,D,E,A,
WL44
,
SL44
,
KL2
);
150
RIP3
(A,B,C,D,E,
WL45
,
SL45
,
KL2
);
151
RIP3
(E,A,B,C,D,
WL46
,
SL46
,
KL2
);
152
RIP3
(D,E,A,B,C,
WL47
,
SL47
,
KL2
);
153
154
RIP4
(C,D,E,A,B,
WL48
,
SL48
,
KL3
);
155
RIP4
(B,C,D,E,A,
WL49
,
SL49
,
KL3
);
156
RIP4
(A,B,C,D,E,
WL50
,
SL50
,
KL3
);
157
RIP4
(E,A,B,C,D,
WL51
,
SL51
,
KL3
);
158
RIP4
(D,E,A,B,C,
WL52
,
SL52
,
KL3
);
159
RIP4
(C,D,E,A,B,
WL53
,
SL53
,
KL3
);
160
RIP4
(B,C,D,E,A,
WL54
,
SL54
,
KL3
);
161
RIP4
(A,B,C,D,E,
WL55
,
SL55
,
KL3
);
162
RIP4
(E,A,B,C,D,
WL56
,
SL56
,
KL3
);
163
RIP4
(D,E,A,B,C,
WL57
,
SL57
,
KL3
);
164
RIP4
(C,D,E,A,B,
WL58
,
SL58
,
KL3
);
165
RIP4
(B,C,D,E,A,
WL59
,
SL59
,
KL3
);
166
RIP4
(A,B,C,D,E,
WL60
,
SL60
,
KL3
);
167
RIP4
(E,A,B,C,D,
WL61
,
SL61
,
KL3
);
168
RIP4
(D,E,A,B,C,
WL62
,
SL62
,
KL3
);
169
RIP4
(C,D,E,A,B,
WL63
,
SL63
,
KL3
);
170
171
RIP5
(B,C,D,E,A,
WL64
,
SL64
,
KL4
);
172
RIP5
(A,B,C,D,E,
WL65
,
SL65
,
KL4
);
173
RIP5
(E,A,B,C,D,
WL66
,
SL66
,
KL4
);
174
RIP5
(D,E,A,B,C,
WL67
,
SL67
,
KL4
);
175
RIP5
(C,D,E,A,B,
WL68
,
SL68
,
KL4
);
176
RIP5
(B,C,D,E,A,
WL69
,
SL69
,
KL4
);
177
RIP5
(A,B,C,D,E,
WL70
,
SL70
,
KL4
);
178
RIP5
(E,A,B,C,D,
WL71
,
SL71
,
KL4
);
179
RIP5
(D,E,A,B,C,
WL72
,
SL72
,
KL4
);
180
RIP5
(C,D,E,A,B,
WL73
,
SL73
,
KL4
);
181
RIP5
(B,C,D,E,A,
WL74
,
SL74
,
KL4
);
182
RIP5
(A,B,C,D,E,
WL75
,
SL75
,
KL4
);
183
RIP5
(E,A,B,C,D,
WL76
,
SL76
,
KL4
);
184
RIP5
(D,E,A,B,C,
WL77
,
SL77
,
KL4
);
185
RIP5
(C,D,E,A,B,
WL78
,
SL78
,
KL4
);
186
RIP5
(B,C,D,E,A,
WL79
,
SL79
,
KL4
);
187
188
a=A; b=B; c=C; d=D; e=E;
189
/* Do other half */
190
A=ctx->
A
; B=ctx->
B
; C=ctx->
C
; D=ctx->
D
; E=ctx->
E
;
191
192
RIP5
(A,B,C,D,E,
WR00
,
SR00
,
KR0
);
193
RIP5
(E,A,B,C,D,
WR01
,
SR01
,
KR0
);
194
RIP5
(D,E,A,B,C,
WR02
,
SR02
,
KR0
);
195
RIP5
(C,D,E,A,B,
WR03
,
SR03
,
KR0
);
196
RIP5
(B,C,D,E,A,
WR04
,
SR04
,
KR0
);
197
RIP5
(A,B,C,D,E,
WR05
,
SR05
,
KR0
);
198
RIP5
(E,A,B,C,D,
WR06
,
SR06
,
KR0
);
199
RIP5
(D,E,A,B,C,
WR07
,
SR07
,
KR0
);
200
RIP5
(C,D,E,A,B,
WR08
,
SR08
,
KR0
);
201
RIP5
(B,C,D,E,A,
WR09
,
SR09
,
KR0
);
202
RIP5
(A,B,C,D,E,
WR10
,
SR10
,
KR0
);
203
RIP5
(E,A,B,C,D,
WR11
,
SR11
,
KR0
);
204
RIP5
(D,E,A,B,C,
WR12
,
SR12
,
KR0
);
205
RIP5
(C,D,E,A,B,
WR13
,
SR13
,
KR0
);
206
RIP5
(B,C,D,E,A,
WR14
,
SR14
,
KR0
);
207
RIP5
(A,B,C,D,E,
WR15
,
SR15
,
KR0
);
208
209
RIP4
(E,A,B,C,D,
WR16
,
SR16
,
KR1
);
210
RIP4
(D,E,A,B,C,
WR17
,
SR17
,
KR1
);
211
RIP4
(C,D,E,A,B,
WR18
,
SR18
,
KR1
);
212
RIP4
(B,C,D,E,A,
WR19
,
SR19
,
KR1
);
213
RIP4
(A,B,C,D,E,
WR20
,
SR20
,
KR1
);
214
RIP4
(E,A,B,C,D,
WR21
,
SR21
,
KR1
);
215
RIP4
(D,E,A,B,C,
WR22
,
SR22
,
KR1
);
216
RIP4
(C,D,E,A,B,
WR23
,
SR23
,
KR1
);
217
RIP4
(B,C,D,E,A,
WR24
,
SR24
,
KR1
);
218
RIP4
(A,B,C,D,E,
WR25
,
SR25
,
KR1
);
219
RIP4
(E,A,B,C,D,
WR26
,
SR26
,
KR1
);
220
RIP4
(D,E,A,B,C,
WR27
,
SR27
,
KR1
);
221
RIP4
(C,D,E,A,B,
WR28
,
SR28
,
KR1
);
222
RIP4
(B,C,D,E,A,
WR29
,
SR29
,
KR1
);
223
RIP4
(A,B,C,D,E,
WR30
,
SR30
,
KR1
);
224
RIP4
(E,A,B,C,D,
WR31
,
SR31
,
KR1
);
225
226
RIP3
(D,E,A,B,C,
WR32
,
SR32
,
KR2
);
227
RIP3
(C,D,E,A,B,
WR33
,
SR33
,
KR2
);
228
RIP3
(B,C,D,E,A,
WR34
,
SR34
,
KR2
);
229
RIP3
(A,B,C,D,E,
WR35
,
SR35
,
KR2
);
230
RIP3
(E,A,B,C,D,
WR36
,
SR36
,
KR2
);
231
RIP3
(D,E,A,B,C,
WR37
,
SR37
,
KR2
);
232
RIP3
(C,D,E,A,B,
WR38
,
SR38
,
KR2
);
233
RIP3
(B,C,D,E,A,
WR39
,
SR39
,
KR2
);
234
RIP3
(A,B,C,D,E,
WR40
,
SR40
,
KR2
);
235
RIP3
(E,A,B,C,D,
WR41
,
SR41
,
KR2
);
236
RIP3
(D,E,A,B,C,
WR42
,
SR42
,
KR2
);
237
RIP3
(C,D,E,A,B,
WR43
,
SR43
,
KR2
);
238
RIP3
(B,C,D,E,A,
WR44
,
SR44
,
KR2
);
239
RIP3
(A,B,C,D,E,
WR45
,
SR45
,
KR2
);
240
RIP3
(E,A,B,C,D,
WR46
,
SR46
,
KR2
);
241
RIP3
(D,E,A,B,C,
WR47
,
SR47
,
KR2
);
242
243
RIP2
(C,D,E,A,B,
WR48
,
SR48
,
KR3
);
244
RIP2
(B,C,D,E,A,
WR49
,
SR49
,
KR3
);
245
RIP2
(A,B,C,D,E,
WR50
,
SR50
,
KR3
);
246
RIP2
(E,A,B,C,D,
WR51
,
SR51
,
KR3
);
247
RIP2
(D,E,A,B,C,
WR52
,
SR52
,
KR3
);
248
RIP2
(C,D,E,A,B,
WR53
,
SR53
,
KR3
);
249
RIP2
(B,C,D,E,A,
WR54
,
SR54
,
KR3
);
250
RIP2
(A,B,C,D,E,
WR55
,
SR55
,
KR3
);
251
RIP2
(E,A,B,C,D,
WR56
,
SR56
,
KR3
);
252
RIP2
(D,E,A,B,C,
WR57
,
SR57
,
KR3
);
253
RIP2
(C,D,E,A,B,
WR58
,
SR58
,
KR3
);
254
RIP2
(B,C,D,E,A,
WR59
,
SR59
,
KR3
);
255
RIP2
(A,B,C,D,E,
WR60
,
SR60
,
KR3
);
256
RIP2
(E,A,B,C,D,
WR61
,
SR61
,
KR3
);
257
RIP2
(D,E,A,B,C,
WR62
,
SR62
,
KR3
);
258
RIP2
(C,D,E,A,B,
WR63
,
SR63
,
KR3
);
259
260
RIP1
(B,C,D,E,A,
WR64
,
SR64
);
261
RIP1
(A,B,C,D,E,
WR65
,
SR65
);
262
RIP1
(E,A,B,C,D,
WR66
,
SR66
);
263
RIP1
(D,E,A,B,C,
WR67
,
SR67
);
264
RIP1
(C,D,E,A,B,
WR68
,
SR68
);
265
RIP1
(B,C,D,E,A,
WR69
,
SR69
);
266
RIP1
(A,B,C,D,E,
WR70
,
SR70
);
267
RIP1
(E,A,B,C,D,
WR71
,
SR71
);
268
RIP1
(D,E,A,B,C,
WR72
,
SR72
);
269
RIP1
(C,D,E,A,B,
WR73
,
SR73
);
270
RIP1
(B,C,D,E,A,
WR74
,
SR74
);
271
RIP1
(A,B,C,D,E,
WR75
,
SR75
);
272
RIP1
(E,A,B,C,D,
WR76
,
SR76
);
273
RIP1
(D,E,A,B,C,
WR77
,
SR77
);
274
RIP1
(C,D,E,A,B,
WR78
,
SR78
);
275
RIP1
(B,C,D,E,A,
WR79
,
SR79
);
276
277
D =ctx->
B
+c+D;
278
ctx->
B
=ctx->
C
+d+E;
279
ctx->
C
=ctx->
D
+e+A;
280
ctx->
D
=ctx->
E
+a+B;
281
ctx->
E
=ctx->
A
+b+C;
282
ctx->
A
=D;
283
284
}
285
}
286
#endif
287
288
#ifndef ripemd160_block_data_order
289
#ifdef X
290
#undef X
291
#endif
292
void
ripemd160_block_data_order
(
RIPEMD160_CTX
*ctx,
const
void
*
p
,
int
num)
293
{
294
const
unsigned
char
*
data
=
p
;
295
register
unsigned
long
A,B,C,D,E;
296
unsigned
long
a,b,c,d,e,l;
297
#ifndef MD32_XARRAY
298
/* See comment in crypto/sha/sha_locl.h for details. */
299
unsigned
long
XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
300
XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
301
# define X(i) XX##i
302
#else
303
RIPEMD160_LONG
XX[16];
304
# define X(i) XX[i]
305
#endif
306
307
for
(;num--;)
308
{
309
310
A=ctx->
A
; B=ctx->
B
; C=ctx->
C
; D=ctx->
D
; E=ctx->
E
;
311
312
HOST_c2l(data,l);
X
( 0)=l; HOST_c2l(data,l);
X
( 1)=l;
313
RIP1
(A,B,C,D,E,
WL00
,
SL00
); HOST_c2l(data,l);
X
( 2)=l;
314
RIP1
(E,A,B,C,D,
WL01
,
SL01
); HOST_c2l(data,l);
X
( 3)=l;
315
RIP1
(D,E,A,B,C,
WL02
,
SL02
); HOST_c2l(data,l);
X
( 4)=l;
316
RIP1
(C,D,E,A,B,
WL03
,
SL03
); HOST_c2l(data,l);
X
( 5)=l;
317
RIP1
(B,C,D,E,A,
WL04
,
SL04
); HOST_c2l(data,l);
X
( 6)=l;
318
RIP1
(A,B,C,D,E,
WL05
,
SL05
); HOST_c2l(data,l);
X
( 7)=l;
319
RIP1
(E,A,B,C,D,
WL06
,
SL06
); HOST_c2l(data,l);
X
( 8)=l;
320
RIP1
(D,E,A,B,C,
WL07
,
SL07
); HOST_c2l(data,l);
X
( 9)=l;
321
RIP1
(C,D,E,A,B,
WL08
,
SL08
); HOST_c2l(data,l);
X
(10)=l;
322
RIP1
(B,C,D,E,A,
WL09
,
SL09
); HOST_c2l(data,l);
X
(11)=l;
323
RIP1
(A,B,C,D,E,
WL10
,
SL10
); HOST_c2l(data,l);
X
(12)=l;
324
RIP1
(E,A,B,C,D,
WL11
,
SL11
); HOST_c2l(data,l);
X
(13)=l;
325
RIP1
(D,E,A,B,C,
WL12
,
SL12
); HOST_c2l(data,l);
X
(14)=l;
326
RIP1
(C,D,E,A,B,
WL13
,
SL13
); HOST_c2l(data,l);
X
(15)=l;
327
RIP1
(B,C,D,E,A,
WL14
,
SL14
);
328
RIP1
(A,B,C,D,E,
WL15
,
SL15
);
329
330
RIP2
(E,A,B,C,D,
WL16
,
SL16
,
KL1
);
331
RIP2
(D,E,A,B,C,
WL17
,
SL17
,
KL1
);
332
RIP2
(C,D,E,A,B,
WL18
,
SL18
,
KL1
);
333
RIP2
(B,C,D,E,A,
WL19
,
SL19
,
KL1
);
334
RIP2
(A,B,C,D,E,
WL20
,
SL20
,
KL1
);
335
RIP2
(E,A,B,C,D,
WL21
,
SL21
,
KL1
);
336
RIP2
(D,E,A,B,C,
WL22
,
SL22
,
KL1
);
337
RIP2
(C,D,E,A,B,
WL23
,
SL23
,
KL1
);
338
RIP2
(B,C,D,E,A,
WL24
,
SL24
,
KL1
);
339
RIP2
(A,B,C,D,E,
WL25
,
SL25
,
KL1
);
340
RIP2
(E,A,B,C,D,
WL26
,
SL26
,
KL1
);
341
RIP2
(D,E,A,B,C,
WL27
,
SL27
,
KL1
);
342
RIP2
(C,D,E,A,B,
WL28
,
SL28
,
KL1
);
343
RIP2
(B,C,D,E,A,
WL29
,
SL29
,
KL1
);
344
RIP2
(A,B,C,D,E,
WL30
,
SL30
,
KL1
);
345
RIP2
(E,A,B,C,D,
WL31
,
SL31
,
KL1
);
346
347
RIP3
(D,E,A,B,C,
WL32
,
SL32
,
KL2
);
348
RIP3
(C,D,E,A,B,
WL33
,
SL33
,
KL2
);
349
RIP3
(B,C,D,E,A,
WL34
,
SL34
,
KL2
);
350
RIP3
(A,B,C,D,E,
WL35
,
SL35
,
KL2
);
351
RIP3
(E,A,B,C,D,
WL36
,
SL36
,
KL2
);
352
RIP3
(D,E,A,B,C,
WL37
,
SL37
,
KL2
);
353
RIP3
(C,D,E,A,B,
WL38
,
SL38
,
KL2
);
354
RIP3
(B,C,D,E,A,
WL39
,
SL39
,
KL2
);
355
RIP3
(A,B,C,D,E,
WL40
,
SL40
,
KL2
);
356
RIP3
(E,A,B,C,D,
WL41
,
SL41
,
KL2
);
357
RIP3
(D,E,A,B,C,
WL42
,
SL42
,
KL2
);
358
RIP3
(C,D,E,A,B,
WL43
,
SL43
,
KL2
);
359
RIP3
(B,C,D,E,A,
WL44
,
SL44
,
KL2
);
360
RIP3
(A,B,C,D,E,
WL45
,
SL45
,
KL2
);
361
RIP3
(E,A,B,C,D,
WL46
,
SL46
,
KL2
);
362
RIP3
(D,E,A,B,C,
WL47
,
SL47
,
KL2
);
363
364
RIP4
(C,D,E,A,B,
WL48
,
SL48
,
KL3
);
365
RIP4
(B,C,D,E,A,
WL49
,
SL49
,
KL3
);
366
RIP4
(A,B,C,D,E,
WL50
,
SL50
,
KL3
);
367
RIP4
(E,A,B,C,D,
WL51
,
SL51
,
KL3
);
368
RIP4
(D,E,A,B,C,
WL52
,
SL52
,
KL3
);
369
RIP4
(C,D,E,A,B,
WL53
,
SL53
,
KL3
);
370
RIP4
(B,C,D,E,A,
WL54
,
SL54
,
KL3
);
371
RIP4
(A,B,C,D,E,
WL55
,
SL55
,
KL3
);
372
RIP4
(E,A,B,C,D,
WL56
,
SL56
,
KL3
);
373
RIP4
(D,E,A,B,C,
WL57
,
SL57
,
KL3
);
374
RIP4
(C,D,E,A,B,
WL58
,
SL58
,
KL3
);
375
RIP4
(B,C,D,E,A,
WL59
,
SL59
,
KL3
);
376
RIP4
(A,B,C,D,E,
WL60
,
SL60
,
KL3
);
377
RIP4
(E,A,B,C,D,
WL61
,
SL61
,
KL3
);
378
RIP4
(D,E,A,B,C,
WL62
,
SL62
,
KL3
);
379
RIP4
(C,D,E,A,B,
WL63
,
SL63
,
KL3
);
380
381
RIP5
(B,C,D,E,A,
WL64
,
SL64
,
KL4
);
382
RIP5
(A,B,C,D,E,
WL65
,
SL65
,
KL4
);
383
RIP5
(E,A,B,C,D,
WL66
,
SL66
,
KL4
);
384
RIP5
(D,E,A,B,C,
WL67
,
SL67
,
KL4
);
385
RIP5
(C,D,E,A,B,
WL68
,
SL68
,
KL4
);
386
RIP5
(B,C,D,E,A,
WL69
,
SL69
,
KL4
);
387
RIP5
(A,B,C,D,E,
WL70
,
SL70
,
KL4
);
388
RIP5
(E,A,B,C,D,
WL71
,
SL71
,
KL4
);
389
RIP5
(D,E,A,B,C,
WL72
,
SL72
,
KL4
);
390
RIP5
(C,D,E,A,B,
WL73
,
SL73
,
KL4
);
391
RIP5
(B,C,D,E,A,
WL74
,
SL74
,
KL4
);
392
RIP5
(A,B,C,D,E,
WL75
,
SL75
,
KL4
);
393
RIP5
(E,A,B,C,D,
WL76
,
SL76
,
KL4
);
394
RIP5
(D,E,A,B,C,
WL77
,
SL77
,
KL4
);
395
RIP5
(C,D,E,A,B,
WL78
,
SL78
,
KL4
);
396
RIP5
(B,C,D,E,A,
WL79
,
SL79
,
KL4
);
397
398
a=A; b=B; c=C; d=D; e=E;
399
/* Do other half */
400
A=ctx->
A
; B=ctx->
B
; C=ctx->
C
; D=ctx->
D
; E=ctx->
E
;
401
402
RIP5
(A,B,C,D,E,
WR00
,
SR00
,
KR0
);
403
RIP5
(E,A,B,C,D,
WR01
,
SR01
,
KR0
);
404
RIP5
(D,E,A,B,C,
WR02
,
SR02
,
KR0
);
405
RIP5
(C,D,E,A,B,
WR03
,
SR03
,
KR0
);
406
RIP5
(B,C,D,E,A,
WR04
,
SR04
,
KR0
);
407
RIP5
(A,B,C,D,E,
WR05
,
SR05
,
KR0
);
408
RIP5
(E,A,B,C,D,
WR06
,
SR06
,
KR0
);
409
RIP5
(D,E,A,B,C,
WR07
,
SR07
,
KR0
);
410
RIP5
(C,D,E,A,B,
WR08
,
SR08
,
KR0
);
411
RIP5
(B,C,D,E,A,
WR09
,
SR09
,
KR0
);
412
RIP5
(A,B,C,D,E,
WR10
,
SR10
,
KR0
);
413
RIP5
(E,A,B,C,D,
WR11
,
SR11
,
KR0
);
414
RIP5
(D,E,A,B,C,
WR12
,
SR12
,
KR0
);
415
RIP5
(C,D,E,A,B,
WR13
,
SR13
,
KR0
);
416
RIP5
(B,C,D,E,A,
WR14
,
SR14
,
KR0
);
417
RIP5
(A,B,C,D,E,
WR15
,
SR15
,
KR0
);
418
419
RIP4
(E,A,B,C,D,
WR16
,
SR16
,
KR1
);
420
RIP4
(D,E,A,B,C,
WR17
,
SR17
,
KR1
);
421
RIP4
(C,D,E,A,B,
WR18
,
SR18
,
KR1
);
422
RIP4
(B,C,D,E,A,
WR19
,
SR19
,
KR1
);
423
RIP4
(A,B,C,D,E,
WR20
,
SR20
,
KR1
);
424
RIP4
(E,A,B,C,D,
WR21
,
SR21
,
KR1
);
425
RIP4
(D,E,A,B,C,
WR22
,
SR22
,
KR1
);
426
RIP4
(C,D,E,A,B,
WR23
,
SR23
,
KR1
);
427
RIP4
(B,C,D,E,A,
WR24
,
SR24
,
KR1
);
428
RIP4
(A,B,C,D,E,
WR25
,
SR25
,
KR1
);
429
RIP4
(E,A,B,C,D,
WR26
,
SR26
,
KR1
);
430
RIP4
(D,E,A,B,C,
WR27
,
SR27
,
KR1
);
431
RIP4
(C,D,E,A,B,
WR28
,
SR28
,
KR1
);
432
RIP4
(B,C,D,E,A,
WR29
,
SR29
,
KR1
);
433
RIP4
(A,B,C,D,E,
WR30
,
SR30
,
KR1
);
434
RIP4
(E,A,B,C,D,
WR31
,
SR31
,
KR1
);
435
436
RIP3
(D,E,A,B,C,
WR32
,
SR32
,
KR2
);
437
RIP3
(C,D,E,A,B,
WR33
,
SR33
,
KR2
);
438
RIP3
(B,C,D,E,A,
WR34
,
SR34
,
KR2
);
439
RIP3
(A,B,C,D,E,
WR35
,
SR35
,
KR2
);
440
RIP3
(E,A,B,C,D,
WR36
,
SR36
,
KR2
);
441
RIP3
(D,E,A,B,C,
WR37
,
SR37
,
KR2
);
442
RIP3
(C,D,E,A,B,
WR38
,
SR38
,
KR2
);
443
RIP3
(B,C,D,E,A,
WR39
,
SR39
,
KR2
);
444
RIP3
(A,B,C,D,E,
WR40
,
SR40
,
KR2
);
445
RIP3
(E,A,B,C,D,
WR41
,
SR41
,
KR2
);
446
RIP3
(D,E,A,B,C,
WR42
,
SR42
,
KR2
);
447
RIP3
(C,D,E,A,B,
WR43
,
SR43
,
KR2
);
448
RIP3
(B,C,D,E,A,
WR44
,
SR44
,
KR2
);
449
RIP3
(A,B,C,D,E,
WR45
,
SR45
,
KR2
);
450
RIP3
(E,A,B,C,D,
WR46
,
SR46
,
KR2
);
451
RIP3
(D,E,A,B,C,
WR47
,
SR47
,
KR2
);
452
453
RIP2
(C,D,E,A,B,
WR48
,
SR48
,
KR3
);
454
RIP2
(B,C,D,E,A,
WR49
,
SR49
,
KR3
);
455
RIP2
(A,B,C,D,E,
WR50
,
SR50
,
KR3
);
456
RIP2
(E,A,B,C,D,
WR51
,
SR51
,
KR3
);
457
RIP2
(D,E,A,B,C,
WR52
,
SR52
,
KR3
);
458
RIP2
(C,D,E,A,B,
WR53
,
SR53
,
KR3
);
459
RIP2
(B,C,D,E,A,
WR54
,
SR54
,
KR3
);
460
RIP2
(A,B,C,D,E,
WR55
,
SR55
,
KR3
);
461
RIP2
(E,A,B,C,D,
WR56
,
SR56
,
KR3
);
462
RIP2
(D,E,A,B,C,
WR57
,
SR57
,
KR3
);
463
RIP2
(C,D,E,A,B,
WR58
,
SR58
,
KR3
);
464
RIP2
(B,C,D,E,A,
WR59
,
SR59
,
KR3
);
465
RIP2
(A,B,C,D,E,
WR60
,
SR60
,
KR3
);
466
RIP2
(E,A,B,C,D,
WR61
,
SR61
,
KR3
);
467
RIP2
(D,E,A,B,C,
WR62
,
SR62
,
KR3
);
468
RIP2
(C,D,E,A,B,
WR63
,
SR63
,
KR3
);
469
470
RIP1
(B,C,D,E,A,
WR64
,
SR64
);
471
RIP1
(A,B,C,D,E,
WR65
,
SR65
);
472
RIP1
(E,A,B,C,D,
WR66
,
SR66
);
473
RIP1
(D,E,A,B,C,
WR67
,
SR67
);
474
RIP1
(C,D,E,A,B,
WR68
,
SR68
);
475
RIP1
(B,C,D,E,A,
WR69
,
SR69
);
476
RIP1
(A,B,C,D,E,
WR70
,
SR70
);
477
RIP1
(E,A,B,C,D,
WR71
,
SR71
);
478
RIP1
(D,E,A,B,C,
WR72
,
SR72
);
479
RIP1
(C,D,E,A,B,
WR73
,
SR73
);
480
RIP1
(B,C,D,E,A,
WR74
,
SR74
);
481
RIP1
(A,B,C,D,E,
WR75
,
SR75
);
482
RIP1
(E,A,B,C,D,
WR76
,
SR76
);
483
RIP1
(D,E,A,B,C,
WR77
,
SR77
);
484
RIP1
(C,D,E,A,B,
WR78
,
SR78
);
485
RIP1
(B,C,D,E,A,
WR79
,
SR79
);
486
487
D =ctx->
B
+c+D;
488
ctx->
B
=ctx->
C
+d+E;
489
ctx->
C
=ctx->
D
+e+A;
490
ctx->
D
=ctx->
E
+a+B;
491
ctx->
E
=ctx->
A
+b+C;
492
ctx->
A
=D;
493
494
}
495
}
496
#endif
Generated on Thu Jan 10 2013 10:00:45 for cryptlib by
1.8.2