X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshblowf.c;h=353116a6604fdc8334d774f4004999e934f9d321;hb=35d6c97dd733dd258be5ba7e17ec6793a4be79fb;hp=c155b25e836154d40fa58a57b990d47d58f51ab5;hpb=d6375281810357b262065549592e171c01ee7c1e;p=PuTTY.git diff --git a/sshblowf.c b/sshblowf.c index c155b25e..353116a6 100644 --- a/sshblowf.c +++ b/sshblowf.c @@ -17,6 +17,27 @@ struct BlowfishContext { /* * The Blowfish init data: hex digits of the fractional part of pi. * (ie pi as a hex fraction is 3.243F6A8885A308D3...) + * + * If you have Simon Tatham's 'spigot' exact real calculator + * available, or any other method of generating 8336 fractional hex + * digits of pi on standard output, you can regenerate these tables + * exactly as below using the following Perl script (adjusting the + * first line or two if your pi-generator is not spigot). + +open my $spig, "spigot -n -B16 -d8336 pi |"; +read $spig, $ignore, 2; # throw away the leading "3." +for my $name ("parray", "sbox0".."sbox3") { + print "static const word32 ${name}[] = {\n"; + my $len = $name eq "parray" ? 18 : 256; + for my $i (1..$len) { + read $spig, $word, 8; + printf "%s0x%s,", ($i%6==1 ? " " : " "), uc $word; + print "\n" if ($i == $len || $i%6 == 0); + } + print "};\n\n"; +} +close $spig; + */ static const word32 parray[] = { 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0, @@ -620,16 +641,18 @@ const struct ssh_cipher ssh_blowfish_ssh1 = { static const struct ssh2_cipher ssh_blowfish_ssh2 = { blowfish_make_context, blowfish_free_context, blowfish_iv, blowfish_key, - blowfish_ssh2_encrypt_blk, blowfish_ssh2_decrypt_blk, + blowfish_ssh2_encrypt_blk, blowfish_ssh2_decrypt_blk, NULL, NULL, "blowfish-cbc", - 8, 128, SSH_CIPHER_IS_CBC, "Blowfish-128 CBC" + 8, 128, 16, SSH_CIPHER_IS_CBC, "Blowfish-128 CBC", + NULL }; static const struct ssh2_cipher ssh_blowfish_ssh2_ctr = { blowfish_make_context, blowfish_free_context, blowfish_iv, blowfish256_key, - blowfish_ssh2_sdctr, blowfish_ssh2_sdctr, + blowfish_ssh2_sdctr, blowfish_ssh2_sdctr, NULL, NULL, "blowfish-ctr", - 8, 256, 0, "Blowfish-256 SDCTR" + 8, 256, 32, 0, "Blowfish-256 SDCTR", + NULL }; static const struct ssh2_cipher *const blowfish_list[] = {