Deleted Added
full compact
bf_enc.c (63249) bf_enc.c (78064)
1/* $FreeBSD: head/sys/crypto/blowfish/bf_enc.c 62587 2000-07-04 16:35:15Z itojun $ */
2/* $KAME: bf_enc.c,v 1.3 2000/03/27 04:36:26 sumikawa Exp $ */
1/* $FreeBSD: head/sys/crypto/blowfish/bf_enc.c 78064 2001-06-11 12:39:29Z ume $ */
2/* $KAME: bf_enc.c,v 1.5 2000/09/18 21:21:19 itojun Exp $ */
3
4/* crypto/bf/bf_enc.c */
5/* Copyright (C) 1995-1997 Eric Young (eay@mincom.oz.au)
6 * All rights reserved.
7 *
8 * This package is an SSL implementation written
9 * by Eric Young (eay@mincom.oz.au).
10 * The implementation was written so as to conform with Netscapes SSL.

--- 43 unchanged lines hidden (view full) ---

54 * SUCH DAMAGE.
55 *
56 * The licence and distribution terms for any publically available version or
57 * derivative of this code cannot be changed. i.e. this code cannot simply be
58 * copied and put under another distribution licence
59 * [including the GNU Public Licence.]
60 */
61
3
4/* crypto/bf/bf_enc.c */
5/* Copyright (C) 1995-1997 Eric Young (eay@mincom.oz.au)
6 * All rights reserved.
7 *
8 * This package is an SSL implementation written
9 * by Eric Young (eay@mincom.oz.au).
10 * The implementation was written so as to conform with Netscapes SSL.

--- 43 unchanged lines hidden (view full) ---

54 * SUCH DAMAGE.
55 *
56 * The licence and distribution terms for any publically available version or
57 * derivative of this code cannot be changed. i.e. this code cannot simply be
58 * copied and put under another distribution licence
59 * [including the GNU Public Licence.]
60 */
61
62#include <sys/types.h>
62#include <crypto/blowfish/blowfish.h>
63#include <crypto/blowfish/bf_locl.h>
64
65/* Blowfish as implemented from 'Blowfish: Springer-Verlag paper'
66 * (From LECTURE NOTES IN COIMPUTER SCIENCE 809, FAST SOFTWARE ENCRYPTION,
67 * CAMBRIDGE SECURITY WORKSHOP, CAMBRIDGE, U.K., DECEMBER 9-11, 1993)
68 */
69
70#if (BF_ROUNDS != 16) && (BF_ROUNDS != 20)
71If you set BF_ROUNDS to some value other than 16 or 20, you will have
72to modify the code.
73#endif
74
63#include <crypto/blowfish/blowfish.h>
64#include <crypto/blowfish/bf_locl.h>
65
66/* Blowfish as implemented from 'Blowfish: Springer-Verlag paper'
67 * (From LECTURE NOTES IN COIMPUTER SCIENCE 809, FAST SOFTWARE ENCRYPTION,
68 * CAMBRIDGE SECURITY WORKSHOP, CAMBRIDGE, U.K., DECEMBER 9-11, 1993)
69 */
70
71#if (BF_ROUNDS != 16) && (BF_ROUNDS != 20)
72If you set BF_ROUNDS to some value other than 16 or 20, you will have
73to modify the code.
74#endif
75
75void BF_encrypt(data,key,encrypt)
76BF_LONG *data;
77BF_KEY *key;
78int encrypt;
79 {
80 register BF_LONG l,r,*p,*s;
76/* XXX "data" is host endian */
77void
78BF_encrypt(data, key, encrypt)
79 BF_LONG *data;
80 BF_KEY *key;
81 int encrypt;
82{
83 register BF_LONG l, r, *p, *s;
81
84
82 p=key->P;
83 s= &(key->S[0]);
84 l=data[0];
85 r=data[1];
85 p = key->P;
86 s= &key->S[0];
87 l = data[0];
88 r = data[1];
86
89
87 if (encrypt)
88 {
90 if (encrypt) {
89 l^=p[0];
91 l^=p[0];
90 BF_ENC(r,l,s,p[ 1]);
91 BF_ENC(l,r,s,p[ 2]);
92 BF_ENC(r,l,s,p[ 3]);
93 BF_ENC(l,r,s,p[ 4]);
94 BF_ENC(r,l,s,p[ 5]);
95 BF_ENC(l,r,s,p[ 6]);
96 BF_ENC(r,l,s,p[ 7]);
97 BF_ENC(l,r,s,p[ 8]);
98 BF_ENC(r,l,s,p[ 9]);
99 BF_ENC(l,r,s,p[10]);
100 BF_ENC(r,l,s,p[11]);
101 BF_ENC(l,r,s,p[12]);
102 BF_ENC(r,l,s,p[13]);
103 BF_ENC(l,r,s,p[14]);
104 BF_ENC(r,l,s,p[15]);
105 BF_ENC(l,r,s,p[16]);
92 BF_ENC(r, l, s, p[ 1]);
93 BF_ENC(l, r, s, p[ 2]);
94 BF_ENC(r, l, s, p[ 3]);
95 BF_ENC(l, r, s, p[ 4]);
96 BF_ENC(r, l, s, p[ 5]);
97 BF_ENC(l, r, s, p[ 6]);
98 BF_ENC(r, l, s, p[ 7]);
99 BF_ENC(l, r, s, p[ 8]);
100 BF_ENC(r, l, s, p[ 9]);
101 BF_ENC(l, r, s, p[10]);
102 BF_ENC(r, l, s, p[11]);
103 BF_ENC(l, r, s, p[12]);
104 BF_ENC(r, l, s, p[13]);
105 BF_ENC(l, r, s, p[14]);
106 BF_ENC(r, l, s, p[15]);
107 BF_ENC(l, r, s, p[16]);
106#if BF_ROUNDS == 20
108#if BF_ROUNDS == 20
107 BF_ENC(r,l,s,p[17]);
108 BF_ENC(l,r,s,p[18]);
109 BF_ENC(r,l,s,p[19]);
110 BF_ENC(l,r,s,p[20]);
109 BF_ENC(r, l, s, p[17]);
110 BF_ENC(l, r, s, p[18]);
111 BF_ENC(r, l, s, p[19]);
112 BF_ENC(l, r, s, p[20]);
111#endif
113#endif
112 r^=p[BF_ROUNDS+1];
113 }
114 else
115 {
116 l^=p[BF_ROUNDS+1];
114 r ^= p[BF_ROUNDS + 1];
115 } else {
116 l ^= p[BF_ROUNDS + 1];
117#if BF_ROUNDS == 20
117#if BF_ROUNDS == 20
118 BF_ENC(r,l,s,p[20]);
119 BF_ENC(l,r,s,p[19]);
120 BF_ENC(r,l,s,p[18]);
121 BF_ENC(l,r,s,p[17]);
118 BF_ENC(r, l, s, p[20]);
119 BF_ENC(l, r, s, p[19]);
120 BF_ENC(r, l, s, p[18]);
121 BF_ENC(l, r, s, p[17]);
122#endif
122#endif
123 BF_ENC(r,l,s,p[16]);
124 BF_ENC(l,r,s,p[15]);
125 BF_ENC(r,l,s,p[14]);
126 BF_ENC(l,r,s,p[13]);
127 BF_ENC(r,l,s,p[12]);
128 BF_ENC(l,r,s,p[11]);
129 BF_ENC(r,l,s,p[10]);
130 BF_ENC(l,r,s,p[ 9]);
131 BF_ENC(r,l,s,p[ 8]);
132 BF_ENC(l,r,s,p[ 7]);
133 BF_ENC(r,l,s,p[ 6]);
134 BF_ENC(l,r,s,p[ 5]);
135 BF_ENC(r,l,s,p[ 4]);
136 BF_ENC(l,r,s,p[ 3]);
137 BF_ENC(r,l,s,p[ 2]);
138 BF_ENC(l,r,s,p[ 1]);
139 r^=p[0];
140 }
141 data[1]=l&0xffffffff;
142 data[0]=r&0xffffffff;
123 BF_ENC(r, l, s, p[16]);
124 BF_ENC(l, r, s, p[15]);
125 BF_ENC(r, l, s, p[14]);
126 BF_ENC(l, r, s, p[13]);
127 BF_ENC(r, l, s, p[12]);
128 BF_ENC(l, r, s, p[11]);
129 BF_ENC(r, l, s, p[10]);
130 BF_ENC(l, r, s, p[ 9]);
131 BF_ENC(r, l, s, p[ 8]);
132 BF_ENC(l, r, s, p[ 7]);
133 BF_ENC(r, l, s, p[ 6]);
134 BF_ENC(l, r, s, p[ 5]);
135 BF_ENC(r, l, s, p[ 4]);
136 BF_ENC(l, r, s, p[ 3]);
137 BF_ENC(r, l, s, p[ 2]);
138 BF_ENC(l, r, s, p[ 1]);
139 r ^= p[0];
143 }
140 }
141 data[1] = l & 0xffffffff;
142 data[0] = r & 0xffffffff;
143}