mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
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>
This commit is contained in:
26
src/interfaces/libpq/fe-secure-common.h
Normal file
26
src/interfaces/libpq/fe-secure-common.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* fe-secure-common.h
|
||||
*
|
||||
* common implementation-independent SSL support code
|
||||
*
|
||||
* Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* src/interfaces/libpq/fe-secure-common.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef FE_SECURE_COMMON_H
|
||||
#define FE_SECURE_COMMON_H
|
||||
|
||||
#include "libpq-fe.h"
|
||||
|
||||
extern int pq_verify_peer_name_matches_certificate_name(PGconn *conn,
|
||||
const char *namedata, size_t namelen,
|
||||
char **store_name);
|
||||
extern bool pq_verify_peer_name_matches_certificate(PGconn *conn);
|
||||
|
||||
#endif /* FE_SECURE_COMMON_H */
|
Reference in New Issue
Block a user