libpq implements it properly. I'd suggest looking at the client source.
Where would that be, in the postgres source? And what file? I'm really not too familiar with C.
Also, I *think* I have this working correctly in my PQueue module, so if you
don't mind a little Python:
import md5
pw = md5.new(self.password + self.keywords['user']).hexdigest()
pw = 'md5' + md5.new (pw + authmsg.salt).hexdigest()
self.password is the password given by the user.
self.keywords['user'] is the user name.
authmsg.salt is the salt given by the server.
Yeah, I love Python. That is actually the way I'm sending it also. I'm connecting via .NET though. I'll have to double check some things.
-Josh