Consistently use a single notation to refer to SSH protocol versions, as
[u/mdw/putty] / sshdes.c
index 6ea32a1..65231c8 100644 (file)
--- a/sshdes.c
+++ b/sshdes.c
@@ -751,7 +751,7 @@ static void *des3_make_context(void)
 
 static void *des3_ssh1_make_context(void)
 {
-    /* Need 3 keys for each direction, in SSH1 */
+    /* Need 3 keys for each direction, in SSH-1 */
     return snewn(6, DESContext);
 }
 
@@ -762,7 +762,7 @@ static void *des_make_context(void)
 
 static void *des_ssh1_make_context(void)
 {
-    /* Need one key for each direction, in SSH1 */
+    /* Need one key for each direction, in SSH-1 */
     return snewn(2, DESContext);
 }
 
@@ -942,9 +942,12 @@ static const struct ssh2_cipher ssh_3des_ssh2 = {
 };
 
 /*
- * Single DES in ssh2. It isn't clear that "des-cbc" is an official
- * cipher name, but ssh.com support it and apparently aren't the
- * only people to do so, so we sigh and implement it anyway.
+ * Single DES in SSH-2. "des-cbc" is marked as HISTORIC in
+ * draft-ietf-secsh-assignednumbers-04.txt, referring to
+ * FIPS-46-3.  ("Single DES (i.e., DES) will be permitted 
+ * for legacy systems only.") , but ssh.com support it and 
+ * apparently aren't the only people to do so, so we sigh 
+ * and implement it anyway.
  */
 static const struct ssh2_cipher ssh_des_ssh2 = {
     des_make_context, des3_free_context, des3_iv, des_key,
@@ -953,6 +956,13 @@ static const struct ssh2_cipher ssh_des_ssh2 = {
     8, 56, "single-DES"
 };
 
+static const struct ssh2_cipher ssh_des_sshcom_ssh2 = {
+    des_make_context, des3_free_context, des3_iv, des_key,
+    des_ssh2_encrypt_blk, des_ssh2_decrypt_blk,
+    "des-cbc@ssh.com",
+    8, 56, "single-DES"
+};
+
 static const struct ssh2_cipher *const des3_list[] = {
     &ssh_3des_ssh2
 };
@@ -963,11 +973,12 @@ const struct ssh2_ciphers ssh2_3des = {
 };
 
 static const struct ssh2_cipher *const des_list[] = {
-    &ssh_des_ssh2
+    &ssh_des_ssh2,
+    &ssh_des_sshcom_ssh2
 };
 
 const struct ssh2_ciphers ssh2_des = {
-    sizeof(des3_list) / sizeof(*des_list),
+    sizeof(des_list) / sizeof(*des_list),
     des_list
 };