`baltic-default-translation': change default Baltic (CP1257) encoding from
[u/mdw/putty] / sshdes.c
index ce4bdfe..6ea32a1 100644 (file)
--- a/sshdes.c
+++ b/sshdes.c
@@ -746,24 +746,24 @@ static void des_cbc3_decrypt(unsigned char *dest, const unsigned char *src,
 
 static void *des3_make_context(void)
 {
-    return smalloc(3*sizeof(DESContext));
+    return snewn(3, DESContext);
 }
 
 static void *des3_ssh1_make_context(void)
 {
     /* Need 3 keys for each direction, in SSH1 */
-    return smalloc(6*sizeof(DESContext));
+    return snewn(6, DESContext);
 }
 
 static void *des_make_context(void)
 {
-    return smalloc(sizeof(DESContext));
+    return snew(DESContext);
 }
 
 static void *des_ssh1_make_context(void)
 {
     /* Need one key for each direction, in SSH1 */
-    return smalloc(2*sizeof(DESContext));
+    return snewn(2, DESContext);
 }
 
 static void des3_free_context(void *handle)   /* used for both 3DES and DES */
@@ -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,