bf_skey.c (63249) | bf_skey.c (78064) |
---|---|
1/* $FreeBSD: head/sys/crypto/blowfish/bf_skey.c 62587 2000-07-04 16:35:15Z itojun $ */ 2/* $KAME: bf_skey.c,v 1.3 2000/03/27 04:36:27 sumikawa Exp $ */ | 1/* $FreeBSD: head/sys/crypto/blowfish/bf_skey.c 78064 2001-06-11 12:39:29Z ume $ */ 2/* $KAME: bf_skey.c,v 1.5 2000/11/06 13:58:08 itojun Exp $ */ |
3 4/* crypto/bf/bf_skey.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. --- 50 unchanged lines hidden (view full) --- 61 62#include <sys/types.h> 63#include <sys/time.h> 64#include <sys/systm.h> 65#include <crypto/blowfish/blowfish.h> 66#include <crypto/blowfish/bf_locl.h> 67#include <crypto/blowfish/bf_pi.h> 68 | 3 4/* crypto/bf/bf_skey.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. --- 50 unchanged lines hidden (view full) --- 61 62#include <sys/types.h> 63#include <sys/time.h> 64#include <sys/systm.h> 65#include <crypto/blowfish/blowfish.h> 66#include <crypto/blowfish/bf_locl.h> 67#include <crypto/blowfish/bf_pi.h> 68 |
69void BF_set_key(key,len,data) 70BF_KEY *key; 71int len; 72unsigned char *data; 73 { | 69void 70BF_set_key(key, len, data) 71 BF_KEY *key; 72 int len; 73 unsigned char *data; 74{ |
74 int i; | 75 int i; |
75 BF_LONG *p,ri,in[2]; 76 unsigned char *d,*end; | 76 BF_LONG *p, ri, in[2]; 77 unsigned char *d, *end; |
77 | 78 |
79 memcpy((char *)key, (char *)&bf_init, sizeof(BF_KEY)); 80 p = key->P; |
|
78 | 81 |
79 memcpy((char *)key,(char *)&bf_init,sizeof(BF_KEY)); 80 p=key->P; | 82 if (len > ((BF_ROUNDS + 2) * 4)) 83 len = (BF_ROUNDS + 2) * 4; |
81 | 84 |
82 if (len > ((BF_ROUNDS+2)*4)) len=(BF_ROUNDS+2)*4; 83 84 d=data; | 85 d = data; |
85 end= &(data[len]); | 86 end= &(data[len]); |
86 for (i=0; i<(BF_ROUNDS+2); i++) 87 { 88 ri= *(d++); 89 if (d >= end) d=data; | 87 for (i = 0; i < BF_ROUNDS + 2; i++) { 88 ri = *(d++); 89 if (d >= end) d = data; |
90 | 90 |
91 ri<<=8; 92 ri|= *(d++); 93 if (d >= end) d=data; | 91 ri <<= 8; 92 ri |= *(d++); 93 if (d >= end) d = data; |
94 | 94 |
95 ri<<=8; 96 ri|= *(d++); 97 if (d >= end) d=data; | 95 ri <<= 8; 96 ri |= *(d++); 97 if (d >= end) d = data; |
98 | 98 |
99 ri<<=8; 100 ri|= *(d++); 101 if (d >= end) d=data; | 99 ri <<= 8; 100 ri |= *(d++); 101 if (d >= end) d = data; |
102 | 102 |
103 p[i]^=ri; 104 } | 103 p[i] ^= ri; 104 } |
105 | 105 |
106 in[0]=0L; 107 in[1]=0L; 108 for (i=0; i<(BF_ROUNDS+2); i+=2) 109 { 110 BF_encrypt(in,key,BF_ENCRYPT); 111 p[i ]=in[0]; 112 p[i+1]=in[1]; 113 } 114 115 p=key->S; 116 for (i=0; i<4*256; i+=2) 117 { 118 BF_encrypt(in,key,BF_ENCRYPT); 119 p[i ]=in[0]; 120 p[i+1]=in[1]; 121 } | 106 in[0] = 0L; 107 in[1] = 0L; 108 for (i = 0; i < BF_ROUNDS + 2; i += 2) { 109 BF_encrypt(in, key, BF_ENCRYPT); 110 p[i ] = in[0]; 111 p[i+1] = in[1]; |
122 } 123 | 112 } 113 |
114 p = key->S; 115 for (i = 0; i < 4 * 256; i += 2) { 116 BF_encrypt(in, key, BF_ENCRYPT); 117 p[i ] = in[0]; 118 p[i+1] = in[1]; 119 } 120} |
|