X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=sha1.c;h=b11c25a6686506e22469b768bb04baa3e51a5246;hb=7d52d0bd861c3aeaea5214131ef64543d63ea309;hp=4cc63b5c57f0e9b44f4c3b52c6d63fe92c5f0773;hpb=48c12bf40ab30af78abfdf20dde47e00c011afbe;p=secnet.git diff --git a/sha1.c b/sha1.c index 4cc63b5..b11c25a 100644 --- a/sha1.c +++ b/sha1.c @@ -287,14 +287,11 @@ unsigned char finalcount[8]; /*************************************************************/ /* Everything below here is the interface to secnet */ -static void *sha1_init(void) +static void sha1_init(void *sst) { - SHA1_CTX *ctx; + SHA1_CTX *ctx=sst; - NEW(ctx); SHA1Init(ctx); - - return ctx; } static void sha1_update(void *sst, const void *buf, int32_t len) @@ -309,7 +306,6 @@ static void sha1_final(void *sst, uint8_t *digest) SHA1_CTX *ctx=sst; SHA1Final(digest,ctx); - free(ctx); } struct sha1 { @@ -320,7 +316,6 @@ struct sha1 { void sha1_module(dict_t *dict) { struct sha1 *st; - void *ctx; cstring_t testinput="abcdbcdecdefdefgefghfghigh" "ijhijkijkljklmklmnlmnomnopnopq"; uint8_t expected[20]= @@ -337,14 +332,16 @@ void sha1_module(dict_t *dict) st->cl.type=CL_HASH; st->cl.apply=NULL; st->cl.interface=&st->ops; - st->ops.len=20; + st->ops.hlen=20; + st->ops.slen=sizeof(SHA1_CTX); st->ops.init=sha1_init; st->ops.update=sha1_update; st->ops.final=sha1_final; dict_add(dict,"sha1",new_closure(&st->cl)); - ctx=sha1_init(); + uint8_t ctx[st->ops.slen]; + sha1_init(ctx); sha1_update(ctx,testinput,strlen(testinput)); sha1_final(ctx,digest); for (i=0; i<20; i++) {