*** src/interfaces/jdbc/org/postgresql/Connection.java 2001/12/11 04:44:23 1.40 --- src/interfaces/jdbc/org/postgresql/Connection.java 2002/02/06 22:11:36 *************** *** 24,31 **** private String PG_HOST; private int PG_PORT; ! private String PG_USER; ! private String PG_PASSWORD; private String PG_DATABASE; private boolean PG_STATUS; private String compatible; --- 24,30 ---- private String PG_HOST; private int PG_PORT; ! private String user; private String PG_DATABASE; private boolean PG_STATUS; private String compatible; *************** *** 52,62 **** // src/include/libpq/pqcomm.h protected static final int PG_PROTOCOL_LATEST_MAJOR = 2; protected static final int PG_PROTOCOL_LATEST_MINOR = 0; - private static final int SM_DATABASE = 64; - private static final int SM_USER = 32; - private static final int SM_OPTIONS = 64; - private static final int SM_UNUSED = 64; - private static final int SM_TTY = 64; private static final int AUTH_REQ_OK = 0; private static final int AUTH_REQ_KRB4 = 1; --- 51,56 ---- *************** *** 65,73 **** private static final int AUTH_REQ_CRYPT = 4; private static final int AUTH_REQ_MD5 = 5; - // New for 6.3, salt value for crypt authorisation - private String salt; - // These are used to cache oids, PGTypes and SQLTypes private static Hashtable sqlTypeCache = new Hashtable(); // oid -> SQLType private static Hashtable pgTypeCache = new Hashtable(); // oid -> PGType --- 59,64 ---- *************** *** 114,121 **** this_driver = d; this_url = url; PG_DATABASE = database; ! PG_USER = info.getProperty("user"); ! PG_PASSWORD = info.getProperty("password", ""); PG_PORT = port; PG_HOST = host; PG_STATUS = CONNECTION_BAD; --- 105,112 ---- this_driver = d; this_url = url; PG_DATABASE = database; ! user = info.getProperty("user"); ! String password = info.getProperty("password", ""); PG_PORT = port; PG_HOST = host; PG_STATUS = CONNECTION_BAD; *************** *** 148,170 **** // Now we need to construct and send a startup packet try { ! // Ver 6.3 code ! pg_stream.SendInteger(4 + 4 + SM_DATABASE + SM_USER + SM_OPTIONS + SM_UNUSED + SM_TTY, 4); ! pg_stream.SendInteger(PG_PROTOCOL_LATEST_MAJOR, 2); ! pg_stream.SendInteger(PG_PROTOCOL_LATEST_MINOR, 2); ! pg_stream.Send(database.getBytes(), SM_DATABASE); ! ! // This last send includes the unused fields ! pg_stream.Send(PG_USER.getBytes(), SM_USER + SM_OPTIONS + SM_UNUSED + SM_TTY); ! ! // now flush the startup packets to the backend ! pg_stream.flush(); // Now get the response from the backend, either an error message // or an authentication request int areq = -1; // must have a value here do { int beresp = pg_stream.ReceiveChar(); switch (beresp) { --- 139,156 ---- // Now we need to construct and send a startup packet try { ! new StartupPacket(PG_PROTOCOL_LATEST_MAJOR, ! PG_PROTOCOL_LATEST_MINOR, ! user, ! database).writeTo(pg_stream); ! pg_stream.flush(); // Now get the response from the backend, either an error message // or an authentication request int areq = -1; // must have a value here do { + String salt = null; int beresp = pg_stream.ReceiveChar(); switch (beresp) { *************** *** 219,233 **** case AUTH_REQ_PASSWORD: DriverManager.println("postgresql: PASSWORD"); ! pg_stream.SendInteger(5 + PG_PASSWORD.length(), 4); ! pg_stream.Send(PG_PASSWORD.getBytes()); pg_stream.SendInteger(0, 1); pg_stream.flush(); break; case AUTH_REQ_CRYPT: DriverManager.println("postgresql: CRYPT"); ! String crypted = UnixCrypt.crypt(salt, PG_PASSWORD); pg_stream.SendInteger(5 + crypted.length(), 4); pg_stream.Send(crypted.getBytes()); pg_stream.SendInteger(0, 1); --- 205,219 ---- case AUTH_REQ_PASSWORD: DriverManager.println("postgresql: PASSWORD"); ! pg_stream.SendInteger(5 + password.length(), 4); ! pg_stream.Send(password.getBytes()); pg_stream.SendInteger(0, 1); pg_stream.flush(); break; case AUTH_REQ_CRYPT: DriverManager.println("postgresql: CRYPT"); ! String crypted = UnixCrypt.crypt(salt, password); pg_stream.SendInteger(5 + crypted.length(), 4); pg_stream.Send(crypted.getBytes()); pg_stream.SendInteger(0, 1); *************** *** 236,242 **** case AUTH_REQ_MD5: DriverManager.println("postgresql: MD5"); ! byte[] digest = MD5Digest.encode(PG_USER, PG_PASSWORD, salt); pg_stream.SendInteger(5 + digest.length, 4); pg_stream.Send(digest); pg_stream.SendInteger(0, 1); --- 222,228 ---- case AUTH_REQ_MD5: DriverManager.println("postgresql: MD5"); ! byte[] digest = MD5Digest.encode(user, password, salt); pg_stream.SendInteger(5 + digest.length, 4); pg_stream.Send(digest); pg_stream.SendInteger(0, 1); *************** *** 450,456 **** */ public String getUserName() throws SQLException { ! return PG_USER; } /* --- 436,442 ---- */ public String getUserName() throws SQLException { ! return user; } /*