X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=dh.c;h=261209aafedcfaa7077143e43fa27b268a507d10;hb=49b56eafcd147185c28848a7c04e31a32c49a82e;hp=0616a43e4007dc330137431cbf8908b34823861c;hpb=e84c081039387230c524f9f34903afacaab4219b;p=secnet.git diff --git a/dh.c b/dh.c index 0616a43..261209a 100644 --- a/dh.c +++ b/dh.c @@ -61,6 +61,18 @@ static string_t dh_makepublic(void *sst, uint8_t *secret, int32_t secretlen) return r; } +static void write_mpbin_anomalous(MP_INT *a, uint8_t *buffer, + int32_t buflen) + /* If the BN is smaller than buflen, pads it *at the wrong end* */ +{ + char *hb = write_mpstring(a); + int32_t len; + hex_decode(buffer, buflen, &len, hb, True); + if (lenp); - write_mpbin(&c,sharedsecret,buflen); + write_mpbin_anomalous(&c,sharedsecret,buflen); mpz_clear(&a); mpz_clear(&b);