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 }