mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 19:42:00 +00:00
58 lines
2.9 KiB
SQL
58 lines
2.9 KiB
SQL
-- Tags: no-fasttest
|
|
-- Tag no-fasttest: Depends on OpenSSL
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Validate that encrypt/decrypt (and mysql versions) work against Nullable(String).
|
|
-- null gets encrypted/decrypted as null, non-null encrypted/decrypted as usual.
|
|
-------------------------------------------------------------------------------
|
|
-- using nullIf since that is the easiest way to produce `Nullable(String)` with a `null` value
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- MySQL compatibility
|
|
SELECT 'aes_encrypt_mysql';
|
|
|
|
SELECT aes_encrypt_mysql('aes-256-ecb', CAST(null as Nullable(String)), 'test_key________________________');
|
|
|
|
WITH 'aes-256-ecb' as mode, 'Hello World!' as plaintext, 'test_key________________________' as key
|
|
SELECT hex(aes_encrypt_mysql(mode, toNullable(plaintext), key));
|
|
|
|
SELECT 'aes_decrypt_mysql';
|
|
|
|
SELECT aes_decrypt_mysql('aes-256-ecb', CAST(null as Nullable(String)), 'test_key________________________');
|
|
|
|
WITH 'aes-256-ecb' as mode, unhex('D1B43643E1D0E9390E39BA4EAE150851') as ciphertext, 'test_key________________________' as key
|
|
SELECT hex(aes_decrypt_mysql(mode, toNullable(ciphertext), key));
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- encrypt both non-null and null values of Nullable(String)
|
|
SELECT 'encrypt';
|
|
|
|
WITH 'aes-256-ecb' as mode, 'test_key________________________' as key
|
|
SELECT mode, encrypt(mode, CAST(null as Nullable(String)), key);
|
|
|
|
WITH 'aes-256-gcm' as mode, 'test_key________________________' as key, 'test_iv_____' as iv
|
|
SELECT mode, encrypt(mode, CAST(null as Nullable(String)), key, iv);
|
|
|
|
WITH 'aes-256-ecb' as mode, 'test_key________________________' as key
|
|
SELECT mode, hex(encrypt(mode, toNullable('Hello World!'), key));
|
|
|
|
WITH 'aes-256-gcm' as mode, 'test_key________________________' as key, 'test_iv_____' as iv
|
|
SELECT mode, hex(encrypt(mode, toNullable('Hello World!'), key, iv));
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- decrypt both non-null and null values of Nullable(String)
|
|
|
|
SELECT 'decrypt';
|
|
|
|
WITH 'aes-256-ecb' as mode, 'test_key________________________' as key
|
|
SELECT mode, decrypt(mode, CAST(null as Nullable(String)), key);
|
|
|
|
WITH 'aes-256-gcm' as mode, 'test_key________________________' as key, 'test_iv_____' as iv
|
|
SELECT mode, decrypt(mode, CAST(null as Nullable(String)), key, iv);
|
|
|
|
WITH 'aes-256-ecb' as mode, unhex('D1B43643E1D0E9390E39BA4EAE150851') as ciphertext, 'test_key________________________' as key
|
|
SELECT mode, decrypt(mode, toNullable(ciphertext), key);
|
|
|
|
WITH 'aes-256-gcm' as mode, unhex('219E6478A1A3BB5B686DA4BAD70323F192EFEDCCBBD6F49E78A7E2F6') as ciphertext, 'test_key________________________' as key, 'test_iv_____' as iv
|
|
SELECT mode, decrypt(mode, toNullable(ciphertext), key, iv);
|