Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u1kyJ-007ZW0-5n for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Apr 2025 11:48:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u1kyH-00FQoM-20 for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Apr 2025 11:48:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u1kyG-00FQnh-ND for pgsql-hackers@lists.postgresql.org; Mon, 07 Apr 2025 11:48:57 +0000 Received: from dd48506.kasserver.com ([85.13.164.188]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u1kyE-003Srm-0w for pgsql-hackers@postgresql.org; Mon, 07 Apr 2025 11:48:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oopsware.de; s=kas202503021101; t=1744026531; bh=7U3fvkbqWumG5wOLPkqOBP5QD/fV9BEMyR41VTLf8gE=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=9JKdpd8vcBLgV1+nBafZFJH/a6H96c9sGBpv7TFnHhTL1P1Pvx+Bo3ENGdXSV/Y0f BKBS6HxNuac5L7eSCE0vFJbtBXZyk7+Ohwlc8UrlHp0EnT1r5aDpypjm1AUmXKD9jk 8IsJ/op2lO/Cj0+Gd4tLt6qyZusn3ABUfK+c/a5ysuVkHMssdEodzhtuAavtbaHpor h0MfvoTBc0pgZfm3ZrCpZM6bsHakaWODo6fRxt0hRX4+hsOJ5+Kwbd3qBs5qA0QMrT T6AW7Nrjc186k87mX5DCMVG2ZjHfOZpRK6nkkAjJ/HufHxjMDbBSoTzOD5Aj2iRIRM YC6vINMt9ObXw== Received: from sethos.at.struktu.ro (sethos.at.struktu.ro [46.4.183.126]) by dd48506.kasserver.com (Postfix) with ESMTPSA id E6D64866587D; Mon, 7 Apr 2025 13:48:50 +0200 (CEST) Received: from chufu.bluecherstrasse.oopsware.lan (i5C75098A.versanet.de [92.117.9.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sethos.at.struktu.ro (Postfix) with ESMTPSA id 6D19541F892F; Mon, 7 Apr 2025 13:48:50 +0200 (CEST) Message-ID: <6fab35422df6b6b9727fdcc243c5fa1c667dd3b5.camel@oopsware.de> Subject: Re: Modern SHA2- based password hashes for pgcrypto From: Bernd Helmle To: Tom Lane , Alvaro Herrera , Andres Freund Cc: Japin Li , PostgreSQL Development Date: Mon, 07 Apr 2025 13:48:49 +0200 In-Reply-To: <2977905.1743968616@sss.pgh.pa.us> References: <202504051722.3jv3ashzaibd@alvherre.pgsql> <2977905.1743968616@sss.pgh.pa.us> Autocrypt: addr=mailings@oopsware.de; prefer-encrypt=mutual; keydata=mQGiBEIM4dYRBACEnxQZ/CfR1xbCJzGOIjvh3fZpLALMm+tt237QlZm9nlLaEwCn317sT 1khPAJwhyBHSHbNFbH+LOL6ezYrg4V2Q9KHyYJDStJtC8c+D7vHVB5Jfslynx89DnCH6jb3H0j+U0 iNYmRmT18PWTZhD5RuXT+Toyz/0hH4YnJzha4VUwCggikXRuhIQ0KIzrps7/PsvasTPjUD/1aoEHR wVyk2C2hXh6GWJYq+1l+sB2d0TOnFJf2xy3Xo03Hi+BEJJdYGqJKqzd0KfsFyJYhO2GIGScSEj1hs TqAiY8OZeRqRGHe69OQEguUSVXp/jPaqU8fel8dbDDMnXkgULq8oO4T9e4GJSFqIvrlx0sJqSMFdi ihV+xCzDS40BACBrTq9tyXmyxJWzQ1/0Hx9S4sU+yeR8ztZH9xgWi1wksfHpEgZBdAkQynlI80/bC tgxfVu+LKgxeqGfMSnT9t8agpr1IGcmSbDntbn/K+3EmCze0jq8EQrZHJWiwCqraM8mnmILSEl5zn aoVoBIF062b60zZicuNeYaVgEKSHfirQgQmVybmQgSGVsbWxlIDxiZXJuZEBvb3Bzd2FyZS5kZT6I XgQTEQIAHgUCQhyP2gIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzMm4AJ9mW1np2 RXi66WzEvcIanaJkDT+xgCfZmXG/Sziz5FchI3OjXfXDZfwnNm0J0Jlcm5kIEhlbG1sZSA8YmVybm QuaGVsbWxlQG9vcHN3YXJlLmRlPoheBBMRAgAeBQJCDOHWAhsDBgsJCAcDAgMVAgMDFgIBAh4BAhe AAAoJEFF1zY6F2UrMWZgAn3MVwDBzRS5dZu1yjx7WU3E3JSheAJ41CUYMIkX/oYfWssUVYnOuedgn 8LQlQmVybmQgSGVsbWxlIDxiaEBzY2huYWVwcGNoZW5qYWdkLmRlPoheBBMRAgAeBQJCHI+pAhsDB gsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMYMUAn0rk8fEEY2tHGSUD7PNbk+Fwkd7MAJ 4wMfOerrvsKTrB9xmFnZ2ZUy67w7QjQmVybmQgSGVsbWxlIDxtYWlsaW5nc0Bvb3Bzd2FyZS5kZT6 IXgQTEQIAHgUCQhyPxgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzOhrAJ4w+A3H cjTJb54lUDpyyQu6Y5dlVQCeJCFKygOVbpn4HSp4Z+R6+s4Rul60J0Jlcm5kIEhlbG1sZSA8YmVyb mQuaGVsbWxlQGN5YmVydGVjLmF0Poh4BBMRAgA4FiEEcLVWcrwQIdBqHtvMUXXNjoXZSswFAmDe1D kCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQUXXNjoXZSszs9QCfbbpKT0/Mh4PhfS6rRbm NNQC1zS8An2x1PLHPS6649DRkiYOMWTXzAlSE Content-Type: multipart/mixed; boundary="=-GUHV7qXNNrp0uLhGxVEk" User-Agent: Evolution 3.54.3 (3.54.3-1.fc41) MIME-Version: 1.0 X-Spamd-Bar: + List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-GUHV7qXNNrp0uLhGxVEk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Am Sonntag, dem 06.04.2025 um 15:43 -0400 schrieb Tom Lane: > I'd be more comfortable with a check like >=20 > if (strchr("...valid chars...", *ep) !=3D NULL) >=20 > It looks like "_crypt_itoa64" might be directly usable as the > valid-chars string, too.=C2=A0 (BTW, why is _crypt_itoa64 not > marked const?) Here is a patch that tries to address all these issues (including Andres' report). I've adjusted the error message and use ereport(), so it might be more useful if we deal with not just single byte letters. I've also changed _crypt_itoa64 from unsigned char to char, since this seems what strchr() expects (at least on my machine) and we don't deal specifically elsewhere with that. Thanks, Bernd --=-GUHV7qXNNrp0uLhGxVEk Content-Disposition: attachment; filename*0=0001-Follow-up-fixes-for-commit-749a9e20c9790006f3af47f7a.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Follow-up-fixes-for-commit-749a9e20c9790006f3af47f7a.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkOWFhMTUyNGE4MjgwYmIzOTk3OTk4YzJhMzQ5OWIxZjhjZmRlZTZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBIZWxtbGUgPEJlcm5kIEhlbG1sZSBtYWlsaW5nc0Bv b3Bzd2FyZS5kZT4KRGF0ZTogTW9uLCA3IEFwciAyMDI1IDEzOjQ1OjEyICswMjAwClN1YmplY3Q6 IFtQQVRDSF0gRm9sbG93IHVwIGZpeGVzIGZvciBjb21taXQKIDc0OWE5ZTIwYzk3OTAwMDZmM2Fm NDdmN2E4ZmFmNGFkOGRjMzU4ZDkuCgpUaGlzIHJlbW92ZXMgdGhlIHBsYXRmb3JtIGRlcGVuZGFu dCB1c2Ugb2YgaXNhbHBoYSgpIGFuZCBmcmllbmRzIGFuZCByZXBsYWNlcwp0aGUgY2hlY2sgZm9y IHN1cHBvcnRlZCBsZXR0ZXJzIGluIHRoZSBzYWx0IHN0cmluZyB0byBqdXN0IGNoZWNrIGFnYWlu c3QKcGxhaW4gQVNDSUkgbGV0dGVycy4gV2hpbGUgdGhpcyBtYWtlcyB0aGUgdXNlIG9mIHNhbHQg bGV0dGVycyBtb3JlIHN0cmljdCwKd2UgZXhwZWN0IHRoaXMgdG8gbWFrZSB0aGUgY29kZSBtb3Jl IHJvYnVzdC4KClRoaXMgZml4ZXMgYSBjYXJlbGVzcyB1c2UtcG9pbnRlci1hZnRlci1wZnJlZSBz cG90dGVkIGJ5IEFuZHJlcyBGcmV1bmQsIHRvby4KLS0tCiBjb250cmliL3BnY3J5cHRvL2NyeXB0 LXNoYS5jIHwgMTAgKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL2NyeXB0LXNoYS5j IGIvY29udHJpYi9wZ2NyeXB0by9jcnlwdC1zaGEuYwppbmRleCA3ZTk0NDBjYTc4NC4uYmNmNWI0 ODA3MzIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vY3J5cHQtc2hhLmMKKysrIGIvY29u dHJpYi9wZ2NyeXB0by9jcnlwdC1zaGEuYwpAQCAtNTgsNyArNTgsNyBAQCB0eXBlZGVmIGVudW0K IAlQR0NSWVBUT19TSEFfVU5LT1dOCiB9IFBHQ1JZUFRPX1NIQV90OwogCi1zdGF0aWMgdW5zaWdu ZWQgY2hhciBfY3J5cHRfaXRvYTY0WzY0ICsgMV0gPQorc3RhdGljIGNvbnN0IGNoYXIgX2NyeXB0 X2l0b2E2NFs2NCArIDFdID0KICIuLzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ WmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKIAogLyoKQEAgLTMyMSwxMCArMzIxLDEyIEBA IHB4X2NyeXB0X3NoYWNyeXB0KGNvbnN0IGNoYXIgKnB3LCBjb25zdCBjaGFyICpzYWx0LCBjaGFy ICpwYXNzd2QsIHVuc2lnbmVkIGRzdGxlCiAKIAkJaWYgKCplcCAhPSAnJCcpCiAJCXsKLQkJCWlm IChpc2FscGhhKCplcCkgfHwgaXNkaWdpdCgqZXApIHx8ICgqZXAgPT0gJy4nKSB8fCAoKmVwID09 ICcvJykpCisJCQlpZiAoc3RyY2hyKF9jcnlwdF9pdG9hNjQsICplcCkgIT0gTlVMTCkKIAkJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhck1hY3JvKGRlY29kZWRfc2FsdCwgKmVwKTsKIAkJCWVsc2UKLQkJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBjaGFyYWN0ZXIgaW4gc2FsdCBzdHJpbmc6IFwiJWNcIiIs ICplcCk7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImludmFsaWQgY2hhcmFjdGVyIGluIHNh bHQgc3RyaW5nIGF0OiBcIiVzXCIiLCBlcCkpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtNjAyLDgg KzYwNCw2IEBAIHB4X2NyeXB0X3NoYWNyeXB0KGNvbnN0IGNoYXIgKnB3LCBjb25zdCBjaGFyICpz YWx0LCBjaGFyICpwYXNzd2QsIHVuc2lnbmVkIGRzdGxlCiAJCQllbG9nKEVSUk9SLCAidW5zdXBw b3J0ZWQgZGlnZXN0IGxlbmd0aCIpOwogCX0KIAotCSpjcCA9ICdcMCc7Ci0KIAkvKgogCSAqIENv cHkgb3ZlciByZXN1bHQgdG8gc3BlY2lmaWVkIGJ1ZmZlci4KIAkgKgotLSAKMi40OS4wCgo= --=-GUHV7qXNNrp0uLhGxVEk--