On 9/3/16 8:36 AM, Michael Paquier wrote: > > Attached is a new series:
* [PATCH 1/8] Refactor SHA functions and move them to src/common/ I'd like to see more code comments in sha.c (though I realize this was copied directly from pgcrypto.) I tested by building with and without --with-openssl and running make check for the project as a whole and the pgcrypto extension. I notice that the copyright from pgcrypto/sha1.c was carried over but not the copyright from pgcrypto/sha2.c. I'm no expert on how this works, but I believe the copyright from sha2.c must be copied over. Also, are there any plans to expose these functions directly to the user without loading pgcrypto? Now that the functionality is in core it seems that would be useful. In addition, it would make this patch stand on its own rather than just being a building block * [PATCH 2/8] Move encoding routines to src/common/ I wonder if it is confusing to have two of encode.h/encode.c. Perhaps they should be renamed to make them distinct? * [PATCH 3/8] Switch password_encryption to a enum Does not apply on HEAD (98c2d3332): error: patch failed: src/backend/commands/user.c:139 error: src/backend/commands/user.c: patch does not apply error: patch failed: src/include/commands/user.h:15 error: src/include/commands/user.h: patch does not apply For here on I used 39b691f251 for review and testing. I seems you are keeping on/off for backwards compatibility, shouldn't the default now be "md5"? -#password_encryption = on +#password_encryption = on # on, off, md5 or plain * [PATCH 4/8] Refactor decision-making of password encryption into a single routine +++ b/src/backend/commands/user.c + new_record[Anum_pg_authid_rolpassword - 1] = + CStringGetTextDatum(encrypted_passwd); pfree(encrypted_passwd) here or let it get freed with the context? * [PATCH 5/8] Create generic routine to fetch password and valid until values for a role Couldn't md5_crypt_verify() be made more general and take the hash type? For instance, password_crypt_verify() with the last param as the new password type enum. * [PATCH 6/8] Support for SCRAM-SHA-256 authentication +++ b/contrib/passwordcheck/passwordcheck.c + case PASSWORD_TYPE_SCRAM: + /* unfortunately not much can be done here */ + break; Why can't we at least do the same check as md5 to make sure the username was not used as the password? +++ b/src/backend/libpq/auth.c + * without relying on the length word, but we hardly care about protocol + * version or older anymore.) Do you mean protocol version 2 or older? +++ b/src/backend/libpq/crypt.c return STATUS_ERROR; /* empty password */ + Looks like a stray LF. +++ b/src/backend/parser/gram.y + SAVEPOINT SCHEMA SCRAM SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE Doesn't this belong in patch 7? Even in patch 7 it doesn't appear that SCRAM is a keyword since the protocol specified after USING is quoted. I tested this patch using both md5 and scram and was able to get both of them to working separately. However, it doesn't look like they can be used in conjunction since the pg_hba.conf entry must specify either m5 or scram (though the database can easily contain a mixture). This would probably make a migration very unpleasant. Is there any chance of a mixed mode that will allow new passwords to be set as scram while still honoring the old md5 passwords? Or does that cause too many complications with the protocol? * [PATCH 7/8] Add clause PASSWORD val USING protocol to CREATE/ALTER ROLE +++ b/doc/src/sgml/ref/create_role.sgml + Sets the role's password using the wanted protocol. How about "Sets the role's password using the requested procotol." + an unencrypted password. If the presented password string is already + in MD5-encrypted or SCRAM-encrypted format, then it is stored encrypted + as-is. How about, "If the password string is..." * [PATCH 8/8] Add regression tests for passwords OK. On the whole I find this patch set easier to digest than what was submitted for 9.6. It is more targeted but still provides very valuable functionality. I'm a bit concerned that a mixture of md5/scram could cause confusion and think this may warrant discussion somewhere in the documentation since the idea is for users to migrate from md5 to scram. -- -David da...@pgmasters.net -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers