~mdw
/
secnet
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
site: use unaligned.h's functions, not pointer cast and ntohl
[secnet]
/
dh.c
diff --git
a/dh.c
b/dh.c
index
fff9b99
..
c37b538
100644
(file)
--- a/
dh.c
+++ b/
dh.c
@@
-12,7
+12,7
@@
struct dh {
MP_INT p,g; /* prime modulus and generator */
};
MP_INT p,g; /* prime modulus and generator */
};
-static string_t dh_makepublic(void *sst, uint8_t *secret,
u
int32_t secretlen)
+static string_t dh_makepublic(void *sst, uint8_t *secret, int32_t secretlen)
{
struct dh *st=sst;
string_t r;
{
struct dh *st=sst;
string_t r;
@@
-33,9
+33,9
@@
static string_t dh_makepublic(void *sst, uint8_t *secret, uint32_t secretlen)
}
static dh_makeshared_fn dh_makeshared;
}
static dh_makeshared_fn dh_makeshared;
-static void dh_makeshared(void *sst, uint8_t *secret,
u
int32_t secretlen,
+static void dh_makeshared(void *sst, uint8_t *secret, int32_t secretlen,
cstring_t rempublic, uint8_t *sharedsecret,
cstring_t rempublic, uint8_t *sharedsecret,
-
u
int32_t buflen)
+ int32_t buflen)
{
struct dh *st=sst;
MP_INT a, b, c;
{
struct dh *st=sst;
MP_INT a, b, c;
@@
-125,6
+125,10
@@
static list_t *dh_apply(closure_t *self, struct cloc loc, dict_t *context,
st->ops.len=sz;
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);
}
return new_closure(&st->cl);
}