Subject: PQconnectdbParams and encrypted password

From: Dmitry Markman <[email-masked]>
Date: Fri, 30 Aug 2019 00:19:15 -0400

Hi
I need some help with setting PQconnectdbParams key/value for encrypted password

suppose I created user with the string

create user foobar with encrypted password ‘md5f3c33545d22dbf811737afb8d0e85597’

I was able to connect successfully using 

psql -U foobar

I guess my pg_hba.conf is OK:

local   all             foobar                                    md5
host    all             foobar              127.0.0.1/32          md5
host    all             foobar              0.0.0.0/0             md5

however

I have a problem to connect to the server from my C++ program using PQconnectdbParams function

            const std::pair<std::string, std::string> connParams[] = {
                {"host", “localhost"},
                {"port", ""},
                {"user", “foobar"},
                {"password", ??????????????},//I’d like to have here “md5f3c33545d22dbf811737afb8d0e85597”, but it doesn’t work
                {"options","password_encryption='md5'"},
                {"dbname", "test_db"},
                {"connect_timeout", “10"} 
            };
            const char* keywords[] = {connParams[0].first.c_str(),
                                      connParams[1].first.c_str(),
                                      connParams[2].first.c_str(),
                                      connParams[3].first.c_str(),
                                      connParams[4].first.c_str(),
                                      connParams[5].first.c_str(),
                                      connParams[6].first.c_str(),
                                      nullptr};
            const char* connValues[] = {connParams[0].second.c_str(),
                                        connParams[1].second.c_str(),
                                        connParams[2].second.c_str(),
                                        connParams[3].second.c_str(),
                                        connParams[4].second.c_str(),
                                        connParams[5].second.c_str(),
                                        connParams[6].second.c_str(),
                                        nullptr};

		auto db = PQconnectdbParams(keywords, connValues)

whatever I tried ConnStatusType of the db is CONNECTION_BAD

if I use value as “open” string for the key=“password”, then connection was successful

thanks in advance

dm

---

From: Tom Lane <[email-masked]>
Date: Fri, 30 Aug 2019 09:50:32 -0400

Dmitry Markman <[email-masked]> writes:
> ...

Pretty much the entire *point* of an encrypted password is that the
md5 hash is not sufficient to log in with.  You need the original
string.

			regards, tom lane

---

From: Dmitry Markman <[email-masked]>
Date: Fri, 30 Aug 2019 18:48:47 -0400

Hi Tom

thanks a lot for your answer

I realized it almost immediately after I press the button send :)

thanks again

 dm

> On Aug 30, 2019, at 9:50 AM, Tom Lane <[email-masked]> wrote:
>