X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;ds=sidebyside;f=sshsha.c;h=2a07cc3d5d98d7e776b064a180af08ebb4f46d97;hb=8dfa77c88941c4e926d9d65f9730c4ed5f74ba8d;hp=d47b1be937ddd078b675f7845deef6c154d8e80c;hpb=94609c3005979a18771f3e0aa5bdb6fdcd86244f;p=PuTTY_svn.git diff --git a/sshsha.c b/sshsha.c index d47b1be9..2a07cc3d 100644 --- a/sshsha.c +++ b/sshsha.c @@ -7,8 +7,6 @@ #include "ssh.h" -typedef unsigned int uint32; - /* ---------------------------------------------------------------------- * Core SHA algorithm: processes 16-word blocks into a message digest. */ @@ -201,6 +199,14 @@ static void sha1_sckey(unsigned char *key) { sha1_key(&sha1_sc_mac_s1, &sha1_sc_mac_s2, key, 20); } +static void sha1_cskey_buggy(unsigned char *key) { + sha1_key(&sha1_cs_mac_s1, &sha1_cs_mac_s2, key, 16); +} + +static void sha1_sckey_buggy(unsigned char *key) { + sha1_key(&sha1_sc_mac_s1, &sha1_sc_mac_s2, key, 16); +} + static void sha1_do_hmac(SHA_State *s1, SHA_State *s2, unsigned char *blk, int len, unsigned long seq, unsigned char *hmac) { @@ -231,10 +237,18 @@ static int sha1_verify(unsigned char *blk, int len, unsigned long seq) { return !memcmp(correct, blk+len, 20); } -struct ssh_mac ssh_sha1 = { +const struct ssh_mac ssh_sha1 = { sha1_cskey, sha1_sckey, sha1_generate, sha1_verify, "hmac-sha1", 20 }; + +const struct ssh_mac ssh_sha1_buggy = { + sha1_cskey_buggy, sha1_sckey_buggy, + sha1_generate, + sha1_verify, + "hmac-sha1", + 20 +};