Class Ssh2PublicKeyEntryDecoder
java.lang.Object
org.apache.sshd.common.config.keys.loader.ssh2.Ssh2PublicKeyEntryDecoder
- All Implemented Interfaces:
KeyTypeNamesSupport, PublicKeyEntryResolver, PublicKeyRawDataDecoder<PublicKey>, PublicKeyRawDataReader<PublicKey>
public class Ssh2PublicKeyEntryDecoder
extends Object
implements PublicKeyRawDataDecoder<PublicKey>, PublicKeyEntryResolver, PublicKeyRawDataReader<PublicKey>, KeyTypeNamesSupport
Decodes a public key file encoded according to The Secure Shell (SSH)
Public Key File Format
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final charAccording to RFC-4716 section 3.3:static final Ssh2PublicKeyEntryDecoderstatic final NavigableSet<String> Fields inherited from interface PublicKeyEntryResolver
FAILING, IGNORING, UNSUPPORTED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondecodePublicKey(SessionContext session, String keyType, InputStream keyData, Map<String, String> headers) decodePublicKeyByType(SessionContext session, String keyType, InputStream keyData, Map<String, String> headers) readPublicKey(SessionContext session, NamedResource resourceKey, String beginMarker, String endMarker, byte[] dataBytes, Map<String, String> headers) readPublicKey(SessionContext session, NamedResource resourceKey, String beginMarker, String endMarker, List<String> lines, Map<String, String> headers) readPublicKey(SessionContext session, NamedResource resourceKey, List<String> lines) separateDataLinesFromHeaders(SessionContext session, NamedResource resourceKey, String startLine, String endLine, List<String> lines) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface PublicKeyRawDataDecoder
decodePublicKey, decodePublicKeyMethods inherited from interface PublicKeyRawDataReader
readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey, readPublicKey
-
Field Details
-
SUPPORTED_KEY_TYPES
-
BEGIN_MARKER
- See Also:
-
START_MARKERS
-
END_MARKER
- See Also:
-
STOP_MARKERS
-
HEADER_CONTINUATION_INDICATOR
public static final char HEADER_CONTINUATION_INDICATORAccording 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:
-
INSTANCE
-
-
Constructor Details
-
Ssh2PublicKeyEntryDecoder
public Ssh2PublicKeyEntryDecoder()
-
-
Method Details
-
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 PublicKey resolve(SessionContext session, String keyType, byte[] keyData, Map<String, String> headers) throws IOException, 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:
IOException- If failed to parse the key dataGeneralSecurityException- If failed to generate the key
-
decodePublicKey
public PublicKey decodePublicKey(SessionContext session, String keyType, InputStream keyData, Map<String, String> headers) throws IOException, GeneralSecurityException- Specified by:
decodePublicKeyin interfacePublicKeyRawDataDecoder<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:
IOException- If failed to read from the data streamGeneralSecurityException- If failed to generate the key
-
decodePublicKeyByType
public PublicKey decodePublicKeyByType(SessionContext session, String keyType, InputStream keyData, Map<String, String> headers) throws IOException, GeneralSecurityException- Specified by:
decodePublicKeyByTypein interfacePublicKeyRawDataDecoder<PublicKey>- Throws:
IOExceptionGeneralSecurityException
-
readPublicKey
public PublicKey readPublicKey(SessionContext session, NamedResource resourceKey, List<String> lines) throws IOException, GeneralSecurityException - Specified by:
readPublicKeyin interfacePublicKeyRawDataReader<PublicKey>- Throws:
IOExceptionGeneralSecurityException
-
readPublicKey
public PublicKey readPublicKey(SessionContext session, NamedResource resourceKey, String beginMarker, String endMarker, List<String> lines, Map<String, String> headers) throws IOException, GeneralSecurityException- Throws:
IOExceptionGeneralSecurityException
-
readPublicKey
public PublicKey readPublicKey(SessionContext session, NamedResource resourceKey, String beginMarker, String endMarker, byte[] dataBytes, Map<String, String> headers) throws IOException, GeneralSecurityException- Throws:
IOExceptionGeneralSecurityException
-
separateDataLinesFromHeaders
protected Map.Entry<Map<String,String>, List<String>> separateDataLinesFromHeaders(SessionContext session, NamedResource resourceKey, String startLine, String endLine, List<String> lines) throws IOException, GeneralSecurityException - Throws:
IOExceptionGeneralSecurityException
-