public class KexManager extends java.lang.Object implements MessageHandler
Modifier and Type | Field and Description |
---|---|
(package private) java.lang.Object |
accessLock |
(package private) boolean |
connectionClosed |
(package private) ClientServerHello |
csh |
(package private) java.lang.String |
hostname |
(package private) boolean |
ignore_next_kex_packet |
(package private) int |
kexCount |
(package private) KeyMaterial |
km |
(package private) KexState |
kxs |
(package private) ConnectionInfo |
lastConnInfo |
private static Logger |
log |
(package private) CryptoWishList |
nextKEXcryptoWishList |
(package private) DHGexParameters |
nextKEXdhgexParameters |
(package private) int |
port |
(package private) java.security.SecureRandom |
rnd |
(package private) byte[] |
sessionId |
(package private) TransportManager |
tm |
(package private) ServerHostKeyVerifier |
verifier |
Constructor and Description |
---|
KexManager(TransportManager tm,
ClientServerHello csh,
CryptoWishList initialCwl,
java.lang.String hostname,
int port,
ServerHostKeyVerifier keyVerifier,
java.security.SecureRandom rnd) |
Modifier and Type | Method and Description |
---|---|
static void |
checkKexAlgorithmList(java.lang.String[] algos) |
static void |
checkServerHostkeyAlgorithmsList(java.lang.String[] algos) |
private boolean |
compareFirstOfNameList(java.lang.String[] a,
java.lang.String[] b) |
private boolean |
establishKeyMaterial() |
private void |
finishKex() |
static java.lang.String[] |
getDefaultKexAlgorithmList() |
static java.lang.String[] |
getDefaultServerHostkeyAlgorithmList() |
private java.lang.String |
getFirstMatch(java.lang.String[] client,
java.lang.String[] server) |
ConnectionInfo |
getOrWaitForConnectionInfo(int minKexCount) |
void |
handleEndMessage(java.lang.Throwable cause)
Called to inform that no more messages will be delivered.
|
void |
handleMessage(byte[] msg,
int msglen) |
void |
initiateKEX(CryptoWishList cwl,
DHGexParameters dhgex) |
private boolean |
isGuessOK(KexParameters cpar,
KexParameters spar) |
private NegotiatedParameters |
mergeKexParameters(KexParameters client,
KexParameters server) |
private boolean |
verifySignature(byte[] sig,
byte[] hostkey) |
private static final Logger log
KexState kxs
int kexCount
KeyMaterial km
byte[] sessionId
ClientServerHello csh
final java.lang.Object accessLock
ConnectionInfo lastConnInfo
boolean connectionClosed
boolean ignore_next_kex_packet
final TransportManager tm
CryptoWishList nextKEXcryptoWishList
DHGexParameters nextKEXdhgexParameters
ServerHostKeyVerifier verifier
final java.lang.String hostname
final int port
final java.security.SecureRandom rnd
public KexManager(TransportManager tm, ClientServerHello csh, CryptoWishList initialCwl, java.lang.String hostname, int port, ServerHostKeyVerifier keyVerifier, java.security.SecureRandom rnd)
public ConnectionInfo getOrWaitForConnectionInfo(int minKexCount) throws java.io.IOException
java.io.IOException
private java.lang.String getFirstMatch(java.lang.String[] client, java.lang.String[] server) throws NegotiateException
NegotiateException
private boolean compareFirstOfNameList(java.lang.String[] a, java.lang.String[] b)
private boolean isGuessOK(KexParameters cpar, KexParameters spar)
private NegotiatedParameters mergeKexParameters(KexParameters client, KexParameters server)
public void initiateKEX(CryptoWishList cwl, DHGexParameters dhgex) throws java.io.IOException
java.io.IOException
private boolean establishKeyMaterial()
private void finishKex() throws java.io.IOException
java.io.IOException
public static final java.lang.String[] getDefaultServerHostkeyAlgorithmList()
public static final void checkServerHostkeyAlgorithmsList(java.lang.String[] algos)
public static final java.lang.String[] getDefaultKexAlgorithmList()
public static final void checkKexAlgorithmList(java.lang.String[] algos)
private boolean verifySignature(byte[] sig, byte[] hostkey) throws java.io.IOException
java.io.IOException
public void handleMessage(byte[] msg, int msglen) throws java.io.IOException
handleMessage
in interface MessageHandler
java.io.IOException
public void handleEndMessage(java.lang.Throwable cause) throws java.io.IOException
MessageHandler
handleEndMessage
in interface MessageHandler
cause
- For diagnosis, the reason that caused the transport to close down.java.io.IOException