/* * void dump(byte[] foo){ * for(int i=0; i<foo.length; i++){ * if((foo[i]&0xf0)==0)System.out.print("0"); * System.out.print(Integer.toHexString(foo[i]&0xff)); * if(i%16==15){System.out.println(""); continue;} * if(i%2==1)System.out.print(" "); * } * } */ internal static String[] guess(byte[] I_S, byte[] I_C) { //System.out.println("guess: "); String[] guess = new String[PROPOSAL_MAX]; LibSterileSSH.SecureShell.Buffer sb = new LibSterileSSH.SecureShell.Buffer(I_S); sb.setOffSet(17); LibSterileSSH.SecureShell.Buffer cb = new LibSterileSSH.SecureShell.Buffer(I_C); cb.setOffSet(17); for (int i = 0; i < PROPOSAL_MAX; i++) { byte[] sp = sb.getString(); // server proposal byte[] cp = cb.getString(); // client proposal //System.out.println("server-proposal: |"+new String(sp)+"|"); //System.out.println("client-proposal: |"+new String(cp)+"|"); int j = 0; int k = 0; //System.out.println(new String(cp)); //loop(using BREAK instead): while (j < cp.Length) { while (j < cp.Length && cp[j] != ',') { j++; } if (k == j) { return(null); } String algorithm = StringAux.getString(cp, k, j - k); //System.out.println("algorithm: "+algorithm); int l = 0; int m = 0; while (l < sp.Length) { while (l < sp.Length && sp[l] != ',') { l++; } if (m == l) { return(null); } //System.out.println(" "+new String(sp, m, l-m)); if (algorithm.Equals(StringAux.getString(sp, m, l - m))) { guess[i] = algorithm; //System.out.println(" "+algorithm); goto BREAK; } l++; m = l; } j++; k = j; } BREAK: if (j == 0) { guess[i] = ""; } else if (guess[i] == null) { //System.out.println(" fail"); return(null); } } // for(int i=0; i<PROPOSAL_MAX; i++){ // System.out.println("guess: ["+guess[i]+"]"); // } return(guess); }