1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

pgcrypto: Make it possible to disable built-in crypto

When using OpenSSL and/or the underlying operating system in FIPS
mode no non-FIPS certified crypto implementations should be used.
While that is already possible by just not invoking the built-in
crypto in pgcrypto, this adds a GUC which prohibit the code from
being called.  This doesn't change the FIPS status of PostgreSQL
but can make it easier for sites which target FIPS compliance to
ensure that violations cannot occur.

Author: Daniel Gustafsson <daniel@yesql.se>
Author: Joe Conway <mail@joeconway.com>
Reviewed-by: Joe Conway <mail@joeconway.com>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Discussion: https://postgr.es/m/16b4a157-9ea1-44d0-b7b3-4c85df5de97b@joeconway.com
This commit is contained in:
Daniel Gustafsson
2025-01-24 14:25:08 +01:00
parent 924d89a354
commit 035f99cbeb
7 changed files with 121 additions and 0 deletions

View File

@ -1165,6 +1165,44 @@ fips_mode() returns boolean
</para>
</sect2>
<sect2 id="pgcrypto-configuration-parameters">
<title>Configuration Parameters</title>
<para>
There is one configuration parameter that controls the behavior of
<filename>pgcrypto</filename>.
</para>
<variablelist>
<varlistentry id="pgcrypto-configuration-parameters-builtin_crypto_enabled">
<term>
<varname>pgcrypto.builtin_crypto_enabled</varname> (<type>enum</type>)
<indexterm>
<primary><varname>pgcrypto.builtin_crypto_enabled</varname> configuration
parameter</primary>
</indexterm>
</term>
<listitem>
<para>
<varname>pgcrypto.builtin_crypto_enabled</varname> determines if the
built in crypto functions <function>gen_salt()</function>, and
<function>crypt()</function> are available for use. Setting this to
<literal>off</literal> disables these functions. <literal>on</literal>
(the default) enables these functions to work normally.
<literal>fips</literal> disables these functions if
<productname>OpenSSL</productname> is detected to operate in FIPS mode.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
In ordinary usage, this parameter is set
in <filename>postgresql.conf</filename>, although superusers can alter it
on-the-fly within their own sessions.
</para>
</sect2>
<sect2 id="pgcrypto-notes">
<title>Notes</title>