]> granicus.if.org Git - postgresql/commit
Refactor client-side SSL certificate checking code
authorPeter Eisentraut <peter_e@gmx.net>
Sat, 27 Jan 2018 18:47:52 +0000 (13:47 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 31 Jan 2018 03:56:24 +0000 (22:56 -0500)
commitf75a95915528646cbfaf238fb48b3ffa17969383
tree39ae8490eadc1b2c965b569be2e43abe77ca1c49
parent38d485fdaa5739627b642303cc172acc1487b90a
Refactor client-side SSL certificate checking code

Separate the parts specific to the SSL library from the general logic.

The previous code structure was

open_client_SSL()
calls verify_peer_name_matches_certificate()
calls verify_peer_name_matches_certificate_name()
calls wildcard_certificate_match()

and was completely in fe-secure-openssl.c.  The new structure is

open_client_SSL() [openssl]
calls pq_verify_peer_name_matches_certificate() [generic]
calls pgtls_verify_peer_name_matches_certificate_guts() [openssl]
calls openssl_verify_peer_name_matches_certificate_name() [openssl]
calls pq_verify_peer_name_matches_certificate_name() [generic]
calls wildcard_certificate_match() [generic]

Move the generic functions into a new file fe-secure-common.c, so the
calls generally go fe-connect.c -> fe-secure.c -> fe-secure-${impl}.c ->
fe-secure-common.c, although there is a bit of back-and-forth between
the last two.

Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
src/interfaces/libpq/Makefile
src/interfaces/libpq/fe-secure-common.c [new file with mode: 0644]
src/interfaces/libpq/fe-secure-common.h [new file with mode: 0644]
src/interfaces/libpq/fe-secure-openssl.c
src/interfaces/libpq/libpq-int.h
src/interfaces/libpq/nls.mk
src/tools/msvc/Mkvcbuild.pm