diff --git a/lib/modules/Crypto/des3.pike b/lib/modules/Crypto/des3.pike index 7fc181df208b0ab75b23fe73933f10a8889c4896..a62481ea10ae9281f67dc8bc3b49c80b20e640b3 100644 --- a/lib/modules/Crypto/des3.pike +++ b/lib/modules/Crypto/des3.pike @@ -16,21 +16,21 @@ int query_key_size() { return 16; } int query_block_size() { return 8; } +/* An exception will be raised if key is weak */ object set_encrypt_key(string key) { - /* An exception will be raised if key is weak */ - d[0]->set_encrypt_key(key[..7]); + pipe :: set_encrypt_key(key[..7], key[8..], key[..7]); + /* Switch mode of middle crypto */ d[1]->set_decrypt_key(key[8..]); - d[2]->set_encrypt_key(key[..7]); return this_object(); } +/* An exception will be raised if key is weak */ object set_decrypt_key(string key) { - /* An exception will be raised if key is weak */ - d[0]->set_decrypt_key(key[..7]); + pipe :: set_decrypt_key(key[..7], key[8..], key[..7]); + /* Switch mode of middle crypto */ d[1]->set_encrypt_key(key[8..]); - d[2]->set_decrypt_key(key[..7]); return this_object(); }