--
-- 3DES cipher
--
-- ensure consistent test output regardless of the default bytea format
SET bytea_output TO escape;

-- test vector from somewhere
SELECT encode(encrypt(
decode('80 00 00 00 00 00 00 00', 'hex'),
decode('01 01 01 01 01 01 01 01
	01 01 01 01 01 01 01 01
	01 01 01 01 01 01 01 01', 'hex'),
'3des-ecb/pad:none'), 'hex');
-- val 95 F8 A5 E5 DD 31 D9 00

select encode(	encrypt('', 'foo', '3des'), 'hex');
-- 10 bytes key
select encode(	encrypt('foo', '0123456789', '3des'), 'hex');
-- 22 bytes key
select encode(	encrypt('foo', '0123456789012345678901', '3des'), 'hex');

-- decrypt
select decrypt(encrypt('foo', '0123456', '3des'), '0123456', '3des');

-- iv
select encode(encrypt_iv('foo', '0123456', 'abcd', '3des'), 'hex');
select decrypt_iv(decode('50735067b073bb93', 'hex'), '0123456', 'abcd', '3des');

-- long message
select encode(encrypt('Lets try a longer message.', '0123456789012345678901', '3des'), 'hex');
select decrypt(encrypt('Lets try a longer message.', '0123456789012345678901', '3des'), '0123456789012345678901', '3des');

