Mercurial > 510Connectbot
comparison src/com/five_ten_sg/connectbot/service/AuthAgentService.java @ 344:b40bc65fa09a
compensate for SecureRandom bug on older devices
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 31 Jul 2014 18:39:36 -0700 |
parents | c1f929cb3dd0 |
children |
comparison
equal
deleted
inserted
replaced
343:df13118e8e79 | 344:b40bc65fa09a |
---|---|
1 package com.five_ten_sg.connectbot.service; | 1 package com.five_ten_sg.connectbot.service; |
2 | 2 |
3 import java.io.IOException; | 3 import java.io.IOException; |
4 import java.security.SecureRandom; | |
5 import java.security.KeyPair; | 4 import java.security.KeyPair; |
6 import java.security.PrivateKey; | 5 import java.security.PrivateKey; |
7 import java.security.PublicKey; | 6 import java.security.PublicKey; |
8 import java.security.interfaces.DSAPrivateKey; | 7 import java.security.interfaces.DSAPrivateKey; |
9 import java.security.interfaces.DSAPublicKey; | 8 import java.security.interfaces.DSAPublicKey; |
27 import android.os.IBinder; | 26 import android.os.IBinder; |
28 import android.os.RemoteException; | 27 import android.os.RemoteException; |
29 import android.util.Log; | 28 import android.util.Log; |
30 | 29 |
31 import com.madgag.ssh.android.authagent.AndroidAuthAgent; | 30 import com.madgag.ssh.android.authagent.AndroidAuthAgent; |
31 import ch.ethz.ssh2.crypto.SecureRandomFix; | |
32 import ch.ethz.ssh2.signature.DSASHA1Verify; | 32 import ch.ethz.ssh2.signature.DSASHA1Verify; |
33 import ch.ethz.ssh2.signature.ECDSASHA2Verify; | 33 import ch.ethz.ssh2.signature.ECDSASHA2Verify; |
34 import ch.ethz.ssh2.signature.RSASHA1Verify; | 34 import ch.ethz.ssh2.signature.RSASHA1Verify; |
35 | |
35 | 36 |
36 public class AuthAgentService extends Service { | 37 public class AuthAgentService extends Service { |
37 private static final String TAG = "ConnectBot.AuthAgentService"; | 38 private static final String TAG = "ConnectBot.AuthAgentService"; |
38 protected TerminalManager manager; | 39 protected TerminalManager manager; |
39 final Lock lock = new ReentrantLock(); | 40 final Lock lock = new ReentrantLock(); |
159 throw new RuntimeException(e); | 160 throw new RuntimeException(e); |
160 } | 161 } |
161 } | 162 } |
162 private byte[] sshEncodedSignatureFor(byte[] data, DSAPrivateKey privKey) { | 163 private byte[] sshEncodedSignatureFor(byte[] data, DSAPrivateKey privKey) { |
163 try { | 164 try { |
164 byte[] signature = DSASHA1Verify.generateSignature(data, privKey, new SecureRandom()); | 165 byte[] signature = DSASHA1Verify.generateSignature(data, privKey, new SecureRandomFix()); |
165 return DSASHA1Verify.encodeSSHDSASignature(signature); | 166 return DSASHA1Verify.encodeSSHDSASignature(signature); |
166 } | 167 } |
167 catch (IOException e) { | 168 catch (IOException e) { |
168 throw new RuntimeException(e); | 169 throw new RuntimeException(e); |
169 } | 170 } |