Re: SCRAM authentication, take three

Michael Paquier <michael.paquier@gmail.com>

From: Michael Paquier <michael.paquier@gmail.com>
To: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
Cc: a.alekseev@postgrespro.ru, Heikki Linnakangas <hlinnaka@iki.fi>, Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2017-03-06T02:50:42Z
Lists: pgsql-hackers
On Fri, Mar 3, 2017 at 2:43 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> I am attaching 0009 and 0010 that address those problems (pushed on
> github as well) that can be applied on top of the latest set.

While doing more tests with my module able to do SASLprep, I have
noticed that calculations related to Hangul characters were incorrect:
 /* Constants for calculations wih Hangul characters */
-#define SBASE      0xAC00
-#define LBASE      0x1100
-#define VBASE      0x1161
-#define TBASE      0x11A7
+#define SBASE      0xEAB080    /* U+AC00 */
+#define LBASE      0xE18480    /* U+1100 */
+#define VBASE      0xE185A1    /* U+1161 */
+#define TBASE      0xE186A7    /* U+11A7 */

Once the following is applied things get better:
-- Test for U+FB01, Latin Small Ligature Fi
=# select array_to_utf8(pg_sasl_prepare(utf8_to_array('fi')));
 array_to_utf8
---------------
 fi
(1 row)
-- Test for U+1E9B, Latin Small Letter Long S with Dot Above
-- This one was failing previously.
=# select array_to_utf8(pg_sasl_prepare(utf8_to_array('ẛ')));
 array_to_utf8
---------------
 ṡ
(1 row)
-- Test for U+2075, superscript 5
=# select array_to_utf8(pg_sasl_prepare(utf8_to_array('⁵')));
 array_to_utf8
---------------
 5
(1 row)
-- 
Michael


Commits

  1. Rename "scram" to "scram-sha-256" in pg_hba.conf and password_encryption.

  2. Support SCRAM-SHA-256 authentication (RFC 5802 and 7677).