mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-05 21:42:47 -05:00
Add tests of auxiliary encryption functions.
All the things like des_encrypt_xdmauth and aes256_encrypt_pubkey are at risk of changing their behaviour if I rewrite the underlying code, so even if I don't have any externally verified test cases, I should still have _something_ to keep me confident that they work the same way today that they worked yesterday.
This commit is contained in:
82
testcrypt.c
82
testcrypt.c
@ -827,6 +827,88 @@ strbuf *des_decrypt_xdmauth_wrapper(ptrlen key, ptrlen data)
|
||||
}
|
||||
#define des_decrypt_xdmauth des_decrypt_xdmauth_wrapper
|
||||
|
||||
strbuf *des3_encrypt_pubkey_wrapper(ptrlen key, ptrlen data)
|
||||
{
|
||||
if (key.len != 16)
|
||||
fatal_error("des3_encrypt_pubkey: key must be 16 bytes long");
|
||||
if (data.len % 8 != 0)
|
||||
fatal_error("des3_encrypt_pubkey: data must be a multiple of 8 bytes");
|
||||
strbuf *sb = strbuf_new();
|
||||
put_datapl(sb, data);
|
||||
des3_encrypt_pubkey(key.ptr, sb->u, sb->len);
|
||||
return sb;
|
||||
}
|
||||
#define des3_encrypt_pubkey des3_encrypt_pubkey_wrapper
|
||||
|
||||
strbuf *des3_decrypt_pubkey_wrapper(ptrlen key, ptrlen data)
|
||||
{
|
||||
if (key.len != 16)
|
||||
fatal_error("des3_decrypt_pubkey: key must be 16 bytes long");
|
||||
if (data.len % 8 != 0)
|
||||
fatal_error("des3_decrypt_pubkey: data must be a multiple of 8 bytes");
|
||||
strbuf *sb = strbuf_new();
|
||||
put_datapl(sb, data);
|
||||
des3_decrypt_pubkey(key.ptr, sb->u, sb->len);
|
||||
return sb;
|
||||
}
|
||||
#define des3_decrypt_pubkey des3_decrypt_pubkey_wrapper
|
||||
|
||||
strbuf *des3_encrypt_pubkey_ossh_wrapper(ptrlen key, ptrlen iv, ptrlen data)
|
||||
{
|
||||
if (key.len != 24)
|
||||
fatal_error("des3_encrypt_pubkey_ossh: key must be 24 bytes long");
|
||||
if (iv.len != 8)
|
||||
fatal_error("des3_encrypt_pubkey_ossh: iv must be 8 bytes long");
|
||||
if (data.len % 8 != 0)
|
||||
fatal_error("des3_encrypt_pubkey_ossh: data must be a multiple of 8 bytes");
|
||||
strbuf *sb = strbuf_new();
|
||||
put_datapl(sb, data);
|
||||
des3_encrypt_pubkey_ossh(key.ptr, iv.ptr, sb->u, sb->len);
|
||||
return sb;
|
||||
}
|
||||
#define des3_encrypt_pubkey_ossh des3_encrypt_pubkey_ossh_wrapper
|
||||
|
||||
strbuf *des3_decrypt_pubkey_ossh_wrapper(ptrlen key, ptrlen iv, ptrlen data)
|
||||
{
|
||||
if (key.len != 24)
|
||||
fatal_error("des3_decrypt_pubkey_ossh: key must be 24 bytes long");
|
||||
if (iv.len != 8)
|
||||
fatal_error("des3_encrypt_pubkey_ossh: iv must be 8 bytes long");
|
||||
if (data.len % 8 != 0)
|
||||
fatal_error("des3_decrypt_pubkey_ossh: data must be a multiple of 8 bytes");
|
||||
strbuf *sb = strbuf_new();
|
||||
put_datapl(sb, data);
|
||||
des3_decrypt_pubkey_ossh(key.ptr, iv.ptr, sb->u, sb->len);
|
||||
return sb;
|
||||
}
|
||||
#define des3_decrypt_pubkey_ossh des3_decrypt_pubkey_ossh_wrapper
|
||||
|
||||
strbuf *aes256_encrypt_pubkey_wrapper(ptrlen key, ptrlen data)
|
||||
{
|
||||
if (key.len != 32)
|
||||
fatal_error("aes256_encrypt_pubkey: key must be 32 bytes long");
|
||||
if (data.len % 16 != 0)
|
||||
fatal_error("aes256_encrypt_pubkey: data must be a multiple of 16 bytes");
|
||||
strbuf *sb = strbuf_new();
|
||||
put_datapl(sb, data);
|
||||
aes256_encrypt_pubkey(key.ptr, sb->u, sb->len);
|
||||
return sb;
|
||||
}
|
||||
#define aes256_encrypt_pubkey aes256_encrypt_pubkey_wrapper
|
||||
|
||||
strbuf *aes256_decrypt_pubkey_wrapper(ptrlen key, ptrlen data)
|
||||
{
|
||||
if (key.len != 32)
|
||||
fatal_error("aes256_decrypt_pubkey: key must be 32 bytes long");
|
||||
if (data.len % 16 != 0)
|
||||
fatal_error("aes256_decrypt_pubkey: data must be a multiple of 16 bytes");
|
||||
strbuf *sb = strbuf_new();
|
||||
put_datapl(sb, data);
|
||||
aes256_decrypt_pubkey(key.ptr, sb->u, sb->len);
|
||||
return sb;
|
||||
}
|
||||
#define aes256_decrypt_pubkey aes256_decrypt_pubkey_wrapper
|
||||
|
||||
bool crcda_detect(ptrlen packet, ptrlen iv)
|
||||
{
|
||||
if (iv.len != 0 && iv.len != 8)
|
||||
|
Reference in New Issue
Block a user