PandA-2024.02
examples
CHStone
CHStone
blowfish
bf_enc.c
Go to the documentation of this file.
1
/*
2
+--------------------------------------------------------------------------+
3
| CHStone : a suite of benchmark programs for C-based High-Level Synthesis |
4
| ======================================================================== |
5
| |
6
| * Collected and Modified : Y. Hara, H. Tomiyama, S. Honda, |
7
| H. Takada and K. Ishii |
8
| Nagoya University, Japan |
9
| |
10
| * Remark : |
11
| 1. This source code is modified to unify the formats of the benchmark |
12
| programs in CHStone. |
13
| 2. Test vectors are added for CHStone. |
14
| 3. If "main_result" is 0 at the end of the program, the program is |
15
| correctly executed. |
16
| 4. Please follow the copyright of each benchmark program. |
17
+--------------------------------------------------------------------------+
18
*/
19
/* crypto/bf/bf_enc.c */
20
/* Copyright (C) 1995-1997 Eric Young (eay@mincom.oz.au)
21
* All rights reserved.
22
*
23
* This package is an SSL implementation written
24
* by Eric Young (eay@mincom.oz.au).
25
* The implementation was written so as to conform with Netscapes SSL.
26
*
27
* This library is free for commercial and non-commercial use as long as
28
* the following conditions are aheared to. The following conditions
29
* apply to all code found in this distribution, be it the RC4, RSA,
30
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
31
* included with this distribution is covered by the same copyright terms
32
* except that the holder is Tim Hudson (tjh@mincom.oz.au).
33
*
34
* Copyright remains Eric Young's, and as such any Copyright notices in
35
* the code are not to be removed.
36
* If this package is used in a product, Eric Young should be given attribution
37
* as the author of the parts of the library used.
38
* This can be in the form of a textual message at program startup or
39
* in documentation (online or textual) provided with the package.
40
*
41
* Redistribution and use in source and binary forms, with or without
42
* modification, are permitted provided that the following conditions
43
* are met:
44
* 1. Redistributions of source code must retain the copyright
45
* notice, this list of conditions and the following disclaimer.
46
* 2. Redistributions in binary form must reproduce the above copyright
47
* notice, this list of conditions and the following disclaimer in the
48
* documentation and/or other materials provided with the distribution.
49
* 3. All advertising materials mentioning features or use of this software
50
* must display the following acknowledgement:
51
* "This product includes cryptographic software written by
52
* Eric Young (eay@mincom.oz.au)"
53
* The word 'cryptographic' can be left out if the rouines from the library
54
* being used are not cryptographic related :-).
55
* 4. If you include any Windows specific code (or a derivative thereof) from
56
* the apps directory (application code) you must include an acknowledgement:
57
* "This product includes software written by Tim Hudson (tjh@mincom.oz.au)"
58
*
59
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
60
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
61
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
62
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
63
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
64
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
65
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
66
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
67
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
68
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
69
* SUCH DAMAGE.
70
*
71
* The licence and distribution terms for any publically available version or
72
* derivative of this code cannot be changed. i.e. this code cannot simply be
73
* copied and put under another distribution licence
74
* [including the GNU Public Licence.]
75
*/
76
/* Blowfish as implemented from 'Blowfish: Springer-Verlag paper'
77
* (From LECTURE NOTES IN COIMPUTER SCIENCE 809, FAST SOFTWARE ENCRYPTION,
78
* CAMBRIDGE SECURITY WORKSHOP, CAMBRIDGE, U.K., DECEMBER 9-11, 1993)
79
*/
80
81
void
82
BF_encrypt
(data,
encrypt
)
83
BF_LONG
*data;
84
int
encrypt
;
85
{
86
register
BF_LONG
l, r, *p, *s;
87
p =
key_P
;
88
s = &(
key_S
[0]);
89
l = data[0];
90
r = data[1];
91
92
if
(
encrypt
)
93
{
94
l ^= p[0];
95
96
BF_ENC
(r, l, s, p[1]);
97
BF_ENC
(l, r, s, p[2]);
98
BF_ENC
(r, l, s, p[3]);
99
BF_ENC
(l, r, s, p[4]);
100
BF_ENC
(r, l, s, p[5]);
101
BF_ENC
(l, r, s, p[6]);
102
BF_ENC
(r, l, s, p[7]);
103
BF_ENC
(l, r, s, p[8]);
104
BF_ENC
(r, l, s, p[9]);
105
BF_ENC
(l, r, s, p[10]);
106
BF_ENC
(r, l, s, p[11]);
107
BF_ENC
(l, r, s, p[12]);
108
BF_ENC
(r, l, s, p[13]);
109
BF_ENC
(l, r, s, p[14]);
110
BF_ENC
(r, l, s, p[15]);
111
BF_ENC
(l, r, s, p[16]);
112
r ^= p[
BF_ROUNDS
+ 1];
113
}
114
else
115
{
116
l ^= p[
BF_ROUNDS
+ 1];
117
BF_ENC
(r, l, s, p[16]);
118
BF_ENC
(l, r, s, p[15]);
119
BF_ENC
(r, l, s, p[14]);
120
BF_ENC
(l, r, s, p[13]);
121
BF_ENC
(r, l, s, p[12]);
122
BF_ENC
(l, r, s, p[11]);
123
BF_ENC
(r, l, s, p[10]);
124
BF_ENC
(l, r, s, p[9]);
125
BF_ENC
(r, l, s, p[8]);
126
BF_ENC
(l, r, s, p[7]);
127
BF_ENC
(r, l, s, p[6]);
128
BF_ENC
(l, r, s, p[5]);
129
BF_ENC
(r, l, s, p[4]);
130
BF_ENC
(l, r, s, p[3]);
131
BF_ENC
(r, l, s, p[2]);
132
BF_ENC
(l, r, s, p[1]);
133
r ^= p[0];
134
}
135
data[1] = l & 0xffffffff;
136
data[0] = r & 0xffffffff;
137
}
key_S
BF_LONG key_S[4 *256]
Definition:
blowfish.h:90
key_P
BF_LONG key_P[BF_ROUNDS+2]
Definition:
blowfish.h:89
BF_ROUNDS
#define BF_ROUNDS
Definition:
blowfish.h:88
BF_LONG
#define BF_LONG
Definition:
blowfish.h:86
encrypt
int encrypt(int *, int *, int)
BF_encrypt
void BF_encrypt(BF_LONG *data, int encrypt)
Definition:
bf_enc.c:82
BF_ENC
#define BF_ENC(LL, R, S, P)
Definition:
bf_locl.h:99
Generated on Mon Feb 12 2024 13:02:48 for PandA-2024.02 by
1.8.13