--- jsch-0.1.43/src/com/jcraft/jsch/jce/DH.java 2010-03-05 08:07:18.000000000 +0000 +++ jsch-0.1.43.hack/src/com/jcraft/jsch/jce/DH.java 2010-08-02 16:12:54.000000000 +0000 @@ -53,14 +53,18 @@ } public byte[] getE() throws Exception{ if(e==null){ - DHParameterSpec dhSkipParamSpec=new DHParameterSpec(p, g); - myKpairGen.initialize(dhSkipParamSpec); - KeyPair myKpair=myKpairGen.generateKeyPair(); - myKeyAgree.init(myKpair.getPrivate()); -// BigInteger x=((javax.crypto.interfaces.DHPrivateKey)(myKpair.getPrivate())).getX(); - byte[] myPubKeyEnc=myKpair.getPublic().getEncoded(); - e=((javax.crypto.interfaces.DHPublicKey)(myKpair.getPublic())).getY(); - e_array=e.toByteArray(); + for(int i=0; i<100; i++){ + init(); + DHParameterSpec dhSkipParamSpec=new DHParameterSpec(p, g); + myKpairGen.initialize(dhSkipParamSpec); + KeyPair myKpair=myKpairGen.generateKeyPair(); + myKeyAgree.init(myKpair.getPrivate()); + byte[] myPubKeyEnc=myKpair.getPublic().getEncoded(); + e=((javax.crypto.interfaces.DHPublicKey)(myKpair.getPublic())).getY(); + e_array=e.toByteArray(); + if(e_array.length!=1) + break; + } } return e_array; }