| Index: openssl/crypto/camellia/cmll_cfb.c
 | 
| ===================================================================
 | 
| --- openssl/crypto/camellia/cmll_cfb.c	(revision 105093)
 | 
| +++ openssl/crypto/camellia/cmll_cfb.c	(working copy)
 | 
| @@ -105,17 +105,8 @@
 | 
|   * [including the GNU Public Licence.]
 | 
|   */
 | 
|  
 | 
| -#ifndef CAMELLIA_DEBUG
 | 
| -# ifndef NDEBUG
 | 
| -#  define NDEBUG
 | 
| -# endif
 | 
| -#endif
 | 
| -#include <assert.h>
 | 
| -#include <string.h>
 | 
| -
 | 
|  #include <openssl/camellia.h>
 | 
| -#include "cmll_locl.h"
 | 
| -#include "e_os.h"
 | 
| +#include <openssl/modes.h>
 | 
|  
 | 
|  
 | 
|  /* The input and output encrypted as though 128bit cfb mode is being
 | 
| @@ -124,112 +115,25 @@
 | 
|   */
 | 
|  
 | 
|  void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out,
 | 
| -	const unsigned long length, const CAMELLIA_KEY *key,
 | 
| +	size_t length, const CAMELLIA_KEY *key,
 | 
|  	unsigned char *ivec, int *num, const int enc)
 | 
|  	{
 | 
|  
 | 
| -	unsigned int n;
 | 
| -	unsigned long l = length;
 | 
| -	unsigned char c;
 | 
| -
 | 
| -	assert(in && out && key && ivec && num);
 | 
| -
 | 
| -	n = *num;
 | 
| -
 | 
| -	if (enc) 
 | 
| -		{
 | 
| -		while (l--) 
 | 
| -			{
 | 
| -			if (n == 0) 
 | 
| -				{
 | 
| -				Camellia_encrypt(ivec, ivec, key);
 | 
| -				}
 | 
| -			ivec[n] = *(out++) = *(in++) ^ ivec[n];
 | 
| -			n = (n+1) % CAMELLIA_BLOCK_SIZE;
 | 
| -			}
 | 
| -		} 
 | 
| -	else 
 | 
| -		{
 | 
| -		while (l--) 
 | 
| -			{
 | 
| -			if (n == 0) 
 | 
| -				{
 | 
| -				Camellia_encrypt(ivec, ivec, key);
 | 
| -				}
 | 
| -			c = *(in);
 | 
| -			*(out++) = *(in++) ^ ivec[n];
 | 
| -			ivec[n] = c;
 | 
| -			n = (n+1) % CAMELLIA_BLOCK_SIZE;
 | 
| -			}
 | 
| -		}
 | 
| -
 | 
| -	*num=n;
 | 
| +	CRYPTO_cfb128_encrypt(in,out,length,key,ivec,num,enc,(block128_f)Camellia_encrypt);
 | 
|  	}
 | 
|  
 | 
| -/* This expects a single block of size nbits for both in and out. Note that
 | 
| -   it corrupts any extra bits in the last byte of out */
 | 
| -void Camellia_cfbr_encrypt_block(const unsigned char *in,unsigned char *out,
 | 
| -	const int nbits,const CAMELLIA_KEY *key,
 | 
| -	unsigned char *ivec,const int enc)
 | 
| -	{
 | 
| -	int n,rem,num;
 | 
| -	unsigned char ovec[CAMELLIA_BLOCK_SIZE*2];
 | 
| -
 | 
| -	if (nbits<=0 || nbits>128) return;
 | 
| -
 | 
| -	/* fill in the first half of the new IV with the current IV */
 | 
| -	memcpy(ovec,ivec,CAMELLIA_BLOCK_SIZE);
 | 
| -	/* construct the new IV */
 | 
| -	Camellia_encrypt(ivec,ivec,key);
 | 
| -	num = (nbits+7)/8;
 | 
| -	if (enc)	/* encrypt the input */
 | 
| -		for(n=0 ; n < num ; ++n)
 | 
| -			out[n] = (ovec[CAMELLIA_BLOCK_SIZE+n] = in[n] ^ ivec[n]);
 | 
| -	else		/* decrypt the input */
 | 
| -		for(n=0 ; n < num ; ++n)
 | 
| -			out[n] = (ovec[CAMELLIA_BLOCK_SIZE+n] = in[n]) ^ ivec[n];
 | 
| -	/* shift ovec left... */
 | 
| -	rem = nbits%8;
 | 
| -	num = nbits/8;
 | 
| -	if(rem==0)
 | 
| -		memcpy(ivec,ovec+num,CAMELLIA_BLOCK_SIZE);
 | 
| -	else
 | 
| -		for(n=0 ; n < CAMELLIA_BLOCK_SIZE ; ++n)
 | 
| -			ivec[n] = ovec[n+num]<<rem | ovec[n+num+1]>>(8-rem);
 | 
| -
 | 
| -	/* it is not necessary to cleanse ovec, since the IV is not secret */
 | 
| -	}
 | 
| -
 | 
|  /* N.B. This expects the input to be packed, MS bit first */
 | 
|  void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out,
 | 
| -	const unsigned long length, const CAMELLIA_KEY *key,
 | 
| +	size_t length, const CAMELLIA_KEY *key,
 | 
|  	unsigned char *ivec, int *num, const int enc)
 | 
|  	{
 | 
| -	unsigned int n;
 | 
| -	unsigned char c[1],d[1];
 | 
| -
 | 
| -	assert(in && out && key && ivec && num);
 | 
| -	assert(*num == 0);
 | 
| -
 | 
| -	memset(out,0,(length+7)/8);
 | 
| -	for(n=0 ; n < length ; ++n)
 | 
| -		{
 | 
| -		c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
 | 
| -		Camellia_cfbr_encrypt_block(c,d,1,key,ivec,enc);
 | 
| -		out[n/8]=(out[n/8]&~(1 << (7-n%8)))|((d[0]&0x80) >> (n%8));
 | 
| -		}
 | 
| +	CRYPTO_cfb128_1_encrypt(in,out,length,key,ivec,num,enc,(block128_f)Camellia_encrypt);
 | 
|  	}
 | 
|  
 | 
|  void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out,
 | 
| -	const unsigned long length, const CAMELLIA_KEY *key,
 | 
| +	size_t length, const CAMELLIA_KEY *key,
 | 
|  	unsigned char *ivec, int *num, const int enc)
 | 
|  	{
 | 
| -	unsigned int n;
 | 
| -
 | 
| -	assert(in && out && key && ivec && num);
 | 
| -	assert(*num == 0);
 | 
| -
 | 
| -	for(n=0 ; n < length ; ++n)
 | 
| -		Camellia_cfbr_encrypt_block(&in[n],&out[n],8,key,ivec,enc);
 | 
| +	CRYPTO_cfb128_8_encrypt(in,out,length,key,ivec,num,enc,(block128_f)Camellia_encrypt);
 | 
|  	}
 | 
|  
 | 
| 
 |