Class AuthorizedKeyEntry
- java.lang.Object
-
- org.apache.sshd.common.config.keys.PublicKeyEntry
-
- org.apache.sshd.common.config.keys.AuthorizedKeyEntry
-
- All Implemented Interfaces:
java.io.Serializable
,KeyTypeIndicator
public class AuthorizedKeyEntry extends PublicKeyEntry
Represents an entry in the user'sauthorized_keys
file according to the OpenSSH format. Note:equals/hashCode
check only the key type and data - the comment and/or login options are not considered part of equality
-
-
Field Summary
Fields Modifier and Type Field Description static char
BOOLEAN_OPTION_NEGATION_INDICATOR
private java.lang.String
comment
private java.util.Map<java.lang.String,java.lang.String>
loginOptions
private static long
serialVersionUID
-
Fields inherited from class org.apache.sshd.common.config.keys.PublicKeyEntry
COMMENT_CHAR, STD_KEYFILE_FOLDER_NAME
-
-
Constructor Summary
Constructors Constructor Description AuthorizedKeyEntry()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,java.lang.String>
addLoginOption(java.util.Map<java.lang.String,java.lang.String> optsMap, java.lang.String option)
Parses and adds a new option to the options map.java.security.PublicKey
appendPublicKey(SessionContext session, java.lang.Appendable sb, PublicKeyEntryResolver fallbackResolver)
boolean
equals(java.lang.Object obj)
java.lang.String
getComment()
java.util.Map<java.lang.String,java.lang.String>
getLoginOptions()
int
hashCode()
static AuthorizedKeyEntry
parseAuthorizedKeyEntry(java.lang.String value)
static AuthorizedKeyEntry
parseAuthorizedKeyEntry(java.lang.String value, PublicKeyEntryDataResolver resolver)
static java.util.NavigableMap<java.lang.String,java.lang.String>
parseLoginOptions(java.lang.String options)
Parses login options line according to sshd(8) - AUTHORIZED_KEYS_FILE_FORMAT guidelines.static java.util.List<AuthorizedKeyEntry>
readAuthorizedKeys(java.io.BufferedReader rdr)
static java.util.List<AuthorizedKeyEntry>
readAuthorizedKeys(java.io.InputStream in, boolean okToClose)
Reads read the contents of anauthorized_keys
filestatic java.util.List<AuthorizedKeyEntry>
readAuthorizedKeys(java.io.Reader rdr, boolean okToClose)
Reads read the contents of anauthorized_keys
filestatic java.util.List<AuthorizedKeyEntry>
readAuthorizedKeys(java.net.URL url)
Reads read the contents of anauthorized_keys
filestatic java.util.List<AuthorizedKeyEntry>
readAuthorizedKeys(java.nio.file.Path path, java.nio.file.OpenOption... options)
Reads read the contents of anauthorized_keys
filestatic java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,java.lang.String>
resolveEntryComponents(java.lang.String entryLine)
Parses a single line from anauthorized_keys
file that is known to contain login options and separates it to the options and the rest of the line.java.security.PublicKey
resolvePublicKey(SessionContext session, PublicKeyEntryResolver fallbackResolver)
void
setComment(java.lang.String value)
void
setLoginOptions(java.util.Map<java.lang.String,java.lang.String> value)
java.lang.String
toString()
-
Methods inherited from class org.apache.sshd.common.config.keys.PublicKeyEntry
appendPublicKeyEntry, appendPublicKeyEntry, getDefaultKeysFolderPath, getKeyData, getKeyDataEntryResolver, getKeyDataResolver, getKeyType, getRegisteredKeyDataEntryResolvers, isEquivalent, parsePublicKeyEntry, parsePublicKeyEntry, parsePublicKeyEntry, parsePublicKeyEntry, registerKeyDataEntryResolver, resolveKeyDataEntryResolver, resolvePublicKey, resolvePublicKeyEntries, resolvePublicKeyEntryDataResolver, setKeyData, setKeyDataResolver, setKeyType, toString, toString, unregisterKeyDataEntryResolver
-
-
-
-
Field Detail
-
BOOLEAN_OPTION_NEGATION_INDICATOR
public static final char BOOLEAN_OPTION_NEGATION_INDICATOR
- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
comment
private java.lang.String comment
-
loginOptions
private java.util.Map<java.lang.String,java.lang.String> loginOptions
-
-
Method Detail
-
getComment
public java.lang.String getComment()
-
setComment
public void setComment(java.lang.String value)
-
getLoginOptions
public java.util.Map<java.lang.String,java.lang.String> getLoginOptions()
-
setLoginOptions
public void setLoginOptions(java.util.Map<java.lang.String,java.lang.String> value)
-
resolvePublicKey
public java.security.PublicKey resolvePublicKey(SessionContext session, PublicKeyEntryResolver fallbackResolver) throws java.io.IOException, java.security.GeneralSecurityException
- Parameters:
session
- TheSessionContext
for invoking this load command - may benull
if not invoked within a session context (e.g., offline tool or session unknown).fallbackResolver
- ThePublicKeyEntryResolver
to consult if none of the built-in ones can be used. Ifnull
and no built-in resolver can be used then anInvalidKeySpecException
is thrown.- Returns:
- The resolved
PublicKey
- ornull
if 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:
java.io.IOException
- If failed to decode the keyjava.security.GeneralSecurityException
- If failed to generate the key- See Also:
PublicKeyEntry.resolvePublicKey(SessionContext, Map, PublicKeyEntryResolver)
-
appendPublicKey
public java.security.PublicKey appendPublicKey(SessionContext session, java.lang.Appendable sb, PublicKeyEntryResolver fallbackResolver) throws java.io.IOException, java.security.GeneralSecurityException
- Overrides:
appendPublicKey
in classPublicKeyEntry
- Parameters:
session
- TheSessionContext
for invoking this command - may benull
if not invoked within a session context (e.g., offline tool or session unknown).sb
- TheAppendable
instance to encode the data intofallbackResolver
- ThePublicKeyEntryResolver
to consult if none of the built-in ones can be used. Ifnull
and no built-in resolver can be used then anInvalidKeySpecException
is thrown.- Returns:
- The
PublicKey
ornull
if could not resolve it - Throws:
java.io.IOException
- If failed to decode/encode the keyjava.security.GeneralSecurityException
- If failed to generate the key- See Also:
PublicKeyEntry.resolvePublicKey(SessionContext, Map, PublicKeyEntryResolver)
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classPublicKeyEntry
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classPublicKeyEntry
-
toString
public java.lang.String toString()
- Overrides:
toString
in classPublicKeyEntry
-
readAuthorizedKeys
public static java.util.List<AuthorizedKeyEntry> readAuthorizedKeys(java.net.URL url) throws java.io.IOException
Reads read the contents of anauthorized_keys
file- Parameters:
url
- TheURL
to read from- Returns:
- A
List
of all theAuthorizedKeyEntry
-ies found there - Throws:
java.io.IOException
- If failed to read or parse the entries- See Also:
readAuthorizedKeys(InputStream, boolean)
-
readAuthorizedKeys
public static java.util.List<AuthorizedKeyEntry> readAuthorizedKeys(java.nio.file.Path path, java.nio.file.OpenOption... options) throws java.io.IOException
Reads read the contents of anauthorized_keys
file- Parameters:
path
-Path
to read fromoptions
- TheOpenOption
s to use - if unspecified then appropriate defaults assumed- Returns:
- A
List
of all theAuthorizedKeyEntry
-ies found there - Throws:
java.io.IOException
- If failed to read or parse the entries- See Also:
readAuthorizedKeys(InputStream, boolean)
,Files.newInputStream(Path, OpenOption...)
-
readAuthorizedKeys
public static java.util.List<AuthorizedKeyEntry> readAuthorizedKeys(java.io.InputStream in, boolean okToClose) throws java.io.IOException
Reads read the contents of anauthorized_keys
file- Parameters:
in
- TheInputStream
to use to read the contents of anauthorized_keys
fileokToClose
-true
if method may close the input regardless success or failure- Returns:
- A
List
of all theAuthorizedKeyEntry
-ies found there - Throws:
java.io.IOException
- If failed to read or parse the entries- See Also:
readAuthorizedKeys(Reader, boolean)
-
readAuthorizedKeys
public static java.util.List<AuthorizedKeyEntry> readAuthorizedKeys(java.io.Reader rdr, boolean okToClose) throws java.io.IOException
Reads read the contents of anauthorized_keys
file- Parameters:
rdr
- TheReader
to use to read the contents of anauthorized_keys
fileokToClose
-true
if method may close the input regardless success or failure- Returns:
- A
List
of all theAuthorizedKeyEntry
-ies found there - Throws:
java.io.IOException
- If failed to read or parse the entries- See Also:
readAuthorizedKeys(BufferedReader)
-
readAuthorizedKeys
public static java.util.List<AuthorizedKeyEntry> readAuthorizedKeys(java.io.BufferedReader rdr) throws java.io.IOException
- Parameters:
rdr
- TheBufferedReader
to use to read the contents of anauthorized_keys
file- Returns:
- A
List
of all theAuthorizedKeyEntry
-ies found there - Throws:
java.io.IOException
- If failed to read or parse the entries- See Also:
parseAuthorizedKeyEntry(String)
-
parseAuthorizedKeyEntry
public static AuthorizedKeyEntry parseAuthorizedKeyEntry(java.lang.String value) throws java.lang.IllegalArgumentException
- Parameters:
value
- Original line from anauthorized_keys
file- Returns:
AuthorizedKeyEntry
ornull
if the line isnull
/empty or a comment line- Throws:
java.lang.IllegalArgumentException
- If failed to parse/decode the line- See Also:
parseAuthorizedKeyEntry(String, PublicKeyEntryDataResolver)
-
parseAuthorizedKeyEntry
public static AuthorizedKeyEntry parseAuthorizedKeyEntry(java.lang.String value, PublicKeyEntryDataResolver resolver) throws java.lang.IllegalArgumentException
- Parameters:
value
- Original line from anauthorized_keys
fileresolver
- ThePublicKeyEntryDataResolver
to use - ifnull
one will be automatically resolved from the key type- Returns:
AuthorizedKeyEntry
ornull
if the line isnull
/empty or a comment line- Throws:
java.lang.IllegalArgumentException
- If failed to parse/decode the line
-
resolveEntryComponents
public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,java.lang.String> resolveEntryComponents(java.lang.String entryLine)
Parses a single line from anauthorized_keys
file that is known to contain login options and separates it to the options and the rest of the line.- Parameters:
entryLine
- The line to be parsed- Returns:
- A
AbstractMap.SimpleImmutableEntry
representing the parsed data where key=login options part and value=rest of the data -null
if no data in line or line starts with comment character - See Also:
- sshd(8) - AUTHORIZED_KEYS_FILE_FORMAT
-
parseLoginOptions
public static java.util.NavigableMap<java.lang.String,java.lang.String> parseLoginOptions(java.lang.String options)
Parses login options line according to sshd(8) - AUTHORIZED_KEYS_FILE_FORMAT guidelines. Note:
- Options that have a value are automatically stripped of any surrounding double quotes./
- Options that have no value are marked as
true/false
- according to theBOOLEAN_OPTION_NEGATION_INDICATOR
. - Options that appear multiple times are simply concatenated using comma as separator.
- Parameters:
options
- The options line to parse - ignored ifnull
/empty/blank- Returns:
- A
NavigableMap
where key=case insensitive option name and value=the parsed value. - See Also:
addLoginOption
-
addLoginOption
public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,java.lang.String> addLoginOption(java.util.Map<java.lang.String,java.lang.String> optsMap, java.lang.String option)
Parses and adds a new option to the options map. If a valued option is re-specified then its value(s) are concatenated using comma as separator.- Parameters:
optsMap
- Options map to add tooption
- The option data to parse - ignored ifnull
/empty/blank- Returns:
- The updated entry -
null
if no option updated in the map - Throws:
java.lang.IllegalStateException
- If a boolean option is re-specified
-
-