Class Ssh2PublicKeyEntryDecoder
- java.lang.Object
-
- org.apache.sshd.common.config.keys.loader.ssh2.Ssh2PublicKeyEntryDecoder
-
- All Implemented Interfaces:
KeyTypeNamesSupport,PublicKeyEntryResolver,PublicKeyRawDataDecoder<java.security.PublicKey>,PublicKeyRawDataReader<java.security.PublicKey>
public class Ssh2PublicKeyEntryDecoder extends java.lang.Object implements PublicKeyRawDataDecoder<java.security.PublicKey>, PublicKeyEntryResolver, PublicKeyRawDataReader<java.security.PublicKey>, KeyTypeNamesSupport
Decodes a public key file encoded according to The Secure Shell (SSH) Public Key File Format
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringBEGIN_MARKERstatic java.lang.StringEND_MARKERstatic charHEADER_CONTINUATION_INDICATORAccording to RFC-4716 section 3.3:static Ssh2PublicKeyEntryDecoderINSTANCEstatic java.util.List<java.lang.String>START_MARKERSstatic java.util.List<java.lang.String>STOP_MARKERSstatic java.util.NavigableSet<java.lang.String>SUPPORTED_KEY_TYPES-
Fields inherited from interface org.apache.sshd.common.config.keys.PublicKeyEntryResolver
FAILING, IGNORING, UNSUPPORTED
-
-
Constructor Summary
Constructors Constructor Description Ssh2PublicKeyEntryDecoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.security.PublicKeydecodePublicKey(SessionContext session, java.lang.String keyType, java.io.InputStream keyData, java.util.Map<java.lang.String,java.lang.String> headers)java.security.PublicKeydecodePublicKeyByType(SessionContext session, java.lang.String keyType, java.io.InputStream keyData, java.util.Map<java.lang.String,java.lang.String> headers)java.util.NavigableSet<java.lang.String>getSupportedKeyTypes()java.security.PublicKeyreadPublicKey(SessionContext session, NamedResource resourceKey, java.lang.String beginMarker, java.lang.String endMarker, byte[] dataBytes, java.util.Map<java.lang.String,java.lang.String> headers)java.security.PublicKeyreadPublicKey(SessionContext session, NamedResource resourceKey, java.lang.String beginMarker, java.lang.String endMarker, java.util.List<java.lang.String> lines, java.util.Map<java.lang.String,java.lang.String> headers)java.security.PublicKeyreadPublicKey(SessionContext session, NamedResource resourceKey, java.util.List<java.lang.String> lines)java.security.PublicKeyresolve(SessionContext session, java.lang.String keyType, byte[] keyData, java.util.Map<java.lang.String,java.lang.String> headers)protected java.util.Map.Entry<java.util.Map<java.lang.String,java.lang.String>,java.util.List<java.lang.String>>separateDataLinesFromHeaders(SessionContext session, NamedResource resourceKey, java.lang.String startLine, java.lang.String endLine, java.util.List<java.lang.String> lines)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.sshd.common.config.keys.PublicKeyRawDataDecoder
decodePublicKey, decodePublicKey
-
Methods inherited from interface org.apache.sshd.common.config.keys.PublicKeyRawDataReader
readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey
-
-
-
-
Field Detail
-
SUPPORTED_KEY_TYPES
public static final java.util.NavigableSet<java.lang.String> SUPPORTED_KEY_TYPES
-
BEGIN_MARKER
public static final java.lang.String BEGIN_MARKER
- See Also:
- Constant Field Values
-
START_MARKERS
public static final java.util.List<java.lang.String> START_MARKERS
-
END_MARKER
public static final java.lang.String END_MARKER
- See Also:
- Constant Field Values
-
STOP_MARKERS
public static final java.util.List<java.lang.String> STOP_MARKERS
-
HEADER_CONTINUATION_INDICATOR
public static final char HEADER_CONTINUATION_INDICATOR
According to RFC-4716 section 3.3:A line is continued if the last character in the line is a "\". If the last character of a line is a "\", then the logical contents of the line are formed by removing the "\" and the line termination characters, and appending the contents of the next line.- See Also:
- Constant Field Values
-
INSTANCE
public static final Ssh2PublicKeyEntryDecoder INSTANCE
-
-
Method Detail
-
getSupportedKeyTypes
public java.util.NavigableSet<java.lang.String> getSupportedKeyTypes()
- Specified by:
getSupportedKeyTypesin interfaceKeyTypeNamesSupport- Returns:
- The case insensitive
NavigableSetofOpenSSHkey type names that are supported by this decoder - e.g.,ssh-rsa, ssh-dss, ecdsa-sha2-nistp384. This is not a single name - e.g., ECDSA keys have several curve names. Caveat: this collection may be un-modifiable...
-
resolve
public java.security.PublicKey resolve(SessionContext session, java.lang.String keyType, byte[] keyData, java.util.Map<java.lang.String,java.lang.String> headers) throws java.io.IOException, java.security.GeneralSecurityException
- Specified by:
resolvein interfacePublicKeyEntryResolver- Parameters:
session- TheSessionContextfor invoking this load command - may benullif not invoked within a session context (e.g., offline tool or session unknown).keyType- TheOpenSSHreported key typekeyData- TheOpenSSHencoded key dataheaders- Any headers that may have been available when data was read- Returns:
- The extracted
PublicKey- ignored ifnull - Throws:
java.io.IOException- If failed to parse the key datajava.security.GeneralSecurityException- If failed to generate the key
-
decodePublicKey
public java.security.PublicKey decodePublicKey(SessionContext session, java.lang.String keyType, java.io.InputStream keyData, java.util.Map<java.lang.String,java.lang.String> headers) throws java.io.IOException, java.security.GeneralSecurityException
- Specified by:
decodePublicKeyin interfacePublicKeyRawDataDecoder<java.security.PublicKey>- Parameters:
session- TheSessionContextfor invoking this command - may benullif not invoked within a session context (e.g., offline tool or session unknown).keyType- The reported / encode key typekeyData- The key data bytes stream positioned after the key type decoding and making sure it is one of the supported typesheaders- Any headers that may have been available when data was read- Returns:
- The decoded
PublicKey - Throws:
java.io.IOException- If failed to read from the data streamjava.security.GeneralSecurityException- If failed to generate the key
-
decodePublicKeyByType
public java.security.PublicKey decodePublicKeyByType(SessionContext session, java.lang.String keyType, java.io.InputStream keyData, java.util.Map<java.lang.String,java.lang.String> headers) throws java.io.IOException, java.security.GeneralSecurityException
- Specified by:
decodePublicKeyByTypein interfacePublicKeyRawDataDecoder<java.security.PublicKey>- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
readPublicKey
public java.security.PublicKey readPublicKey(SessionContext session, NamedResource resourceKey, java.util.List<java.lang.String> lines) throws java.io.IOException, java.security.GeneralSecurityException
- Specified by:
readPublicKeyin interfacePublicKeyRawDataReader<java.security.PublicKey>- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
readPublicKey
public java.security.PublicKey readPublicKey(SessionContext session, NamedResource resourceKey, java.lang.String beginMarker, java.lang.String endMarker, java.util.List<java.lang.String> lines, java.util.Map<java.lang.String,java.lang.String> headers) throws java.io.IOException, java.security.GeneralSecurityException
- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
readPublicKey
public java.security.PublicKey readPublicKey(SessionContext session, NamedResource resourceKey, java.lang.String beginMarker, java.lang.String endMarker, byte[] dataBytes, java.util.Map<java.lang.String,java.lang.String> headers) throws java.io.IOException, java.security.GeneralSecurityException
- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
separateDataLinesFromHeaders
protected java.util.Map.Entry<java.util.Map<java.lang.String,java.lang.String>,java.util.List<java.lang.String>> separateDataLinesFromHeaders(SessionContext session, NamedResource resourceKey, java.lang.String startLine, java.lang.String endLine, java.util.List<java.lang.String> lines) throws java.io.IOException, java.security.GeneralSecurityException
- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
-