Single-DES encryption, patch courtesy of Murphy Lam
[u/mdw/putty] / sshdes.c
index 3be5274..aa6b94f 100644 (file)
--- a/sshdes.c
+++ b/sshdes.c
@@ -673,6 +673,27 @@ struct ssh_cipher ssh_3des = {
     des3_decrypt_blk
 };
 
+static void des_sesskey(unsigned char *key) {
+    des_set_key(key, &ekey1);
+    memset(eiv1, 0, sizeof(eiv1));
+    des_set_key(key, &dkey1);
+    memset(div1, 0, sizeof(div1));
+}
+
+static void des_encrypt_blk(unsigned char *blk, int len) {
+    des_cbc_encrypt(&ekey1, eiv1, blk, blk, len);
+}
+
+static void des_decrypt_blk(unsigned char *blk, int len) {
+    des_cbc_decrypt(&dkey1, div1, blk, blk, len);
+}
+
+struct ssh_cipher ssh_des = {
+    des_sesskey,
+    des_encrypt_blk,
+    des_decrypt_blk
+};
+
 #ifdef DES_TEST
 
 void des_encrypt_buf(DESContext *ks, unsigned char *out,