mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +03:00
Add more columns to pg_stat_ssl
Add columns client_serial and issuer_dn to pg_stat_ssl. These allow uniquely identifying the client certificate. Rename the existing column clientdn to client_dn, to make the naming more consistent and easier to read. Discussion: https://www.postgresql.org/message-id/flat/398754d8-6bb5-c5cf-e7b8-22e5f0983caf@2ndquadrant.com/
This commit is contained in:
@@ -1109,7 +1109,7 @@ be_tls_get_cipher(Port *port)
|
||||
}
|
||||
|
||||
void
|
||||
be_tls_get_peerdn_name(Port *port, char *ptr, size_t len)
|
||||
be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len)
|
||||
{
|
||||
if (port->peer)
|
||||
strlcpy(ptr, X509_NAME_to_cstring(X509_get_subject_name(port->peer)), len);
|
||||
@@ -1117,6 +1117,35 @@ be_tls_get_peerdn_name(Port *port, char *ptr, size_t len)
|
||||
ptr[0] = '\0';
|
||||
}
|
||||
|
||||
void
|
||||
be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len)
|
||||
{
|
||||
if (port->peer)
|
||||
strlcpy(ptr, X509_NAME_to_cstring(X509_get_issuer_name(port->peer)), len);
|
||||
else
|
||||
ptr[0] = '\0';
|
||||
}
|
||||
|
||||
void
|
||||
be_tls_get_peer_serial(Port *port, char *ptr, size_t len)
|
||||
{
|
||||
if (port->peer)
|
||||
{
|
||||
ASN1_INTEGER *serial;
|
||||
BIGNUM *b;
|
||||
char *decimal;
|
||||
|
||||
serial = X509_get_serialNumber(port->peer);
|
||||
b = ASN1_INTEGER_to_BN(serial, NULL);
|
||||
decimal = BN_bn2dec(b);
|
||||
BN_free(b);
|
||||
strlcpy(ptr, decimal, len);
|
||||
OPENSSL_free(decimal);
|
||||
}
|
||||
else
|
||||
ptr[0] = '\0';
|
||||
}
|
||||
|
||||
#ifdef HAVE_X509_GET_SIGNATURE_NID
|
||||
char *
|
||||
be_tls_get_certificate_hash(Port *port, size_t *len)
|
||||
|
||||
Reference in New Issue
Block a user