chiark / gitweb /
dh: Fix mpz padding bug in use of write_mpbin
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 8 Dec 2019 13:15:37 +0000 (13:15 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 30 Dec 2019 13:15:50 +0000 (13:15 +0000)
commit307d65daa2ab6654e84e986eae00d980030f4264
tree531a1e368f11a55cb118ad7f9abe9f76649cf7d0
parent391328cc43dda6b39585d344b2f2e7506b451f5b
dh: Fix mpz padding bug in use of write_mpbin

If the BN needs less than buflen bytes, write_mpbin would write only
the first len bytes.  dh_makeshared wouldn't notice.  The remaining
bytes will be left uninitialised.

In current code this is only called from site.c, where it so happens
right now that this buffer is always zero on entry.  So the effect is
thst we pad the bignum with zeroes at the LS end, which is wrong.

We can't just change this because it's baked into the protocol.
So actually implement it properly.

We do this in the write_mpbin function, renaming it, because the old
API for write_mpbin invites precisely this error.

I don't think this is of an significant consequence
cryptographically.  Perhaps we should introduce a non-anomalous
version of DH over prime fields.  Or perhaps we should just leave it
as is and expect to switch to X448 or something.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dh.c