3 Commits
0.18 ... 0.19

Author SHA1 Message Date
Martijn van Brummelen
263d5d161f bump version to 0.19 2016-08-04 07:37:37 +02:00
Martijn van Brummelen
15c444e2eb Build on Fedora 2016-08-03 22:36:20 +02:00
Martijn van Brummelen
1e1eadbc0a version 19 2016-08-03 22:24:58 +02:00
5 changed files with 44 additions and 9 deletions

4
README
View File

@@ -18,6 +18,10 @@ Martijn van Brummelen
RELEASE NOTES
=============
v0.19
- Fix building on Fedora(Unknown off64_t) bug #19.
- Use PRNG instead of zero's bug #7. Thanks xambroz.
v0.18
=====
- Fixed grammar.

View File

@@ -31,6 +31,11 @@
#define _FILE_OFFSET_BITS 64
#endif
/* workaround for Fedora */
#ifndef off64_t
# define off64_t off_t
#endif
/* Busybox headers. */
#ifdef BB_VER
#include "busybox.h"

View File

@@ -25,6 +25,7 @@
#include "mt19937ar-cok.h"
#include "isaac_rand.h"
nwipe_prng_t nwipe_twister =
{
"Mersenne Twister (mt19937ar-cok)",
@@ -40,6 +41,25 @@ nwipe_prng_t nwipe_isaac =
};
/* Print given number of bytes from unsigned integer number to a byte stream buffer starting with low-endian*/
int nwipe_u32tobuffer(u8 *buffer, u32 rand, int len)
{
int i;
u8 c; //single char
if (len > sizeof(u32))
{
nwipe_log( NWIPE_LOG_FATAL, "Tried to print longer number than the value passed." );
len = sizeof(u32);
}
for (i=0 ; i < len; i++)
{
c=rand & 0xFFUL;
rand = rand >> 8;
buffer[i]=c;
}
return 0;
}
int nwipe_twister_init( NWIPE_PRNG_INIT_SIGNATURE )
{
@@ -54,21 +74,23 @@ int nwipe_twister_init( NWIPE_PRNG_INIT_SIGNATURE )
int nwipe_twister_read( NWIPE_PRNG_READ_SIGNATURE )
{
u32 i=0;
u32 ii;
u32 words = count / sizeof( u32 );
u32 remain = count % sizeof( u32 );
u32 words = count / SIZE_OF_TWISTER ; // the values of twister_genrand_int32 is strictly 4 bytes
u32 remain = count % SIZE_OF_TWISTER ; // the values of twister_genrand_int32 is strictly 4 bytes
/* Twister returns 4-bytes per call, so cast the buffer into words. */
/* Twister returns 4-bytes per call, so progress by 4 bytes. */
for( ii = 0; ii < words; ++ii )
{
((u32*)buffer)[ii] = twister_genrand_int32( (twister_state_t*)*state );
nwipe_u32tobuffer((u8*)(buffer+i), twister_genrand_int32( (twister_state_t*)*state ), SIZE_OF_TWISTER) ;
i = i + SIZE_OF_TWISTER;
}
/* Fill the buffer tail if the count is not evenly divided by the size of u32. */
for( ii = 1; ii <= remain; ++ii )
/* If there is some remainder copy only relevant number of bytes to not
* overflow the buffer. */
if ( remain > 0 )
{
/* Notice how three bytes are discarded by doing this. */
((u8*)buffer)[count-ii] = twister_genrand_int32( (twister_state_t*)*state );
nwipe_u32tobuffer((u8*)(buffer+i), twister_genrand_int32( (twister_state_t*)*state ), remain) ;
}
return 0;

View File

@@ -51,6 +51,10 @@ int nwipe_twister_read( NWIPE_PRNG_READ_SIGNATURE );
int nwipe_isaac_init( NWIPE_PRNG_INIT_SIGNATURE );
int nwipe_isaac_read( NWIPE_PRNG_READ_SIGNATURE );
/* Size of the twister is not derived from the architecture, but it is strictly 4 bytes */
#define SIZE_OF_TWISTER 4
#endif /* PRNG_H_ */
/* eof */

View File

@@ -4,7 +4,7 @@
* used by configure to dynamically assign those values
* to documentation files.
*/
const char *version_string = "0.18";
const char *version_string = "0.19";
const char *program_name = "nwipe";
const char *author_name = "Martijn van Brummelen";
const char *email_address = "git@brumit.nl";