X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fdes%2Fenc_read.c;h=b86620f56823b3601a8062018d6600b420d09186;hp=a33e2496b467e9817829bf5385bc8ea8979f6f64;hb=8e93eff8c6977f47c1ee2bd19c44d710b1b845b5;hpb=6b691a5c85ddc4e407e32781841fee5c029506cd diff --git a/crypto/des/enc_read.c b/crypto/des/enc_read.c index a33e2496b4..b86620f568 100644 --- a/crypto/des/enc_read.c +++ b/crypto/des/enc_read.c @@ -63,15 +63,15 @@ /* This has some uglies in it but it works - even over sockets. */ /*extern int errno;*/ -int des_rw_mode=DES_PCBC_MODE; +OPENSSL_IMPLEMENT_GLOBAL(int,DES_rw_mode,DES_PCBC_MODE) /* * WARNINGS: * - * - The data format used by des_enc_write() and des_enc_read() + * - The data format used by DES_enc_write() and DES_enc_read() * has a cryptographic weakness: When asked to write more - * than MAXWRITE bytes, des_enc_write will split the data + * than MAXWRITE bytes, DES_enc_write will split the data * into several chunks that are all encrypted * using the same IV. So don't use these functions unless you * are sure you know what you do (in which case you might @@ -84,36 +84,39 @@ int des_rw_mode=DES_PCBC_MODE; */ -int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, - des_cblock iv) +int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched, + DES_cblock *iv) { +#if defined(OPENSSL_NO_POSIX_IO) + return(0); +#else /* data to be unencrypted */ int net_num=0; static unsigned char *net=NULL; /* extra unencrypted data * for when a block of 100 comes in but is des_read one byte at * a time. */ - static char *unnet=NULL; + static unsigned char *unnet=NULL; static int unnet_start=0; static int unnet_left=0; - static char *tmpbuf=NULL; + static unsigned char *tmpbuf=NULL; int i; long num=0,rnum; unsigned char *p; if (tmpbuf == NULL) { - tmpbuf=(char *)Malloc(BSIZE); + tmpbuf=OPENSSL_malloc(BSIZE); if (tmpbuf == NULL) return(-1); } if (net == NULL) { - net=(unsigned char *)Malloc(BSIZE); + net=OPENSSL_malloc(BSIZE); if (net == NULL) return(-1); } if (unnet == NULL) { - unnet=(char *)Malloc(BSIZE); + unnet=OPENSSL_malloc(BSIZE); if (unnet == NULL) return(-1); } /* left over data from last decrypt */ @@ -125,7 +128,7 @@ int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, * with the number of bytes we have - should always * check the return value */ memcpy(buf,&(unnet[unnet_start]), - (unsigned int)unnet_left); + unnet_left); /* eay 26/08/92 I had the next 2 lines * reversed :-( */ i=unnet_left; @@ -133,7 +136,7 @@ int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, } else { - memcpy(buf,&(unnet[unnet_start]),(unsigned int)len); + memcpy(buf,&(unnet[unnet_start]),len); unnet_start+=len; unnet_left-=len; i=len; @@ -147,7 +150,7 @@ int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, /* first - get the length */ while (net_num < HDRSIZE) { - i=read(fd,&(net[net_num]),(unsigned int)HDRSIZE-net_num); + i=read(fd,(void *)&(net[net_num]),HDRSIZE-net_num); #ifdef EINTR if ((i == -1) && (errno == EINTR)) continue; #endif @@ -169,7 +172,7 @@ int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, net_num=0; while (net_num < rnum) { - i=read(fd,&(net[net_num]),(unsigned int)rnum-net_num); + i=read(fd,(void *)&(net[net_num]),rnum-net_num); #ifdef EINTR if ((i == -1) && (errno == EINTR)) continue; #endif @@ -180,13 +183,13 @@ int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, /* Check if there will be data left over. */ if (len < num) { - if (des_rw_mode & DES_PCBC_MODE) - des_pcbc_encrypt(net,unnet,num,sched,iv,DES_DECRYPT); + if (DES_rw_mode & DES_PCBC_MODE) + DES_pcbc_encrypt(net,unnet,num,sched,iv,DES_DECRYPT); else - des_cbc_encrypt(net,unnet,num,sched,iv,DES_DECRYPT); - memcpy(buf,unnet,(unsigned int)len); + DES_cbc_encrypt(net,unnet,num,sched,iv,DES_DECRYPT); + memcpy(buf,unnet,len); unnet_start=len; - unnet_left=(int)num-len; + unnet_left=num-len; /* The following line is done because we return num * as the number of bytes read. */ @@ -202,27 +205,28 @@ int des_enc_read(int fd, char *buf, int len, des_key_schedule sched, if (len < rnum) { - if (des_rw_mode & DES_PCBC_MODE) - des_pcbc_encrypt(net,tmpbuf,num,sched,iv, + if (DES_rw_mode & DES_PCBC_MODE) + DES_pcbc_encrypt(net,tmpbuf,num,sched,iv, DES_DECRYPT); else - des_cbc_encrypt(net,tmpbuf,num,sched,iv, + DES_cbc_encrypt(net,tmpbuf,num,sched,iv, DES_DECRYPT); /* eay 26/08/92 fix a bug that returned more * bytes than you asked for (returned len bytes :-( */ - memcpy(buf,tmpbuf,(unsigned int)num); + memcpy(buf,tmpbuf,num); } else { - if (des_rw_mode & DES_PCBC_MODE) - des_pcbc_encrypt(net,buf,num,sched,iv, + if (DES_rw_mode & DES_PCBC_MODE) + DES_pcbc_encrypt(net,buf,num,sched,iv, DES_DECRYPT); else - des_cbc_encrypt(net,buf,num,sched,iv, + DES_cbc_encrypt(net,buf,num,sched,iv, DES_DECRYPT); } } - return((int)num); + return num; +#endif /* OPENSSL_NO_POSIX_IO */ }