X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/b89053c0750e42d88ff92e3efc3d546f18a6d435..b3ebaa287b8a57f3d35675889adc86f6384eb458:/sshdes.c diff --git a/sshdes.c b/sshdes.c index ce4bdfe3..4b22c71b 100644 --- a/sshdes.c +++ b/sshdes.c @@ -897,10 +897,9 @@ void des3_encrypt_pubkey_ossh(unsigned char *key, unsigned char *iv, memset(ourkeys, 0, sizeof(ourkeys)); } -void des_encrypt_xdmauth(unsigned char *keydata, unsigned char *blk, int len) +static void des_keysetup_xdmauth(unsigned char *keydata, DESContext *dc) { unsigned char key[8]; - DESContext dc; int i, nbits, j; unsigned int bits; @@ -918,11 +917,23 @@ void des_encrypt_xdmauth(unsigned char *keydata, unsigned char *blk, int len) nbits -= 7; } - des_key_setup(GET_32BIT_MSB_FIRST(key), GET_32BIT_MSB_FIRST(key + 4), - &dc); + des_key_setup(GET_32BIT_MSB_FIRST(key), GET_32BIT_MSB_FIRST(key + 4), dc); +} + +void des_encrypt_xdmauth(unsigned char *keydata, unsigned char *blk, int len) +{ + DESContext dc; + des_keysetup_xdmauth(keydata, &dc); des_cbc_encrypt(blk, blk, 24, &dc); } +void des_decrypt_xdmauth(unsigned char *keydata, unsigned char *blk, int len) +{ + DESContext dc; + des_keysetup_xdmauth(keydata, &dc); + des_cbc_decrypt(blk, blk, 24, &dc); +} + static const struct ssh2_cipher ssh_3des_ssh2 = { des3_make_context, des3_free_context, des3_iv, des3_key, des3_ssh2_encrypt_blk, des3_ssh2_decrypt_blk,