</listitem>
</varlistentry>
- <varlistentry id="libpq-pqsslAttribute">
+ <varlistentry id="libpq-pqsslattribute">
<term><function>PQsslAttribute</function><indexterm><primary>PQsslAttribute</></></term>
<listitem>
<para>
</listitem>
</varlistentry>
- <varlistentry id="libpq-pqsslattributes">
- <term><function>PQsslAttributes</function><indexterm><primary>PQsslAttributes</></></term>
+ <varlistentry id="libpq-pqsslattributenames">
+ <term><function>PQsslAttributeNames</function><indexterm><primary>PQsslAttributeNames</></></term>
<listitem>
<para>
Return an array of SSL attribute names available. The array is terminated by a NULL pointer.
<synopsis>
-const char **PQsslAttributes(const PGconn *conn);
+const char * const * PQsslAttributeNames(const PGconn *conn);
</synopsis>
</para>
</listitem>
<term><function>PQsslStruct</function><indexterm><primary>PQsslStruct</></></term>
<listitem>
<para>
- Return a pointer to an SSL-implementation specific object describing
+ Return a pointer to an SSL-implementation-specific object describing
the connection.
<synopsis>
void *PQsslStruct(const PGconn *conn, const char *struct_name);
</synopsis>
</para>
<para>
- The structs available depends on the SSL implementation in use.
- For OpenSSL, there is one struct, under the name "OpenSSL",
+ The struct(s) available depend on the SSL implementation in use.
+ For OpenSSL, there is one struct, available under the name "OpenSSL",
and it returns a pointer to the OpenSSL <literal>SSL</literal> struct.
To use this function, code along the following lines could be used:
<programlisting><![CDATA[
2015-02-03 [91fa7b4] Heikki..: Add API functions to libpq to interrogate SSL ..
-->
<para>
- Add <application>libpq</> function <link
- linkend="libpq-pqsslAttribute"><function>PQsslAttribute()</></>
- that returns <acronym>SSL</> information (Heikki Linnakangas)
- </para>
-
- <para>
- While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></>
- can still be used to call <productname>OpenSSL</>
- functions, <function>PQsslAttribute()</> returns <acronym>SSL</>
- information in an <acronym>SSL</>-implementation-independent way.
- (Future versions of libpq might support other <acronym>SSL</>
- implementations.)
+ Add <application>libpq</> functions to return <acronym>SSL</>
+ information in an implementation-independent way (Heikki Linnakangas)
+ </para>
+
+ <para>
+ While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></> can
+ still be used to call <productname>OpenSSL</> functions, it is now
+ considered deprecated because future versions
+ of <application>libpq</> might support other <acronym>SSL</>
+ implementations. When possible, use the new
+ functions <link
+ linkend="libpq-pqsslattribute"><function>PQsslAttribute()</></>, <link
+ linkend="libpq-pqsslattributenames"><function>PQsslAttributeNames()</></>,
+ and <link linkend="libpq-pqsslinuse"><function>PQsslInUse()</></>
+ to obtain <acronym>SSL</> information in
+ an <acronym>SSL</>-implementation-independent way.
</para>
</listitem>
PQconninfo 165
PQsslInUse 166
PQsslStruct 167
-PQsslAttributes 168
+PQsslAttributeNames 168
PQsslAttribute 169
PQsetErrorContextVisibility 170
return NULL;
}
-const char **
-PQsslAttributes(PGconn *conn)
+const char *const *
+PQsslAttributeNames(PGconn *conn)
{
- static const char *result[] = {
+ static const char *const result[] = {
"library",
"key_bits",
"cipher",
return NULL;
}
-const char **
-PQsslAttributes(PGconn *conn)
+const char *const *
+PQsslAttributeNames(PGconn *conn)
{
- static const char *result[] = {NULL};
+ static const char *const result[] = {NULL};
return result;
}
extern int PQsslInUse(PGconn *conn);
extern void *PQsslStruct(PGconn *conn, const char *struct_name);
extern const char *PQsslAttribute(PGconn *conn, const char *attribute_name);
-extern const char **PQsslAttributes(PGconn *conn);
+extern const char *const * PQsslAttributeNames(PGconn *conn);
/* Get the OpenSSL structure associated with a connection. Returns NULL for
* unencrypted connections or if any other TLS library is in use. */