Hi,
I think most people already aware that the current MSLogon only use 31bit key size for DH key exchange. This is extremely unsecure and scaring people using it.
Recently I checked the source codes and it turned out that in dh.c, the program calculating x^y%m is not good and causing this 31bit limitation.
I am willing to contribute my codes which works for full 64bit integer DH calculation, as long as you are willing to accept this change. It's simple to replace the old algorithm, pure C and portable.
Please let me know what you think. I can paste the code here for public domain.