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.String
BEGIN_MARKER
static java.lang.String
END_MARKER
static char
HEADER_CONTINUATION_INDICATOR
According to RFC-4716 section 3.3:static Ssh2PublicKeyEntryDecoder
INSTANCE
static java.util.List<java.lang.String>
START_MARKERS
static java.util.List<java.lang.String>
STOP_MARKERS
static java.util.NavigableSet<java.lang.String>
SUPPORTED_KEY_TYPES
-
Fields inherited from interface org.apache.sshd.common.config.keys.PublicKeyEntryResolver
FAILING, IGNORING
-
-
Constructor Summary
Constructors Constructor Description Ssh2PublicKeyEntryDecoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.security.PublicKey
decodePublicKey(SessionContext session, java.lang.String keyType, java.io.InputStream keyData, java.util.Map<java.lang.String,java.lang.String> headers)
java.security.PublicKey
decodePublicKeyByType(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.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)
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)
java.security.PublicKey
readPublicKey(SessionContext session, NamedResource resourceKey, java.util.List<java.lang.String> lines)
java.security.PublicKey
resolve(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:
getSupportedKeyTypes
in interfaceKeyTypeNamesSupport
- Returns:
- The case insensitive
NavigableSet
ofOpenSSH
key 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:
resolve
in interfacePublicKeyEntryResolver
- Parameters:
session
- TheSessionContext
for invoking this load command - may benull
if not invoked within a session context (e.g., offline tool or session unknown).keyType
- TheOpenSSH
reported key typekeyData
- TheOpenSSH
encoded 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:
decodePublicKey
in interfacePublicKeyRawDataDecoder<java.security.PublicKey>
- Parameters:
session
- TheSessionContext
for invoking this command - may benull
if 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:
decodePublicKeyByType
in interfacePublicKeyRawDataDecoder<java.security.PublicKey>
- Throws:
java.io.IOException
java.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:
readPublicKey
in interfacePublicKeyRawDataReader<java.security.PublicKey>
- Throws:
java.io.IOException
java.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.IOException
java.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.IOException
java.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.IOException
java.security.GeneralSecurityException
-
-