Package com.trilead.ssh2.transport
Class KexManager
- java.lang.Object
-
- com.trilead.ssh2.transport.KexManager
-
- All Implemented Interfaces:
MessageHandler
public class KexManager extends java.lang.Object implements MessageHandler
KexManager.- Version:
- $Id: KexManager.java,v 1.1 2007/10/15 12:49:56 cplattne Exp $
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.lang.ObjectaccessLock(package private) booleanconnectionClosed(package private) ClientServerHellocsh(package private) java.lang.Stringhostname(package private) booleanignore_next_kex_packet(package private) intkexCount(package private) KeyMaterialkm(package private) KexStatekxs(package private) ConnectionInfolastConnInfoprivate static Loggerlog(package private) CryptoWishListnextKEXcryptoWishList(package private) DHGexParametersnextKEXdhgexParameters(package private) intport(package private) java.security.SecureRandomrnd(package private) byte[]sessionId(package private) TransportManagertm(package private) ServerHostKeyVerifierverifier
-
Constructor Summary
Constructors Constructor Description KexManager(TransportManager tm, ClientServerHello csh, CryptoWishList initialCwl, java.lang.String hostname, int port, ServerHostKeyVerifier keyVerifier, java.security.SecureRandom rnd)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidcheckKexAlgorithmList(java.lang.String[] algos)static voidcheckServerHostkeyAlgorithmsList(java.lang.String[] algos)private booleancompareFirstOfNameList(java.lang.String[] a, java.lang.String[] b)private booleanestablishKeyMaterial()private voidfinishKex()static java.lang.String[]getDefaultKexAlgorithmList()static java.lang.String[]getDefaultServerHostkeyAlgorithmList()private java.lang.StringgetFirstMatch(java.lang.String[] client, java.lang.String[] server)ConnectionInfogetOrWaitForConnectionInfo(int minKexCount)voidhandleEndMessage(java.lang.Throwable cause)Called to inform that no more messages will be delivered.voidhandleMessage(byte[] msg, int msglen)voidinitiateKEX(CryptoWishList cwl, DHGexParameters dhgex)private booleanisGuessOK(KexParameters cpar, KexParameters spar)private NegotiatedParametersmergeKexParameters(KexParameters client, KexParameters server)private booleanverifySignature(byte[] sig, byte[] hostkey)
-
-
-
Field Detail
-
log
private static final Logger log
-
kxs
KexState kxs
-
kexCount
int kexCount
-
km
KeyMaterial km
-
sessionId
byte[] sessionId
-
csh
ClientServerHello csh
-
accessLock
final java.lang.Object accessLock
-
lastConnInfo
ConnectionInfo lastConnInfo
-
connectionClosed
boolean connectionClosed
-
ignore_next_kex_packet
boolean ignore_next_kex_packet
-
tm
final TransportManager tm
-
nextKEXcryptoWishList
CryptoWishList nextKEXcryptoWishList
-
nextKEXdhgexParameters
DHGexParameters nextKEXdhgexParameters
-
verifier
ServerHostKeyVerifier verifier
-
hostname
final java.lang.String hostname
-
port
final int port
-
rnd
final java.security.SecureRandom rnd
-
-
Constructor Detail
-
KexManager
public KexManager(TransportManager tm, ClientServerHello csh, CryptoWishList initialCwl, java.lang.String hostname, int port, ServerHostKeyVerifier keyVerifier, java.security.SecureRandom rnd)
-
-
Method Detail
-
getOrWaitForConnectionInfo
public ConnectionInfo getOrWaitForConnectionInfo(int minKexCount) throws java.io.IOException
- Throws:
java.io.IOException
-
getFirstMatch
private java.lang.String getFirstMatch(java.lang.String[] client, java.lang.String[] server) throws NegotiateException- Throws:
NegotiateException
-
compareFirstOfNameList
private boolean compareFirstOfNameList(java.lang.String[] a, java.lang.String[] b)
-
isGuessOK
private boolean isGuessOK(KexParameters cpar, KexParameters spar)
-
mergeKexParameters
private NegotiatedParameters mergeKexParameters(KexParameters client, KexParameters server)
-
initiateKEX
public void initiateKEX(CryptoWishList cwl, DHGexParameters dhgex) throws java.io.IOException
- Throws:
java.io.IOException
-
establishKeyMaterial
private boolean establishKeyMaterial()
-
finishKex
private void finishKex() throws java.io.IOException- Throws:
java.io.IOException
-
getDefaultServerHostkeyAlgorithmList
public static final java.lang.String[] getDefaultServerHostkeyAlgorithmList()
-
checkServerHostkeyAlgorithmsList
public static final void checkServerHostkeyAlgorithmsList(java.lang.String[] algos)
-
getDefaultKexAlgorithmList
public static final java.lang.String[] getDefaultKexAlgorithmList()
-
checkKexAlgorithmList
public static final void checkKexAlgorithmList(java.lang.String[] algos)
-
verifySignature
private boolean verifySignature(byte[] sig, byte[] hostkey) throws java.io.IOException- Throws:
java.io.IOException
-
handleMessage
public void handleMessage(byte[] msg, int msglen) throws java.io.IOException- Specified by:
handleMessagein interfaceMessageHandler- Throws:
java.io.IOException
-
handleEndMessage
public void handleEndMessage(java.lang.Throwable cause) throws java.io.IOExceptionDescription copied from interface:MessageHandlerCalled to inform that no more messages will be delivered.- Specified by:
handleEndMessagein interfaceMessageHandler- Parameters:
cause- For diagnosis, the reason that caused the transport to close down.- Throws:
java.io.IOException
-
-