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.IOExceptionprivate java.lang.String getFirstMatch(java.lang.String[] client,
java.lang.String[] server)
throws NegotiateException
NegotiateExceptionprivate 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.IOExceptionprivate boolean establishKeyMaterial()
private void finishKex()
throws java.io.IOException
java.io.IOExceptionpublic 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.IOExceptionpublic void handleMessage(byte[] msg,
int msglen)
throws java.io.IOException
handleMessage in interface MessageHandlerjava.io.IOExceptionpublic void handleEndMessage(java.lang.Throwable cause)
throws java.io.IOException
MessageHandlerhandleEndMessage in interface MessageHandlercause - For diagnosis, the reason that caused the transport to close down.java.io.IOException