From f2264981caf8fd54b46a7af66b9ee3a6f35a1713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Fri, 16 May 1997 20:40:21 +0200 Subject: [PATCH] *** empty log message *** Rev: lib/modules/Crypto/des3.pike:1.3 --- lib/modules/Crypto/des3.pike | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/modules/Crypto/des3.pike b/lib/modules/Crypto/des3.pike index a62481ea10..e1d72af227 100644 --- a/lib/modules/Crypto/des3.pike +++ b/lib/modules/Crypto/des3.pike @@ -16,21 +16,31 @@ int query_key_size() { return 16; } int query_block_size() { return 8; } +private array(string) split_key(string key) +{ + string k1 = key[..7]; + string k2 = key[8..15]; + string k3 = (strlen(key) > 16) ? key[16..] : k1; + return ({ k1, k2, k3 }); +} + /* An exception will be raised if key is weak */ object set_encrypt_key(string key) { - pipe :: set_encrypt_key(key[..7], key[8..], key[..7]); + array(string) keys = split_key(key); + pipe :: set_encrypt_key( @ keys); /* Switch mode of middle crypto */ - d[1]->set_decrypt_key(key[8..]); + d[1]->set_decrypt_key(keys[1]); return this_object(); } /* An exception will be raised if key is weak */ object set_decrypt_key(string key) { - pipe :: set_decrypt_key(key[..7], key[8..], key[..7]); + array(string) keys = split_key(key); + pipe :: set_decrypt_key( @ keys); /* Switch mode of middle crypto */ - d[1]->set_encrypt_key(key[8..]); + d[1]->set_encrypt_key(keys[1]); return this_object(); } -- GitLab