X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/88c152099b9012a92e6ff4d8157933b55401cdf3..d2a0e0be6953a1ae78e400669090dc2bde01c58e:/sshdes.c?ds=inline diff --git a/sshdes.c b/sshdes.c index 67d91c7f..0b47aab6 100644 --- a/sshdes.c +++ b/sshdes.c @@ -778,6 +778,18 @@ void des3_decrypt_pubkey(unsigned char *key, des_3cbc_decrypt(blk, blk, len, ourkeys); } +void des3_encrypt_pubkey(unsigned char *key, + unsigned char *blk, int len) { + DESContext ourkeys[3]; + des_key_setup(GET_32BIT_MSB_FIRST(key), + GET_32BIT_MSB_FIRST(key+4), &ourkeys[0]); + des_key_setup(GET_32BIT_MSB_FIRST(key+8), + GET_32BIT_MSB_FIRST(key+12), &ourkeys[1]); + des_key_setup(GET_32BIT_MSB_FIRST(key), + GET_32BIT_MSB_FIRST(key+4), &ourkeys[2]); + des_3cbc_encrypt(blk, blk, len, ourkeys); +} + struct ssh_cipher ssh_3des_ssh2 = { NULL, des3_csiv, des3_cskey, @@ -785,7 +797,7 @@ struct ssh_cipher ssh_3des_ssh2 = { des3_ssh2_encrypt_blk, des3_ssh2_decrypt_blk, "3des-cbc", - 8 + 8, 168 }; struct ssh_cipher ssh_3des = { @@ -794,7 +806,7 @@ struct ssh_cipher ssh_3des = { des3_encrypt_blk, des3_decrypt_blk, "3des-cbc", - 8 + 8, 168 }; static void des_sesskey(unsigned char *key) { @@ -817,5 +829,5 @@ struct ssh_cipher ssh_des = { des_encrypt_blk, des_decrypt_blk, "des-cbc", /* should never be used - not a valid cipher in ssh2 */ - 8 + 8, 56 };