forked from yugabyte/yugabyte-db
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[BACKPORT 2.20][yugabyte#19734] ysql: Import 'Add alternative output …
…for OpenSSL 3 without legacy loaded' Summary: Original commit: 57a2ef8 / D29737 Import upstream PG commit 'Add alternative output for OpenSSL 3 without legacy loaded'. This is a prerequisite to upgrading OpenSSL to 3.0+. Original Commit: 19e91a40bf26530788d1dae39fa3e7e5a52ca7b2 Original Description: ``` OpenSSL 3 introduced the concept of providers to support modularization, and moved the outdated ciphers to the new legacy provider. In case it's not loaded in the users openssl.cnf file there will be a lot of regress test failures, so add alternative outputs covering those. Also document the need to load the legacy provider in order to use older ciphers with OpenSSL-enabled pgcrypto. This will be backpatched to all supported version once there is sufficient testing in the buildfarm of OpenSSL 3. Reviewed-by: Michael Paquier Discussion: https://postgr.es/m/FEF81714-D479-4512-839B-C769D2605F8A@yesql.se Backpatch-through: 9.6 ``` Upstream Commit Link: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=72bbff4cd6eaf55239ccef79cec61766b5f8f1d2 Backport-through: 2.14 Jira: DB-8564 Test Plan: Jenkins Reviewers: rthallam, jason Reviewed By: jason Subscribers: smishra, jason, yql, rthallam Tags: #jenkins-ready Differential Revision: https://phorge.dev.yugabyte.com/D29869
- Loading branch information
Showing
11 changed files
with
2,501 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
-- | ||
-- Blowfish cipher | ||
-- | ||
-- ensure consistent test output regardless of the default bytea format | ||
SET bytea_output TO escape; | ||
-- some standard Blowfish testvalues | ||
SELECT encode(encrypt( | ||
decode('0000000000000000', 'hex'), | ||
decode('0000000000000000', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
SELECT encode(encrypt( | ||
decode('ffffffffffffffff', 'hex'), | ||
decode('ffffffffffffffff', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
SELECT encode(encrypt( | ||
decode('1000000000000001', 'hex'), | ||
decode('3000000000000000', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
SELECT encode(encrypt( | ||
decode('1111111111111111', 'hex'), | ||
decode('1111111111111111', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
SELECT encode(encrypt( | ||
decode('0123456789abcdef', 'hex'), | ||
decode('fedcba9876543210', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
SELECT encode(encrypt( | ||
decode('01a1d6d039776742', 'hex'), | ||
decode('fedcba9876543210', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
SELECT encode(encrypt( | ||
decode('ffffffffffffffff', 'hex'), | ||
decode('0000000000000000', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- setkey | ||
SELECT encode(encrypt( | ||
decode('fedcba9876543210', 'hex'), | ||
decode('f0e1d2c3b4a5968778695a4b3c2d1e0f', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- with padding | ||
SELECT encode(encrypt( | ||
decode('01234567890123456789', 'hex'), | ||
decode('33443344334433443344334433443344', 'hex'), | ||
'bf-ecb'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- cbc | ||
-- 28 bytes key | ||
SELECT encode(encrypt( | ||
decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5', 'hex'), | ||
decode('37363534333231204e6f77206973207468652074696d6520666f7220', 'hex'), | ||
'bf-cbc'), 'hex'); | ||
ERROR: encrypt error: Key was too big | ||
-- 29 bytes key | ||
SELECT encode(encrypt( | ||
decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc', 'hex'), | ||
decode('37363534333231204e6f77206973207468652074696d6520666f722000', 'hex'), | ||
'bf-cbc'), 'hex'); | ||
ERROR: encrypt error: Key was too big | ||
-- blowfish-448 | ||
SELECT encode(encrypt( | ||
decode('fedcba9876543210', 'hex'), | ||
decode('f0e1d2c3b4a5968778695a4b3c2d1e0f001122334455667704689104c2fd3b2f584023641aba61761f1f1f1f0e0e0e0effffffffffffffff', 'hex'), | ||
'bf-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Key was too big | ||
-- result: c04504012e4e1f53 | ||
-- empty data | ||
select encode(encrypt('', 'foo', 'bf'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- 10 bytes key | ||
select encode(encrypt('foo', '0123456789', 'bf'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- 22 bytes key | ||
select encode(encrypt('foo', '0123456789012345678901', 'bf'), 'hex'); | ||
ERROR: encrypt error: Key was too big | ||
-- decrypt | ||
select decrypt(encrypt('foo', '0123456', 'bf'), '0123456', 'bf'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- iv | ||
select encode(encrypt_iv('foo', '0123456', 'abcd', 'bf'), 'hex'); | ||
ERROR: encrypt_iv error: Cipher cannot be initialized ? | ||
select decrypt_iv(decode('95c7e89322525d59', 'hex'), '0123456', 'abcd', 'bf'); | ||
ERROR: decrypt_iv error: Cipher cannot be initialized ? | ||
-- long message | ||
select encode(encrypt('Lets try a longer message.', '0123456789', 'bf'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
select decrypt(encrypt('Lets try a longer message.', '0123456789', 'bf'), '0123456789', 'bf'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
-- | ||
-- Cast5 cipher | ||
-- | ||
-- ensure consistent test output regardless of the default bytea format | ||
SET bytea_output TO escape; | ||
-- test vectors from RFC2144 | ||
-- 128 bit key | ||
SELECT encode(encrypt( | ||
decode('01 23 45 67 89 AB CD EF', 'hex'), | ||
decode('01 23 45 67 12 34 56 78 23 45 67 89 34 56 78 9A', 'hex'), | ||
'cast5-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- result: 23 8B 4F E5 84 7E 44 B2 | ||
-- 80 bit key | ||
SELECT encode(encrypt( | ||
decode('01 23 45 67 89 AB CD EF', 'hex'), | ||
decode('01 23 45 67 12 34 56 78 23 45', 'hex'), | ||
'cast5-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- result: EB 6A 71 1A 2C 02 27 1B | ||
-- 40 bit key | ||
SELECT encode(encrypt( | ||
decode('01 23 45 67 89 AB CD EF', 'hex'), | ||
decode('01 23 45 67 12', 'hex'), | ||
'cast5-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- result: 7A C8 16 D1 6E 9B 30 2E | ||
-- cbc | ||
-- empty data | ||
select encode( encrypt('', 'foo', 'cast5'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- 10 bytes key | ||
select encode( encrypt('foo', '0123456789', 'cast5'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- decrypt | ||
select decrypt(encrypt('foo', '0123456', 'cast5'), '0123456', 'cast5'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- iv | ||
select encode(encrypt_iv('foo', '0123456', 'abcd', 'cast5'), 'hex'); | ||
ERROR: encrypt_iv error: Cipher cannot be initialized ? | ||
select decrypt_iv(decode('384a970695ce016a', 'hex'), | ||
'0123456', 'abcd', 'cast5'); | ||
ERROR: decrypt_iv error: Cipher cannot be initialized ? | ||
-- long message | ||
select encode(encrypt('Lets try a longer message.', '0123456789', 'cast5'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
select decrypt(encrypt('Lets try a longer message.', '0123456789', 'cast5'), '0123456789', 'cast5'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
-- | ||
-- DES cipher | ||
-- | ||
-- ensure consistent test output regardless of the default bytea format | ||
SET bytea_output TO escape; | ||
-- no official test vectors atm | ||
-- from blowfish.sql | ||
SELECT encode(encrypt( | ||
decode('0123456789abcdef', 'hex'), | ||
decode('fedcba9876543210', 'hex'), | ||
'des-ecb/pad:none'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- empty data | ||
select encode( encrypt('', 'foo', 'des'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- 8 bytes key | ||
select encode( encrypt('foo', '01234589', 'des'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- decrypt | ||
select decrypt(encrypt('foo', '0123456', 'des'), '0123456', 'des'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
-- iv | ||
select encode(encrypt_iv('foo', '0123456', 'abcd', 'des'), 'hex'); | ||
ERROR: encrypt_iv error: Cipher cannot be initialized ? | ||
select decrypt_iv(decode('50735067b073bb93', 'hex'), '0123456', 'abcd', 'des'); | ||
ERROR: decrypt_iv error: Cipher cannot be initialized ? | ||
-- long message | ||
select encode(encrypt('Lets try a longer message.', '01234567', 'des'), 'hex'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? | ||
select decrypt(encrypt('Lets try a longer message.', '01234567', 'des'), '01234567', 'des'); | ||
ERROR: encrypt error: Cipher cannot be initialized ? |
Oops, something went wrong.