X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=blobdiff_plain;f=dh.c;h=261209aafedcfaa7077143e43fa27b268a507d10;hp=f94665c9b52637fd4fda9988da612214a2e539df;hb=147b444d6faa9a621e33d653b7a72c29724203c3;hpb=ed2b0c2a90657c4f5f1e38ec5bca9d05aef1864a diff --git a/dh.c b/dh.c index f94665c..261209a 100644 --- a/dh.c +++ b/dh.c @@ -61,14 +61,16 @@ static string_t dh_makepublic(void *sst, uint8_t *secret, int32_t secretlen) return r; } -static int32_t write_mpbin(MP_INT *a, uint8_t *buffer, - int32_t buflen) +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);