You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by be...@apache.org on 2003/11/05 12:59:54 UTC
cvs commit: apr/random/unix apr_random.c
ben 2003/11/05 03:59:54
Modified: include apr_random.h
random/unix apr_random.c
Log:
Code style.
Revision Changes Path
1.3 +2 -3 apr/include/apr_random.h
Index: apr_random.h
===================================================================
RCS file: /home/cvs/apr/include/apr_random.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- apr_random.h 3 Nov 2003 17:50:37 -0000 1.2
+++ apr_random.h 5 Nov 2003 11:59:54 -0000 1.3
@@ -66,14 +66,13 @@
unsigned char *result);
// FIXME: make this opaque
-struct apr_crypto_hash_t
- {
+struct apr_crypto_hash_t {
apr_crypto_hash_init_t *init;
apr_crypto_hash_add_t *add;
apr_crypto_hash_finish_t *finish;
apr_size_t size;
void *data;
- };
+};
apr_crypto_hash_t *apr_crypto_sha256_new(apr_pool_t *p);
1.3 +113 -118 apr/random/unix/apr_random.c
Index: apr_random.c
===================================================================
RCS file: /home/cvs/apr/random/unix/apr_random.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- apr_random.c 3 Nov 2003 17:50:37 -0000 1.2
+++ apr_random.c 5 Nov 2003 11:59:54 -0000 1.3
@@ -70,12 +70,11 @@
#define APR_RANDOM_DEFAULT_G_FOR_INSECURE 32
#define APR_RANDOM_DEFAULT_G_FOR_SECURE 320
-typedef struct apr_random_pool_t
- {
+typedef struct apr_random_pool_t {
unsigned char *pool;
int bytes;
int pool_size;
- } apr_random_pool_t;
+} apr_random_pool_t;
#define hash_init(h) (h)->init(h)
#define hash_add(h,b,n) (h)->add(h,b,n)
@@ -86,8 +85,7 @@
#define crypt_setkey(c,k) (c)->set_key((c)->data,k)
#define crypt_crypt(c,out,in) (c)->crypt((c)->date,out,in)
-struct apr_random_t
- {
+struct apr_random_t {
apr_pool_t *apr_pool;
apr_crypto_hash_t *pool_hash;
unsigned int npools;
@@ -116,222 +114,219 @@
unsigned char secure_started:1;
apr_random_t *next;
- };
+};
static apr_random_t *all_random;
void apr_random_init(apr_random_t *g,apr_pool_t *p,
apr_crypto_hash_t *pool_hash,apr_crypto_hash_t *key_hash,
apr_crypto_hash_t *prng_hash)
- {
+{
int n;
- g->apr_pool=p;
- g->pool_hash=pool_hash;
- g->key_hash=key_hash;
- g->prng_hash=prng_hash;
- g->npools=APR_RANDOM_DEFAULT_POOLS;
- g->pools=apr_palloc(p,g->npools*sizeof *g->pools);
- for(n=0 ; n < g->npools ; ++n)
- {
- g->pools[n].bytes=g->pools[n].pool_size=0;
- g->pools[n].pool=NULL;
- }
- g->next_pool=0;
- g->generation=0;
- g->rehash_size=APR_RANDOM_DEFAULT_REHASH_SIZE;
+ g->apr_pool = p;
+
+ g->pool_hash = pool_hash;
+ g->key_hash = key_hash;
+ g->prng_hash = prng_hash;
+
+ g->npools = APR_RANDOM_DEFAULT_POOLS;
+ g->pools = apr_palloc(p,g->npools*sizeof *g->pools);
+ for (n = 0; n < g->npools; ++n) {
+ g->pools[n].bytes = g->pools[n].pool_size = 0;
+ g->pools[n].pool = NULL;
+ }
+ g->next_pool = 0;
+
+ g->generation = 0;
+
+ g->rehash_size = APR_RANDOM_DEFAULT_REHASH_SIZE;
/* Ensure that the rehash size is twice the size of the pool hasher */
- g->rehash_size=((g->rehash_size+2*g->pool_hash->size-1)/g->pool_hash->size
+ g->rehash_size = ((g->rehash_size+2*g->pool_hash->size-1)/g->pool_hash->size
/2)*g->pool_hash->size*2;
- g->reseed_size=APR_RANDOM_DEFAULT_RESEED_SIZE;
- g->prng_hash=prng_hash;
- g->H=apr_palloc(p,H_size(g));
- g->H_waiting=apr_palloc(p,H_size(g));
- g->randomness=apr_palloc(p,B_size(g));
- g->random_bytes=0;
-
- g->g_for_insecure=APR_RANDOM_DEFAULT_G_FOR_INSECURE;
- g->secure_base=0;
- g->g_for_secure=APR_RANDOM_DEFAULT_G_FOR_SECURE;
- g->secure_started=g->insecure_started=0;
+ g->reseed_size = APR_RANDOM_DEFAULT_RESEED_SIZE;
- g->next=all_random;
- all_random=g;
- }
+ g->H = apr_palloc(p,H_size(g));
+ g->H_waiting = apr_palloc(p,H_size(g));
+
+ g->randomness = apr_palloc(p,B_size(g));
+ g->random_bytes = 0;
+
+ g->g_for_insecure = APR_RANDOM_DEFAULT_G_FOR_INSECURE;
+ g->secure_base = 0;
+ g->g_for_secure = APR_RANDOM_DEFAULT_G_FOR_SECURE;
+ g->secure_started = g->insecure_started = 0;
+
+ g->next = all_random;
+ all_random = g;
+}
static void mix_pid(apr_random_t *g,unsigned char *H,pid_t pid)
- {
+{
hash_init(g->key_hash);
hash_add(g->key_hash,H,H_size(g));
hash_add(g->key_hash,&pid,sizeof pid);
hash_finish(g->key_hash,H);
- }
+}
static void mixer(apr_random_t *g,pid_t pid)
- {
- unsigned char *H=H_current(g);
+{
+ unsigned char *H = H_current(g);
/* mix the PID into the current H */
mix_pid(g,H,pid);
/* if we are in waiting, then also mix into main H */
- if(H != g->H)
+ if (H != g->H)
mix_pid(g,g->H,pid);
/* change order of pool mixing for good measure - note that going
backwards is much better than going forwards */
--g->generation;
/* blow away any lingering randomness */
- g->random_bytes=0;
- }
+ g->random_bytes = 0;
+}
void apr_random_after_fork(apr_proc_t *proc)
- {
+{
apr_random_t *r;
- for(r=all_random ; r ; r=r->next)
+ for (r = all_random; r; r = r->next)
mixer(r,proc->pid);
- }
+}
apr_random_t *apr_random_standard_new(apr_pool_t *p)
- {
- apr_random_t *r=apr_palloc(p,sizeof *r);
+{
+ apr_random_t *r = apr_palloc(p,sizeof *r);
apr_random_init(r,p,apr_crypto_sha256_new(p),apr_crypto_sha256_new(p),
apr_crypto_sha256_new(p));
return r;
- }
+}
static void rekey(apr_random_t *g)
- {
+{
int n;
- unsigned char *H=H_current(g);
+ unsigned char *H = H_current(g);
hash_init(g->key_hash);
hash_add(g->key_hash,H,H_size(g));
- for(n=0 ; n < g->npools && (n == 0 || g->generation&(1 << (n-1)))
- ; ++n)
- {
+ for (n = 0 ; n < g->npools && (n == 0 || g->generation&(1 << (n-1)))
+ ; ++n) {
hash_add(g->key_hash,g->pools[n].pool,g->pools[n].bytes);
- g->pools[n].bytes=0;
- }
+ g->pools[n].bytes = 0;
+ }
hash_finish(g->key_hash,H+B_size(g));
+
++g->generation;
- if(!g->insecure_started && g->generation > g->g_for_insecure)
- {
- g->insecure_started=1;
- if(!g->secure_started)
- {
+ if (!g->insecure_started && g->generation > g->g_for_insecure) {
+ g->insecure_started = 1;
+ if (!g->secure_started) {
memcpy(g->H_waiting,g->H,H_size(g));
- g->secure_base=g->generation;
- }
+ g->secure_base = g->generation;
}
- if(!g->secure_started && g->generation > g->secure_base+g->g_for_secure)
- {
- g->secure_started=1;
+ }
+
+ if (!g->secure_started && g->generation > g->secure_base+g->g_for_secure) {
+ g->secure_started = 1;
memcpy(g->H,g->H_waiting,H_size(g));
- }
}
+}
void apr_random_add_entropy(apr_random_t *g,const void *entropy_,
apr_size_t bytes)
- {
+{
int n;
- const unsigned char *entropy=entropy_;
+ const unsigned char *entropy = entropy_;
+
+ for (n = 0; n < bytes; ++n) {
+ apr_random_pool_t *p = &g->pools[g->next_pool];
- for(n=0 ; n < bytes ; ++n)
- {
- apr_random_pool_t *p=&g->pools[g->next_pool];
-
- if(++g->next_pool == g->npools)
- g->next_pool=0;
-
- if(p->pool_size < p->bytes+1)
- {
- unsigned char *np=apr_palloc(g->apr_pool,(p->bytes+1)*2);
+ if (++g->next_pool == g->npools)
+ g->next_pool = 0;
+
+ if (p->pool_size < p->bytes+1) {
+ unsigned char *np = apr_palloc(g->apr_pool,(p->bytes+1)*2);
memcpy(np,p->pool,p->bytes);
- p->pool=np;
- p->pool_size=(p->bytes+1)*2;
- }
- p->pool[p->bytes++]=entropy[n];
+ p->pool = np;
+ p->pool_size = (p->bytes+1)*2;
+ }
+ p->pool[p->bytes++] = entropy[n];
- if(p->bytes == g->rehash_size)
- {
+ if (p->bytes == g->rehash_size) {
int r;
- for(r=0 ; r < p->bytes/2 ; r+=g->pool_hash->size)
+ for (r = 0; r < p->bytes/2; r+=g->pool_hash->size)
hash(g->pool_hash,p->pool+r,p->pool+r*2,g->pool_hash->size*2);
p->bytes/=2;
- }
- assert(p->bytes < g->rehash_size);
}
+ assert(p->bytes < g->rehash_size);
+ }
- if(g->pools[0].bytes >= g->reseed_size)
+ if (g->pools[0].bytes >= g->reseed_size)
rekey(g);
- }
+}
// This will give g->B_size bytes of randomness
static void apr_random_block(apr_random_t *g,unsigned char *random)
- {
- // FIXME: in principle, these are different hashes
+{
+ /* FIXME: in principle, these are different hashes */
hash(g->prng_hash,g->H,g->H,H_size(g));
hash(g->prng_hash,random,g->H,B_size(g));
- }
+}
static void apr_random_bytes(apr_random_t *g,unsigned char *random,
apr_size_t bytes)
- {
+{
apr_size_t n;
- for(n=0 ; n < bytes ; )
- {
+ for (n = 0; n < bytes; ) {
int l;
- if(g->random_bytes == 0)
- {
+ if (g->random_bytes == 0) {
apr_random_block(g,g->randomness);
- g->random_bytes=B_size(g);
- }
- l=min(bytes-n,g->random_bytes);
+ g->random_bytes = B_size(g);
+ }
+ l = min(bytes-n,g->random_bytes);
memcpy(&random[n],g->randomness+B_size(g)-g->random_bytes,l);
g->random_bytes-=l;
n+=l;
- }
}
+}
apr_status_t apr_random_secure_bytes(apr_random_t *g,void *random,
apr_size_t bytes)
- {
- if(!g->secure_started)
+{
+ if (!g->secure_started)
return APR_ENOTENOUGHENTROPY;
apr_random_bytes(g,random,bytes);
return APR_SUCCESS;
- }
+}
apr_status_t apr_random_insecure_bytes(apr_random_t *g,void *random,
apr_size_t bytes)
- {
- if(!g->insecure_started)
+{
+ if (!g->insecure_started)
return APR_ENOTENOUGHENTROPY;
apr_random_bytes(g,random,bytes);
return APR_SUCCESS;
- }
+}
void apr_random_barrier(apr_random_t *g)
- {
- g->secure_started=0;
- g->secure_base=g->generation;
- }
+{
+ g->secure_started = 0;
+ g->secure_base = g->generation;
+}
apr_status_t apr_random_secure_ready(apr_random_t *r)
- {
- if(!r->secure_started)
+{
+ if (!r->secure_started)
return APR_ENOTENOUGHENTROPY;
return APR_SUCCESS;
- }
+}
apr_status_t apr_random_insecure_ready(apr_random_t *r)
- {
- if(!r->insecure_started)
+{
+ if (!r->insecure_started)
return APR_ENOTENOUGHENTROPY;
return APR_SUCCESS;
- }
+}
Re: cvs commit: apr/random/unix apr_random.c
Posted by Joe Orton <jo...@manyfish.co.uk>.
On Wed, Nov 05, 2003 at 11:32:07PM +0000, Ben Laurie wrote:
> Branko Čibej wrote:
>
> > Ben Laurie wrote:
> >
> >
> >>Jeff Trawick wrote:
> >>
> >>
> >>
> >>> /* FIXME: this is not C99 or C++ or Java */
> >>>
> >>>
> >>
> >>What's the matter? Did your editor break? :-)
> >>
> >>Besides, your revision is wrong...
> >>
> >> /* FIXME: this is not C99 or C++ or Java or gcc */
> >>
> >>
> >
> > So now 'gcc' is a language. Sigh.
> >
> > Try 'gcc -std=c89', and I suggest you always use that for compiling APR.
>
> Jeepers. Lighten up guys!
>
> BTW, if that should be standard, why not make it automatic (at least in
> maintainer mode)?
I'd be a bit wary about doing that: httpd uses code which is not valid
C89 if configured with GCC - designated initializers.
joe
Re: cvs commit: apr/random/unix apr_random.c
Posted by Ben Laurie <be...@algroup.co.uk>.
Branko Čibej wrote:
> Ben Laurie wrote:
>
>
>>Jeff Trawick wrote:
>>
>>
>>
>>> /* FIXME: this is not C99 or C++ or Java */
>>>
>>>
>>
>>What's the matter? Did your editor break? :-)
>>
>>Besides, your revision is wrong...
>>
>> /* FIXME: this is not C99 or C++ or Java or gcc */
>>
>>
>
> So now 'gcc' is a language. Sigh.
>
> Try 'gcc -std=c89', and I suggest you always use that for compiling APR.
Jeepers. Lighten up guys!
BTW, if that should be standard, why not make it automatic (at least in
maintainer mode)?
Cheers,
Ben.
--
http://www.apache-ssl.org/ben.html http://www.thebunker.net/
"There is no limit to what a man can do or how far he can go if he
doesn't mind who gets the credit." - Robert Woodruff
Re: cvs commit: apr/random/unix apr_random.c
Posted by Branko Čibej <br...@xbc.nu>.
Ben Laurie wrote:
>Jeff Trawick wrote:
>
>
>> /* FIXME: this is not C99 or C++ or Java */
>>
>>
>
>What's the matter? Did your editor break? :-)
>
>Besides, your revision is wrong...
>
> /* FIXME: this is not C99 or C++ or Java or gcc */
>
>
So now 'gcc' is a language. Sigh.
Try 'gcc -std=c89', and I suggest you always use that for compiling APR.
--
Brane Čibej <br...@xbc.nu> http://www.xbc.nu/brane/
Re: cvs commit: apr/random/unix apr_random.c
Posted by Jeff Trawick <tr...@attglobal.net>.
Ben Laurie wrote:
> Jeff Trawick wrote:
>
>
>>ben@apache.org wrote:
>>
>>
>>>ben 2003/11/05 03:59:54
>>
>>
>>> Code style.
>>
>>
>>compilability is another issue ;)
>>
>>
>>> Index: apr_random.h
>>> ===================================================================
>>> RCS file: /home/cvs/apr/include/apr_random.h,v
>>> retrieving revision 1.2
>>> retrieving revision 1.3
>>> diff -u -r1.2 -r1.3
>>> --- apr_random.h 3 Nov 2003 17:50:37 -0000 1.2
>>> +++ apr_random.h 5 Nov 2003 11:59:54 -0000 1.3
>>> @@ -66,14 +66,13 @@
>>> unsigned char *result);
>>> // FIXME: make this opaque
>>
>>
>> /* FIXME: this is not C99 or C++ or Java */
>
>
> What's the matter? Did your editor break? :-)
no, it is yet another test to see how worthless you think everybody else's time
really is
Re: cvs commit: apr/random/unix apr_random.c
Posted by Ben Laurie <be...@algroup.co.uk>.
Jeff Trawick wrote:
> ben@apache.org wrote:
>
>> ben 2003/11/05 03:59:54
>
>
>> Code style.
>
>
> compilability is another issue ;)
>
>> Index: apr_random.h
>> ===================================================================
>> RCS file: /home/cvs/apr/include/apr_random.h,v
>> retrieving revision 1.2
>> retrieving revision 1.3
>> diff -u -r1.2 -r1.3
>> --- apr_random.h 3 Nov 2003 17:50:37 -0000 1.2
>> +++ apr_random.h 5 Nov 2003 11:59:54 -0000 1.3
>> @@ -66,14 +66,13 @@
>> unsigned char *result);
>> // FIXME: make this opaque
>
>
> /* FIXME: this is not C99 or C++ or Java */
What's the matter? Did your editor break? :-)
Besides, your revision is wrong...
/* FIXME: this is not C99 or C++ or Java or gcc */
Cheers,
Ben.
--
http://www.apache-ssl.org/ben.html http://www.thebunker.net/
"There is no limit to what a man can do or how far he can go if he
doesn't mind who gets the credit." - Robert Woodruff
Re: cvs commit: apr/random/unix apr_random.c
Posted by Jeff Trawick <tr...@attglobal.net>.
ben@apache.org wrote:
> ben 2003/11/05 03:59:54
> Code style.
compilability is another issue ;)
> Index: apr_random.h
> ===================================================================
> RCS file: /home/cvs/apr/include/apr_random.h,v
> retrieving revision 1.2
> retrieving revision 1.3
> diff -u -r1.2 -r1.3
> --- apr_random.h 3 Nov 2003 17:50:37 -0000 1.2
> +++ apr_random.h 5 Nov 2003 11:59:54 -0000 1.3
> @@ -66,14 +66,13 @@
> unsigned char *result);
>
> // FIXME: make this opaque
/* FIXME: this is not C99 or C++ or Java */