Re: scram-sha-256 broken with FIPS and OpenSSL 1.0.2
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Daniel Gustafsson <daniel@yesql.se>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Tom Lane <tgl@sss.pgh.pa.us>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-12-01T05:38:26Z
Lists: pgsql-hackers
Attachments
- v6-0001-Rework-SHA2-and-crypto-hash-APIs.patch (text/x-diff) patch v6-0001
On Mon, Nov 30, 2020 at 02:29:29PM +0100, Daniel Gustafsson wrote: > Yeah, that's along the lines of what I was thinking of. Hmm. I have looked at that, and thought first about having directly a reference to the resowner directly in pg_cryptohash_ctx, but that's not a good plan for two reasons: - common/cryptohash.h would get knowledge of that, requiring bundling in a bunch of dependencies. - There is no need for that in the non-OpenSSL case. So, instead, I have been thinking about using an extra context layer only for cryptohash_openssl.c with a structure saved as pg_cryptohash_context->data that stores the information about EVP_MD_CTX* and the resource owner. Then, I was thinking about storing directly pg_cryptohash_ctx in the resowner EVP array and just call pg_cryptohash_free() from resowner.c without the need of an extra routine. I have not tested this idea but that should work. What's your take? In parallel, I have spent more time today polishing and reviewing 0001 (indented, adjusted a couple of areas and added also brackets and extra comments as you suggested) and tested it on Linux and Windows, with and without OpenSSL down to 1.0.1, the oldest version supported on HEAD. So I'd like to apply the attached first and sort out the resowner stuff in a next step. -- Michael
Commits
-
Change SHA2 implementation based on OpenSSL to use EVP digest routines
- 4f48a6fbe2b2 14.0 landed
- e21cbb4b893b 14.0 landed
-
Move SHA2 routines to a new generic API layer for crypto hashes
- 87ae9691d253 14.0 landed
-
Use OpenSSL EVP API for symmetric encryption in pgcrypto.
- 5ff4a67f63fd 10.0 cited