Source code cleanups: Use void * rather than char * in lhash,
[openssl.git] / crypto / des / enc_writ.c
index c2b407408bf8419310a0e8b33568fcb1736f3414..917ec725ea7b9fc04bf4dbbe776bf0774aa07e74 100644 (file)
@@ -61,6 +61,7 @@
 #include <stdio.h>
 #include "cryptlib.h"
 #include "des_locl.h"
+#include <openssl/rand.h>
 
 /*
  * WARNINGS:
  *  -  This code cannot handle non-blocking sockets.
  */
 
-int des_enc_write(int fd, const char *buf, int len, des_key_schedule sched,
-            des_cblock iv)
+int des_enc_write(int fd, const void *_buf, int len,
+                 des_key_schedule sched, des_cblock *iv)
        {
 #ifdef _LIBC
-       extern int srandom();
        extern unsigned long time();
-       extern int random();
        extern int write();
 #endif
-
+       const unsigned char *buf=_buf;
        long rnum;
        int i,j,k,outnum;
        static unsigned char *outbuf=NULL;
        unsigned char shortbuf[8];
-       char *p;
+       unsigned char *p;
        const unsigned char *cp;
        static int start=1;
 
@@ -104,7 +103,6 @@ int des_enc_write(int fd, const char *buf, int len, des_key_schedule sched,
        if (start)
                {
                start=0;
-               srandom(time(NULL));
                }
 
        /* lets recurse if we want to send the data in small chunks */
@@ -132,13 +130,12 @@ int des_enc_write(int fd, const char *buf, int len, des_key_schedule sched,
                {
                cp=shortbuf;
                memcpy(shortbuf,buf,len);
-               for (i=len; i<8; i++)
-                       shortbuf[i]=random();
+               RAND_pseudo_bytes(shortbuf+len, 8-len);
                rnum=8;
                }
        else
                {
-               cp=(unsigned char*)buf;
+               cp=buf;
                rnum=((len+7)/8*8); /* round up to nearest eight */
                }
 
@@ -156,12 +153,15 @@ int des_enc_write(int fd, const char *buf, int len, des_key_schedule sched,
                {
                /* eay 26/08/92 I was not doing writing from where we
                 * got upto. */
-               i=write(fd,&(outbuf[j]),outnum-j);
+               i=write(fd,(void *)&(outbuf[j]),outnum-j);
                if (i == -1)
                        {
+#ifdef EINTR
                        if (errno == EINTR)
                                i=0;
-                       else    /* This is really a bad error - very bad
+                       else
+#endif
+                               /* This is really a bad error - very bad
                                 * It will stuff-up both ends. */
                                return(-1);
                        }