X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/1caa23ff879cec7f8f36b32a987f0610291ef177..d9d101eaf54ff0c58852c8ccf37c4fcd8f8d8a35:/dh.c diff --git a/dh.c b/dh.c index 2383192..54d3102 100644 --- a/dh.c +++ b/dh.c @@ -63,7 +63,7 @@ static list_t *dh_apply(closure_t *self, struct cloc loc, dict_t *context, string_t p,g; item_t *i; - st=safe_malloc(sizeof(*st),"dh_apply"); + NEW(st); st->cl.description="dh"; st->cl.type=CL_DH; st->cl.apply=NULL; @@ -125,6 +125,10 @@ static list_t *dh_apply(closure_t *self, struct cloc loc, dict_t *context, st->ops.len=sz; + st->ops.ceil_len=(mpz_sizeinbase(&st->p,2)+7)/8; + /* According to the docs, mpz_sizeinbase(,256) is allowed to return + * an answer which is 1 too large. But mpz_sizeinbase(,2) isn't. */ + return new_closure(&st->cl); }