Index: Client.java =================================================================== RCS file: /home/eclipse/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java,v retrieving revision 1.12 diff -u -r1.12 Client.java --- Client.java 13 Sep 2002 14:22:00 -0000 1.12 +++ Client.java 22 Oct 2002 21:20:37 -0000 @@ -20,6 +20,7 @@ import java.io.InputStream; import java.io.InterruptedIOException; import java.io.OutputStream; +import java.math.BigInteger; import java.net.Socket; import org.eclipse.core.runtime.IProgressMonitor; @@ -651,8 +652,14 @@ System.arraycopy(session_key, 0, session_key_xored, 0, session_key.length); Misc.xor(session_key_xored, 0, session_id, 0, session_key_xored, 0, session_id.length); - byte[] result = Misc.encryptRSAPkcs1(session_key_xored, server_key_public_exponent, server_key_public_modulus); - result = Misc.encryptRSAPkcs1(result, host_key_public_exponent, host_key_public_modulus); + byte[] result; + if (new BigInteger(1,server_key_public_modulus).compareTo(new BigInteger(1,host_key_public_modulus)) == -1) { + result = Misc.encryptRSAPkcs1(session_key_xored, server_key_public_exponent, server_key_public_modulus); + result = Misc.encryptRSAPkcs1(result, host_key_public_exponent, host_key_public_modulus); + } else { + result = Misc.encryptRSAPkcs1(session_key_xored, host_key_public_exponent, host_key_public_modulus); + result = Misc.encryptRSAPkcs1(result, server_key_public_exponent, server_key_public_modulus); + } session_key_encrypted = new byte[result.length + 2]; session_key_encrypted[1] = (byte) ((8 * result.length) & 0xff);