X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilcrng.c;h=e9fe1c81ffe3d596b1572aeafa355104f388a2dc;hb=017dec75a98209fbef49eb496c2269b0c49e736d;hp=3aecd117b14523df2d60edc6a4530ce91fb1b5fc;hpb=56ef542ccf513a809ef7034ab068935f889185e8;p=silc.git diff --git a/lib/silccrypt/silcrng.c b/lib/silccrypt/silcrng.c index 3aecd117..e9fe1c81 100644 --- a/lib/silccrypt/silcrng.c +++ b/lib/silccrypt/silcrng.c @@ -191,17 +191,20 @@ void silc_rng_init(SilcRng rng) static void silc_rng_get_soft_noise(SilcRng rng) { +#ifndef SILC_WIN32 struct tms ptime; +#endif uint32 pos; pos = silc_rng_get_position(rng); silc_rng_xor(rng, clock(), 0); +#ifndef SILC_WIN32 #ifdef HAVE_GETPID silc_rng_xor(rng, getpid(), 1); #ifdef HAVE_GETPGID - silc_rng_xor(rng, getpgid(getpid() << 8), 2); - silc_rng_xor(rng, getpgid(getpid() << 8), 3); + silc_rng_xor(rng, getpgid(getpid()) << 8, 2); + silc_rng_xor(rng, getpgid(getpid()) << 8, 3); #endif silc_rng_xor(rng, getgid(), 4); #endif @@ -209,7 +212,7 @@ static void silc_rng_get_soft_noise(SilcRng rng) silc_rng_xor(rng, getpgrp(), 5); #endif #ifdef HAVE_GETSID - silc_rng_xor(rng, getsid(getpid() << 16), 6); + silc_rng_xor(rng, getsid(getpid()) << 16, 6); #endif silc_rng_xor(rng, times(&ptime), 7); silc_rng_xor(rng, ptime.tms_utime, 8); @@ -222,21 +225,24 @@ static void silc_rng_get_soft_noise(SilcRng rng) silc_rng_xor(rng, (ptime.tms_stime ^ ptime.tms_cutime), pos++); silc_rng_xor(rng, (ptime.tms_cutime + ptime.tms_stime), pos++); silc_rng_xor(rng, (ptime.tms_stime << 8), pos++); +#endif silc_rng_xor(rng, clock() << 4, pos++); +#ifndef SILC_WIN32 #ifdef HAVE_GETPGID - silc_rng_xor(rng, getpgid(getpid() << 8), pos++); + silc_rng_xor(rng, getpgid(getpid()) << 8, pos++); #endif #ifdef HAVE_GETPGRP silc_rng_xor(rng, getpgrp(), pos++); #endif #ifdef HAVE_SETSID - silc_rng_xor(rng, getsid(getpid() << 16), pos++); + silc_rng_xor(rng, getsid(getpid()) << 16, pos++); #endif silc_rng_xor(rng, times(&ptime), pos++); silc_rng_xor(rng, ptime.tms_utime, pos++); #ifdef HAVE_GETPGRP silc_rng_xor(rng, getpgrp(), pos++); #endif +#endif #ifdef SILC_RNG_DEBUG SILC_LOG_HEXDUMP(("pool"), rng->pool, sizeof(rng->pool)); @@ -265,6 +271,7 @@ static void silc_rng_get_medium_noise(SilcRng rng) static void silc_rng_get_hard_noise(SilcRng rng) { +#ifndef SILC_WIN32 char buf[32]; int fd, len, i; @@ -289,12 +296,14 @@ static void silc_rng_get_hard_noise(SilcRng rng) out: close(fd); memset(buf, 0, sizeof(buf)); +#endif } /* Execs command and gets noise from its output */ static void silc_rng_exec_command(SilcRng rng, char *command) { +#ifndef SILC_WIN32 char buf[1024]; FILE *fd; int i; @@ -321,6 +330,7 @@ static void silc_rng_exec_command(SilcRng rng, char *command) /* Add the buffer into random pool */ silc_rng_add_noise(rng, buf, strlen(buf)); memset(buf, 0, sizeof(buf)); +#endif } /* This function adds the contents of the buffer as noise into random