Class PublicKeyEntry
java.lang.Object
org.apache.sshd.common.config.keys.PublicKeyEntry
- All Implemented Interfaces:
Serializable,KeyTypeIndicator
- Direct Known Subclasses:
AuthorizedKeyEntry
Represents a PublicKey whose data is formatted according to the
OpenSSH format:
<key-type> <base64-encoded-public-key-data>
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final charCharacter used to denote a comment line in the keys fileprivate static final NavigableMap<String, PublicKeyEntryDataResolver> private byte[]private PublicKeyEntryDataResolverprivate Stringstatic final StringStandard suffix for SSH public key filesprivate static final longstatic final StringStandard folder name used by OpenSSH to hold key files -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionappendPublicKey(SessionContext session, Appendable sb, PublicKeyEntryResolver fallbackResolver) static <A extends Appendable>
AappendPublicKeyEntry(A sb, PublicKey key) Encodes a public key data the same way as theparsePublicKeyEntry(String)expects itstatic <A extends Appendable>
AappendPublicKeyEntry(A sb, PublicKey key, PublicKeyEntryDataResolver encoder) booleanstatic Pathbyte[]static PublicKeyEntryDataResolvergetKeyDataEntryResolver(String keyType) inthashCode()protected booleanstatic <E extends PublicKeyEntry>
EparsePublicKeyEntry(E entry, String encData) static <E extends PublicKeyEntry>
EparsePublicKeyEntry(E entry, String encData, PublicKeyEntryDataResolver decoder) static PublicKeyEntryparsePublicKeyEntry(String encData) static PublicKeyEntryparsePublicKeyEntry(String encData, PublicKeyEntryDataResolver decoder) static voidregisterKeyDataEntryResolver(String keyType, PublicKeyEntryDataResolver resolver) Registers a specialized decoder for the public key entry data bytes instead of thedefaultone.static PublicKeyEntryDataResolverresolveKeyDataEntryResolver(String keyType) resolvePublicKey(SessionContext session, Map<String, String> headers, PublicKeyEntryResolver fallbackResolver) resolvePublicKeyEntries(SessionContext session, Collection<? extends PublicKeyEntry> entries, PublicKeyEntryResolver fallbackResolver) If aPublicKeyEntryDataResolverhas been set, then uses it - otherwise uses thedefault one.voidsetKeyData(byte[] value) voidsetKeyDataResolver(PublicKeyEntryDataResolver keyDataResolver) voidsetKeyType(String value) toString()static Stringstatic StringtoString(PublicKey key, PublicKeyEntryDataResolver encoder) static PublicKeyEntryDataResolverunregisterKeyDataEntryResolver(String keyType)
-
Field Details
-
COMMENT_CHAR
public static final char COMMENT_CHARCharacter used to denote a comment line in the keys file- See Also:
-
STD_KEYFILE_FOLDER_NAME
Standard folder name used by OpenSSH to hold key files- See Also:
-
PUBKEY_FILE_SUFFIX
Standard suffix for SSH public key files- See Also:
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
KEY_DATA_RESOLVERS
-
keyType
-
keyData
private byte[] keyData -
keyDataResolver
-
-
Constructor Details
-
PublicKeyEntry
public PublicKeyEntry() -
PublicKeyEntry
-
-
Method Details
-
getKeyType
- Specified by:
getKeyTypein interfaceKeyTypeIndicator- Returns:
- The SSH key type name - e.g., "ssh-rsa", "sshd-dss" etc.
-
setKeyType
-
getKeyData
public byte[] getKeyData() -
setKeyData
public void setKeyData(byte[] value) -
getKeyDataResolver
-
setKeyDataResolver
-
resolvePublicKeyEntryDataResolver
If aPublicKeyEntryDataResolverhas been set, then uses it - otherwise uses thedefault one.- Returns:
- The resolved instance
-
resolvePublicKey
public PublicKey resolvePublicKey(SessionContext session, Map<String, String> headers, PublicKeyEntryResolver fallbackResolver) throws IOException, GeneralSecurityException- Parameters:
session- TheSessionContextfor invoking this load command - may benullif not invoked within a session context (e.g., offline tool or session unknown).headers- Any headers that may have been available when data was readfallbackResolver- ThePublicKeyEntryResolverto consult if none of the built-in ones can be used. Ifnulland no built-in resolver can be used then anInvalidKeySpecExceptionis thrown.- Returns:
- The resolved
PublicKey- ornullif could not be resolved. Note: may be called only after key type and data bytes have been set or exception(s) may be thrown - Throws:
IOException- If failed to decode the keyGeneralSecurityException- If failed to generate the key
-
appendPublicKey
public PublicKey appendPublicKey(SessionContext session, Appendable sb, PublicKeyEntryResolver fallbackResolver) throws IOException, GeneralSecurityException - Parameters:
session- TheSessionContextfor invoking this command - may benullif not invoked within a session context (e.g., offline tool or session unknown).sb- TheAppendableinstance to encode the data intofallbackResolver- ThePublicKeyEntryResolverto consult if none of the built-in ones can be used. Ifnulland no built-in resolver can be used then anInvalidKeySpecExceptionis thrown.- Returns:
- The
PublicKeyornullif could not resolve it - Throws:
IOException- If failed to decode/encode the keyGeneralSecurityException- If failed to generate the key- See Also:
-
hashCode
public int hashCode() -
isEquivalent
-
equals
-
toString
-
resolvePublicKeyEntries
public static List<PublicKey> resolvePublicKeyEntries(SessionContext session, Collection<? extends PublicKeyEntry> entries, PublicKeyEntryResolver fallbackResolver) throws IOException, GeneralSecurityException - Parameters:
session- TheSessionContextfor invoking this command - may benullif not invoked within a session context (e.g., offline tool or session unknown).entries- The entries to convert - ignored ifnull/emptyfallbackResolver- ThePublicKeyEntryResolverto consult if none of the built-in ones can be used. Ifnulland no built-in resolver can be used then anInvalidKeySpecExceptionis thrown.- Returns:
- The
Listof allPublicKey-s that have been resolved - Throws:
IOException- If failed to decode the key dataGeneralSecurityException- If failed to generate thePublicKeyfrom the decoded data- See Also:
-
registerKeyDataEntryResolver
public static void registerKeyDataEntryResolver(String keyType, PublicKeyEntryDataResolver resolver) Registers a specialized decoder for the public key entry data bytes instead of thedefaultone.- Parameters:
keyType- The key-type value (case insensitive) that will trigger the usage of this decoder - e.g., "ssh-rsa", "pgp-sign-dss", etc.resolver- The decoder to use
-
getKeyDataEntryResolver
- Parameters:
keyType- The key-type value (case insensitive) that may have been previouslyregistered- e.g., "ssh-rsa", "pgp-sign-dss", etc.- Returns:
- The registered resolver instance -
nullif none was registered
-
unregisterKeyDataEntryResolver
- Parameters:
keyType- The key-type value (case insensitive) that may have been previouslyregistered- e.g., "ssh-rsa", "pgp-sign-dss", etc.- Returns:
- The un-registered resolver instance -
nullif none was registered
-
resolveKeyDataEntryResolver
- Parameters:
keyType- keyType The key-type value (case insensitive) whose data is to be resolved - e.g., "ssh-rsa", "pgp-sign-dss", etc.- Returns:
- If a specific resolver has been previously
registeredthen uses it, otherwise thedefaultone.
-
getRegisteredKeyDataEntryResolvers
- Returns:
- A snapshot of the currently registered specialized
PublicKeyEntryDataResolver-s, where key=the key-type value (case insensitive) - e.g., "ssh-rsa", "pgp-sign-dss", etc., value=the associatedPublicKeyEntryDataResolverfor the key type
-
parsePublicKeyEntry
- Parameters:
encData- Assumed to contain at leastkey-type base64-data(anything beyond the BASE64 data is ignored) - ignored ifnull/empty- Returns:
- A
PublicKeyEntryornullif no data - Throws:
IllegalArgumentException- if bad format found- See Also:
-
parsePublicKeyEntry
public static PublicKeyEntry parsePublicKeyEntry(String encData, PublicKeyEntryDataResolver decoder) throws IllegalArgumentException - Parameters:
encData- Assumed to contain at leastkey-type base64-data(anything beyond the BASE64 data is ignored) - ignored ifnull/emptydecoder- ThePublicKeyEntryDataResolverto use in order to decode the key data string into its bytes - ifnullthen one is automaticallyresolved- Returns:
- A
PublicKeyEntryornullif no data - Throws:
IllegalArgumentException- if bad format found- See Also:
-
parsePublicKeyEntry
public static <E extends PublicKeyEntry> E parsePublicKeyEntry(E entry, String encData) throws IllegalArgumentException - Type Parameters:
E- The generic entry type- Parameters:
entry- ThePublicKeyEntrywhose contents are to be updated - ignored ifnullencData- Assumed to contain at leastkey-type base64-data(anything beyond the BASE64 data is ignored) - ignored ifnull/empty- Returns:
- The updated entry instance
- Throws:
IllegalArgumentException- if bad format found- See Also:
-
parsePublicKeyEntry
public static <E extends PublicKeyEntry> E parsePublicKeyEntry(E entry, String encData, PublicKeyEntryDataResolver decoder) throws IllegalArgumentException - Type Parameters:
E- The generic entry type- Parameters:
entry- ThePublicKeyEntrywhose contents are to be updated - ignored ifnullencData- Assumed to contain at leastkey-type base64-data(anything beyond the BASE64 data is ignored) - ignored ifnull/emptydecoder- ThePublicKeyEntryDataResolverto use in order to decode the key data string into its bytes - ifnullthen one is automaticallyresolved- Returns:
- The updated entry instance
- Throws:
IllegalArgumentException- if bad format found
-
toString
- Parameters:
key- ThePublicKey- Returns:
- The
OpenSSHencoded data - Throws:
IllegalArgumentException- If failed to encode- See Also:
-
toString
public static String toString(PublicKey key, PublicKeyEntryDataResolver encoder) throws IllegalArgumentException - Parameters:
key- ThePublicKeyencoder- ThePublicKeyEntryDataResolverto use in order to encode the key data bytes into a string representation - ifnullthen one is automaticallyresolved- Returns:
- The
OpenSSHencoded data - Throws:
IllegalArgumentException- If failed to encode- See Also:
-
appendPublicKeyEntry
Encodes a public key data the same way as theparsePublicKeyEntry(String)expects it- Type Parameters:
A- The generic appendable class- Parameters:
sb- TheAppendableinstance to encode the data intokey- ThePublicKey- ignored ifnull- Returns:
- The updated appendable instance
- Throws:
IOException- If failed to append the data- See Also:
-
appendPublicKeyEntry
public static <A extends Appendable> A appendPublicKeyEntry(A sb, PublicKey key, PublicKeyEntryDataResolver encoder) throws IOException - Type Parameters:
A- The generic appendable class- Parameters:
sb- TheAppendableinstance to encode the data intokey- ThePublicKey- ignored ifnullencoder- ThePublicKeyEntryDataResolverto use in order to encode the key data bytes into a string representation - ifnullthen one is automaticallyresolved- Returns:
- The updated appendable instance
- Throws:
IOException- If failed to append the data
-
getDefaultKeysFolderPath
- Returns:
- The default OpenSSH folder used to hold key files - e.g.,
known_hosts,authorized_keys, etc.
-