Class KeyUtils
- java.lang.Object
-
- org.apache.sshd.common.config.keys.KeyUtils
-
public final class KeyUtils extends java.lang.ObjectUtility class for keys
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Map<java.lang.Class<?>,PublicKeyEntryDecoder<?,?>>BY_KEY_CLASS_DECODERS_MAPprivate static java.util.Map<java.lang.String,PublicKeyEntryDecoder<?,?>>BY_KEY_TYPE_DECODERS_MAPprivate static java.util.concurrent.atomic.AtomicReference<DigestFactory>DEFAULT_DIGEST_HOLDERstatic DigestFactoryDEFAULT_FINGERPRINT_DIGEST_FACTORYThe defaultFactoryofDigests initialized as the value ofgetDefaultFingerPrintFactory()if not overridden byKEY_FINGERPRINT_FACTORY_PROPorsetDefaultFingerPrintFactory(DigestFactory)static java.math.BigIntegerDEFAULT_RSA_PUBLIC_EXPONENTThe most commonly used RSA public key exponentstatic java.lang.StringDSS_ALGORITHMName of algorithm for DSS keys to be used when calling security providerstatic java.lang.StringEC_ALGORITHMName of algorithm for EC keys to be used when calling security providerstatic java.lang.StringKEY_FINGERPRINT_FACTORY_PROPSystem property that can be used to control the default fingerprint factory used for keys.private static java.util.Map<java.lang.String,java.lang.String>KEY_TYPE_ALIASESstatic java.lang.StringRSA_ALGORITHMName of algorithm for RSA keys to be used when calling security providerstatic java.lang.StringRSA_SHA256_CERT_TYPE_ALIASstatic java.lang.StringRSA_SHA256_KEY_TYPE_ALIASstatic java.lang.StringRSA_SHA512_CERT_TYPE_ALIASstatic java.lang.StringRSA_SHA512_KEY_TYPE_ALIASprivate static java.util.Map<java.lang.String,java.lang.String>SIGNATURE_ALGORITHM_MAPstatic java.util.Set<java.nio.file.attribute.PosixFilePermission>STRICTLY_PROHIBITED_FILE_PERMISSIONTheSetofPosixFilePermissionnot allowed if strict permissions are enforced on key files
-
Constructor Summary
Constructors Modifier Constructor Description privateKeyUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.util.AbstractMap.SimpleImmutableEntry<java.lang.Boolean,java.lang.String>checkFingerPrint(java.lang.String expected, java.security.PublicKey key)static java.util.AbstractMap.SimpleImmutableEntry<java.lang.Boolean,java.lang.String>checkFingerPrint(java.lang.String expected, Digest d, java.security.PublicKey key)static java.util.AbstractMap.SimpleImmutableEntry<java.lang.Boolean,java.lang.String>checkFingerPrint(java.lang.String expected, Factory<? extends Digest> f, java.security.PublicKey key)static java.security.KeyPaircloneKeyPair(java.lang.String keyType, java.security.KeyPair kp)Performs a deep-clone of the originalKeyPair- i.e., creates new public/private keys that are clones of the original onestatic booleancompareDSAKeys(java.security.interfaces.DSAPrivateKey k1, java.security.interfaces.DSAPrivateKey k2)static booleancompareDSAKeys(java.security.interfaces.DSAPublicKey k1, java.security.interfaces.DSAPublicKey k2)static booleancompareDSAParams(java.security.interfaces.DSAParams p1, java.security.interfaces.DSAParams p2)static booleancompareECKeys(java.security.interfaces.ECPrivateKey k1, java.security.interfaces.ECPrivateKey k2)static booleancompareECKeys(java.security.interfaces.ECPublicKey k1, java.security.interfaces.ECPublicKey k2)static booleancompareECParams(java.security.spec.ECParameterSpec s1, java.security.spec.ECParameterSpec s2)static booleancompareKeyPairs(java.security.KeyPair k1, java.security.KeyPair k2)static booleancompareKeys(java.security.PrivateKey k1, java.security.PrivateKey k2)static booleancompareKeys(java.security.PublicKey k1, java.security.PublicKey k2)static booleancompareOpenSSHCertificateKeys(OpenSshCertificate k1, OpenSshCertificate k2)static booleancompareRSAKeys(java.security.interfaces.RSAPrivateKey k1, java.security.interfaces.RSAPrivateKey k2)static booleancompareRSAKeys(java.security.interfaces.RSAPublicKey k1, java.security.interfaces.RSAPublicKey k2)static booleancompareSkEcdsaKeys(SkEcdsaPublicKey k1, SkEcdsaPublicKey k2)static booleancompareSkEd25519Keys(SkED25519PublicKey k1, SkED25519PublicKey k2)static java.security.PublicKeyfindMatchingKey(java.security.PublicKey key, java.security.PublicKey... keySet)static java.security.PublicKeyfindMatchingKey(java.security.PublicKey key, java.util.Collection<? extends java.security.PublicKey> keySet)static java.security.KeyPairgenerateKeyPair(java.lang.String keyType, int keySize)static java.util.List<java.lang.String>getAllEquivalentKeyTypes(java.lang.String keyType)static java.lang.StringgetCanonicalKeyType(java.lang.String keyType)static DigestFactorygetDefaultFingerPrintFactory()static java.lang.StringgetFingerPrint(java.lang.String password)static java.lang.StringgetFingerPrint(java.lang.String password, java.nio.charset.Charset charset)static java.lang.StringgetFingerPrint(java.security.PublicKey key)static java.lang.StringgetFingerPrint(Digest d, java.lang.String s)static java.lang.StringgetFingerPrint(Digest d, java.lang.String s, java.nio.charset.Charset charset)static java.lang.StringgetFingerPrint(Digest d, java.security.PublicKey key)static java.lang.StringgetFingerPrint(Factory<? extends Digest> f, java.lang.String s)static java.lang.StringgetFingerPrint(Factory<? extends Digest> f, java.lang.String s, java.nio.charset.Charset charset)static java.lang.StringgetFingerPrint(Factory<? extends Digest> f, java.security.PublicKey key)static intgetKeySize(java.security.Key key)Determines the key size in bitsstatic java.lang.StringgetKeyType(java.security.Key key)static java.lang.StringgetKeyType(java.security.KeyPair kp)static PublicKeyEntryDecoder<?,?>getPublicKeyEntryDecoder(java.lang.Class<?> keyType)static PublicKeyEntryDecoder<?,?>getPublicKeyEntryDecoder(java.lang.String keyType)static PublicKeyEntryDecoder<?,?>getPublicKeyEntryDecoder(java.security.Key key)static PublicKeyEntryDecoder<?,?>getPublicKeyEntryDecoder(java.security.KeyPair kp)static byte[]getRawFingerprint(java.security.PublicKey key)static byte[]getRawFingerprint(Digest d, java.security.PublicKey key)static byte[]getRawFingerprint(Factory<? extends Digest> f, java.security.PublicKey key)static java.util.NavigableSet<java.lang.String>getRegisteredKeyTypeAliases()static java.lang.StringgetSignatureAlgorithm(java.lang.String chosenAlgorithm, java.security.PublicKey key)static java.security.interfaces.DSAPublicKeyrecoverDSAPublicKey(java.security.interfaces.DSAPrivateKey privateKey)static java.security.interfaces.RSAPublicKeyrecoverFromRSAPrivateCrtKey(java.security.interfaces.RSAPrivateCrtKey rsaKey)static java.security.PublicKeyrecoverPublicKey(java.security.PrivateKey key)static java.security.interfaces.RSAPublicKeyrecoverRSAPublicKey(java.math.BigInteger modulus, java.math.BigInteger publicExponent)static java.security.interfaces.RSAPublicKeyrecoverRSAPublicKey(java.math.BigInteger p, java.math.BigInteger q, java.math.BigInteger publicExponent)static java.security.interfaces.RSAPublicKeyrecoverRSAPublicKey(java.security.interfaces.RSAPrivateKey privateKey)static java.util.List<java.lang.String>registerCanonicalKeyTypes(java.lang.String keyType, java.util.Collection<java.lang.String> aliases)Registers a collection of aliases to a canonical key typestatic voidregisterPublicKeyEntryDecoder(PublicKeyEntryDecoder<?,?> decoder)static PublicKeyEntryDecoder<?,?>registerPublicKeyEntryDecoderForKeyType(java.lang.String keyType, PublicKeyEntryDecoder<?,?> decoder)static voidregisterPublicKeyEntryDecoderKeyTypes(PublicKeyEntryDecoder<?,?> decoder)Registers the specified decoder for all the types itsupportsstatic voidsetDefaultFingerPrintFactory(DigestFactory f)static java.lang.StringunregisterCanonicalKeyTypeAlias(java.lang.String alias)static java.util.NavigableSet<java.lang.String>unregisterPublicKeyEntryDecoder(PublicKeyEntryDecoder<?,?> decoder)static PublicKeyEntryDecoder<?,?>unregisterPublicKeyEntryDecoderForKeyType(java.lang.String keyType)Unregister the decoder registered for the specified key typestatic java.util.NavigableSet<java.lang.String>unregisterPublicKeyEntryDecoderKeyTypes(PublicKeyEntryDecoder<?,?> decoder)Unregisters the specified decoder for all the types it supportsstatic java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,java.lang.Object>validateStrictKeyFilePermissions(java.nio.file.Path path, java.nio.file.LinkOption... options)Checks if a path has strict permissions
-
-
-
Field Detail
-
RSA_ALGORITHM
public static final java.lang.String RSA_ALGORITHM
Name of algorithm for RSA keys to be used when calling security provider- See Also:
- Constant Field Values
-
DEFAULT_RSA_PUBLIC_EXPONENT
public static final java.math.BigInteger DEFAULT_RSA_PUBLIC_EXPONENT
The most commonly used RSA public key exponent
-
DSS_ALGORITHM
public static final java.lang.String DSS_ALGORITHM
Name of algorithm for DSS keys to be used when calling security provider- See Also:
- Constant Field Values
-
EC_ALGORITHM
public static final java.lang.String EC_ALGORITHM
Name of algorithm for EC keys to be used when calling security provider- See Also:
- Constant Field Values
-
STRICTLY_PROHIBITED_FILE_PERMISSION
public static final java.util.Set<java.nio.file.attribute.PosixFilePermission> STRICTLY_PROHIBITED_FILE_PERMISSION
TheSetofPosixFilePermissionnot allowed if strict permissions are enforced on key files
-
KEY_FINGERPRINT_FACTORY_PROP
public static final java.lang.String KEY_FINGERPRINT_FACTORY_PROP
System property that can be used to control the default fingerprint factory used for keys. If not set theDEFAULT_FINGERPRINT_DIGEST_FACTORYis used- See Also:
- Constant Field Values
-
DEFAULT_FINGERPRINT_DIGEST_FACTORY
public static final DigestFactory DEFAULT_FINGERPRINT_DIGEST_FACTORY
The defaultFactoryofDigests initialized as the value ofgetDefaultFingerPrintFactory()if not overridden byKEY_FINGERPRINT_FACTORY_PROPorsetDefaultFingerPrintFactory(DigestFactory)
-
RSA_SHA256_KEY_TYPE_ALIAS
public static final java.lang.String RSA_SHA256_KEY_TYPE_ALIAS
-
RSA_SHA512_KEY_TYPE_ALIAS
public static final java.lang.String RSA_SHA512_KEY_TYPE_ALIAS
- See Also:
- Constant Field Values
-
RSA_SHA256_CERT_TYPE_ALIAS
public static final java.lang.String RSA_SHA256_CERT_TYPE_ALIAS
- See Also:
- Constant Field Values
-
RSA_SHA512_CERT_TYPE_ALIAS
public static final java.lang.String RSA_SHA512_CERT_TYPE_ALIAS
- See Also:
- Constant Field Values
-
DEFAULT_DIGEST_HOLDER
private static final java.util.concurrent.atomic.AtomicReference<DigestFactory> DEFAULT_DIGEST_HOLDER
-
BY_KEY_TYPE_DECODERS_MAP
private static final java.util.Map<java.lang.String,PublicKeyEntryDecoder<?,?>> BY_KEY_TYPE_DECODERS_MAP
-
BY_KEY_CLASS_DECODERS_MAP
private static final java.util.Map<java.lang.Class<?>,PublicKeyEntryDecoder<?,?>> BY_KEY_CLASS_DECODERS_MAP
-
KEY_TYPE_ALIASES
private static final java.util.Map<java.lang.String,java.lang.String> KEY_TYPE_ALIASES
-
SIGNATURE_ALGORITHM_MAP
private static final java.util.Map<java.lang.String,java.lang.String> SIGNATURE_ALGORITHM_MAP
-
-
Method Detail
-
validateStrictKeyFilePermissions
public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,java.lang.Object> validateStrictKeyFilePermissions(java.nio.file.Path path, java.nio.file.LinkOption... options) throws java.io.IOExceptionChecks if a path has strict permissions
-
The path may not have
PosixFilePermission.OTHERS_EXECUTEpermission -
(For
Unix) The path may not have group or others permissions -
(For
Unix) If the path is a file, then its folder may not have group or others permissions -
The path must be owned by current user.
-
(For
Unix) The path may be owned by root. -
(For
Unix) If the path is a file, then its folder must also have valid owner.
- Parameters:
path- ThePathto be checked - ignored ifnullor does not existoptions- TheLinkOptions to use to query the file's permissions- Returns:
- The violated permission as
AbstractMap.SimpleImmutableEntrywhere key is a message and value is the offending objectPosixFilePermissionorStringfor owner -nullif no violations detected - Throws:
java.io.IOException- If failed to retrieve the permissions- See Also:
STRICTLY_PROHIBITED_FILE_PERMISSION
-
-
generateKeyPair
public static java.security.KeyPair generateKeyPair(java.lang.String keyType, int keySize) throws java.security.GeneralSecurityException- Parameters:
keyType- The key type -OpenSSHname - e.g.,ssh-rsa, ssh-dsskeySize- The key size (in bits)- Returns:
- A
KeyPairof the specified type and size - Throws:
java.security.GeneralSecurityException- If failed to generate the key pair- See Also:
getPublicKeyEntryDecoder(String),KeyEntryResolver.generateKeyPair(int)
-
cloneKeyPair
public static java.security.KeyPair cloneKeyPair(java.lang.String keyType, java.security.KeyPair kp) throws java.security.GeneralSecurityExceptionPerforms a deep-clone of the originalKeyPair- i.e., creates new public/private keys that are clones of the original one- Parameters:
keyType- The key type -OpenSSHname - e.g.,ssh-rsa, ssh-dsskp- TheKeyPairto clone - ignored ifnull- Returns:
- The cloned instance
- Throws:
java.security.GeneralSecurityException- If failed to clone the pair
-
registerPublicKeyEntryDecoder
public static void registerPublicKeyEntryDecoder(PublicKeyEntryDecoder<?,?> decoder)
- Parameters:
decoder- The decoder to register- Throws:
java.lang.IllegalArgumentException- if no decoder or not key type or no supported names for the decoder- See Also:
IdentityResourceLoader.getPublicKeyType(),KeyTypeNamesSupport.getSupportedKeyTypes()
-
registerPublicKeyEntryDecoderKeyTypes
public static void registerPublicKeyEntryDecoderKeyTypes(PublicKeyEntryDecoder<?,?> decoder)
Registers the specified decoder for all the types itsupports- Parameters:
decoder- The (nevernull)decoderto register- See Also:
registerPublicKeyEntryDecoderForKeyType(String, PublicKeyEntryDecoder)
-
registerPublicKeyEntryDecoderForKeyType
public static PublicKeyEntryDecoder<?,?> registerPublicKeyEntryDecoderForKeyType(java.lang.String keyType, PublicKeyEntryDecoder<?,?> decoder)
- Parameters:
keyType- The key (nevernull/empty) key typedecoder- The (nevernull)decoderto register- Returns:
- The previously registered decoder for this key type -
nullif none
-
unregisterPublicKeyEntryDecoder
public static java.util.NavigableSet<java.lang.String> unregisterPublicKeyEntryDecoder(PublicKeyEntryDecoder<?,?> decoder)
- Parameters:
decoder- The (nevernull)decoderto unregister- Returns:
- The case insensitive
NavigableSetof all the effectively un-registered key types out of all thesupportedones. - See Also:
unregisterPublicKeyEntryDecoderKeyTypes(PublicKeyEntryDecoder)
-
unregisterPublicKeyEntryDecoderKeyTypes
public static java.util.NavigableSet<java.lang.String> unregisterPublicKeyEntryDecoderKeyTypes(PublicKeyEntryDecoder<?,?> decoder)
Unregisters the specified decoder for all the types it supports- Parameters:
decoder- The (nevernull)decoderto unregister- Returns:
- The case insensitive
NavigableSetof all the effectively un-registered key types out of all thesupportedones. - See Also:
unregisterPublicKeyEntryDecoderForKeyType(String)
-
unregisterPublicKeyEntryDecoderForKeyType
public static PublicKeyEntryDecoder<?,?> unregisterPublicKeyEntryDecoderForKeyType(java.lang.String keyType)
Unregister the decoder registered for the specified key type- Parameters:
keyType- The key (nevernull/empty) key type- Returns:
- The unregistered
PublicKeyEntryDecoder-nullif none registered for this key type
-
getPublicKeyEntryDecoder
public static PublicKeyEntryDecoder<?,?> getPublicKeyEntryDecoder(java.lang.String keyType)
- Parameters:
keyType- TheOpenSSHkey type string - e.g.,ssh-rsa, ssh-dss- ignored ifnull/empty- Returns:
- The registered
PublicKeyEntryDecoderor {code null} if not found
-
getPublicKeyEntryDecoder
public static PublicKeyEntryDecoder<?,?> getPublicKeyEntryDecoder(java.security.KeyPair kp)
- Parameters:
kp- TheKeyPairto examine - ignored ifnull- Returns:
- The matching
PublicKeyEntryDecoderprovided both the public and private keys have the same decoder -nullif no match found - See Also:
getPublicKeyEntryDecoder(Key)
-
getPublicKeyEntryDecoder
public static PublicKeyEntryDecoder<?,?> getPublicKeyEntryDecoder(java.security.Key key)
- Parameters:
key- TheKey(public or private) - ignored ifnull- Returns:
- The registered
PublicKeyEntryDecoderfor this key or {code null} if no match found - See Also:
getPublicKeyEntryDecoder(Class)
-
getPublicKeyEntryDecoder
public static PublicKeyEntryDecoder<?,?> getPublicKeyEntryDecoder(java.lang.Class<?> keyType)
- Parameters:
keyType- The keyClass- ignored ifnullor not aKeycompatible type- Returns:
- The registered
PublicKeyEntryDecoderor {code null} if no match found
-
getDefaultFingerPrintFactory
public static DigestFactory getDefaultFingerPrintFactory()
- Returns:
- The default
DigestFactoryby thegetFingerPrint(PublicKey)andgetFingerPrint(String)methods - See Also:
KEY_FINGERPRINT_FACTORY_PROP,setDefaultFingerPrintFactory(DigestFactory)
-
setDefaultFingerPrintFactory
public static void setDefaultFingerPrintFactory(DigestFactory f)
- Parameters:
f- TheDigestFactoryofDigests to be used - may not benull
-
getFingerPrint
public static java.lang.String getFingerPrint(java.security.PublicKey key)
- Parameters:
key- the public key - ignored ifnull- Returns:
- the fingerprint or
nullif no key. Note: if exception encountered then returns the exception's simple class name - See Also:
getFingerPrint(Factory, PublicKey)
-
getFingerPrint
public static java.lang.String getFingerPrint(java.lang.String password)
- Parameters:
password- TheStringto digest - ignored ifnull/empty, otherwise its UTF-8 representation is used as input for the fingerprint- Returns:
- The fingerprint -
nullifnull/empty input. Note: if exception encountered then returns the exception's simple class name - See Also:
getFingerPrint(String, Charset)
-
getFingerPrint
public static java.lang.String getFingerPrint(java.lang.String password, java.nio.charset.Charset charset)- Parameters:
password- TheStringto digest - ignored ifnull/emptycharset- TheCharsetto use in order to convert the string to its byte representation to use as input for the fingerprint- Returns:
- The fingerprint -
nullifnull/empty input. Note: if exception encountered then returns the exception's simple class name - See Also:
getFingerPrint(Factory, String, Charset),getDefaultFingerPrintFactory()
-
getFingerPrint
public static java.lang.String getFingerPrint(Factory<? extends Digest> f, java.security.PublicKey key)
- Parameters:
f- TheFactoryto create theDigestto usekey- the public key - ignored ifnull- Returns:
- the fingerprint or
nullif no key. Note: if exception encountered then returns the exception's simple class name - See Also:
getFingerPrint(Digest, PublicKey)
-
getFingerPrint
public static java.lang.String getFingerPrint(Digest d, java.security.PublicKey key)
- Parameters:
d- TheDigestto usekey- the public key - ignored ifnull- Returns:
- the fingerprint or
nullif no key. Note: if exception encountered then returns the exception's simple class name - See Also:
DigestUtils.getFingerPrint(Digest, byte[], int, int)
-
getRawFingerprint
public static byte[] getRawFingerprint(java.security.PublicKey key) throws java.lang.Exception- Throws:
java.lang.Exception
-
getRawFingerprint
public static byte[] getRawFingerprint(Factory<? extends Digest> f, java.security.PublicKey key) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getRawFingerprint
public static byte[] getRawFingerprint(Digest d, java.security.PublicKey key) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getFingerPrint
public static java.lang.String getFingerPrint(Factory<? extends Digest> f, java.lang.String s)
- Parameters:
f- TheFactoryto create theDigestto uses- TheStringto digest - ignored ifnull/empty, otherwise its UTF-8 representation is used as input for the fingerprint- Returns:
- The fingerprint -
nullifnull/empty input. Note: if exception encountered then returns the exception's simple class name - See Also:
getFingerPrint(Digest, String, Charset)
-
getFingerPrint
public static java.lang.String getFingerPrint(Factory<? extends Digest> f, java.lang.String s, java.nio.charset.Charset charset)
- Parameters:
f- TheFactoryto create theDigestto uses- TheStringto digest - ignored ifnull/emptycharset- TheCharsetto use in order to convert the string to its byte representation to use as input for the fingerprint- Returns:
- The fingerprint -
nullifnull/empty input Note: if exception encountered then returns the exception's simple class name - See Also:
DigestUtils.getFingerPrint(Digest, String, Charset)
-
getFingerPrint
public static java.lang.String getFingerPrint(Digest d, java.lang.String s)
- Parameters:
d- TheDigestto uses- TheStringto digest - ignored ifnull/empty, otherwise its UTF-8 representation is used as input for the fingerprint- Returns:
- The fingerprint -
nullifnull/empty input. Note: if exception encountered then returns the exception's simple class name - See Also:
DigestUtils.getFingerPrint(Digest, String, Charset)
-
getFingerPrint
public static java.lang.String getFingerPrint(Digest d, java.lang.String s, java.nio.charset.Charset charset)
- Parameters:
d- TheDigestto use to calculate the fingerprints- The string to digest - ignored ifnull/emptycharset- TheCharsetto use in order to convert the string to its byte representation to use as input for the fingerprint- Returns:
- The fingerprint -
nullifnull/empty input. Note: if exception encountered then returns the exception's simple class name - See Also:
DigestUtils.getFingerPrint(Digest, String, Charset)
-
checkFingerPrint
public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.Boolean,java.lang.String> checkFingerPrint(java.lang.String expected, java.security.PublicKey key)- Parameters:
expected- The expected fingerprint ifnullor empty then returns a failure with the default fingerprint.key- thePublicKey- ifnullthen returns null.- Returns:
- SimpleImmutableEntry
- key is success indicator, value is actual fingerprint, nullif no key. - See Also:
getDefaultFingerPrintFactory(),checkFingerPrint(String, Factory, PublicKey)
-
checkFingerPrint
public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.Boolean,java.lang.String> checkFingerPrint(java.lang.String expected, Factory<? extends Digest> f, java.security.PublicKey key)- Parameters:
expected- The expected fingerprint ifnullor empty then returns a failure with the default fingerprint.f- TheFactoryto be used to generate the defaultDigestfor the keykey- thePublicKey- ifnullthen returns null.- Returns:
- SimpleImmutableEntry
- key is success indicator, value is actual fingerprint, nullif no key.
-
checkFingerPrint
public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.Boolean,java.lang.String> checkFingerPrint(java.lang.String expected, Digest d, java.security.PublicKey key)- Parameters:
expected- The expected fingerprint ifnullor empty then returns a failure with the default fingerprint.d- TheDigestto be used to generate the default fingerprint for the keykey- thePublicKey- ifnullthen returns null.- Returns:
- SimpleImmutableEntry
- key is success indicator, value is actual fingerprint, nullif no key.
-
getKeyType
public static java.lang.String getKeyType(java.security.KeyPair kp)
- Parameters:
kp- a key pair - ignored ifnull. If the private key is non-nullthen it is used to determine the type, otherwise the public one is used.- Returns:
- the key type or
nullif cannot determine it - See Also:
getKeyType(Key)
-
getKeyType
public static java.lang.String getKeyType(java.security.Key key)
- Parameters:
key- a public or private key- Returns:
- the key type or
nullif cannot determine it
-
getAllEquivalentKeyTypes
public static java.util.List<java.lang.String> getAllEquivalentKeyTypes(java.lang.String keyType)
- Parameters:
keyType- A key type name - ignored ifnull/empty- Returns:
- A
Listof they canonical key name and all its aliases - See Also:
getCanonicalKeyType(String)
-
getCanonicalKeyType
public static java.lang.String getCanonicalKeyType(java.lang.String keyType)
- Parameters:
keyType- The available key-type - ignored ifnull/empty- Returns:
- The canonical key type - same as input if no alias registered for the provided key type
- See Also:
RSA_SHA256_KEY_TYPE_ALIAS,RSA_SHA512_KEY_TYPE_ALIAS
-
getRegisteredKeyTypeAliases
public static java.util.NavigableSet<java.lang.String> getRegisteredKeyTypeAliases()
- Returns:
- A case insensitive
NavigableSetof the currently registered key type "aliases". - See Also:
getCanonicalKeyType(String)
-
registerCanonicalKeyTypes
public static java.util.List<java.lang.String> registerCanonicalKeyTypes(java.lang.String keyType, java.util.Collection<java.lang.String> aliases)Registers a collection of aliases to a canonical key type- Parameters:
keyType- The (nevernull/empty) canonical namealiases- The (nevernull/empty) aliases- Returns:
- A
Listof the replaced aliases - empty if no previous aliases for the canonical name
-
unregisterCanonicalKeyTypeAlias
public static java.lang.String unregisterCanonicalKeyTypeAlias(java.lang.String alias)
- Parameters:
alias- The alias to unregister (ignored ifnull/empty)- Returns:
- The associated canonical key type -
nullif alias not registered
-
getKeySize
public static int getKeySize(java.security.Key key)
Determines the key size in bits- Parameters:
key- TheKeyto examine - ignored ifnull- Returns:
- The key size - non-positive value if cannot determine it
-
findMatchingKey
public static java.security.PublicKey findMatchingKey(java.security.PublicKey key, java.security.PublicKey... keySet)- Parameters:
key- ThePublicKeyto be checked - ignored ifnullkeySet- The keys to be searched - ignored ifnull/empty- Returns:
- The matching
PublicKeyfrom the keys ornullif no match found - See Also:
compareKeys(PublicKey, PublicKey)
-
findMatchingKey
public static java.security.PublicKey findMatchingKey(java.security.PublicKey key, java.util.Collection<? extends java.security.PublicKey> keySet)- Parameters:
key- ThePublicKeyto be checked - ignored ifnullkeySet- The keys to be searched - ignored ifnull/empty- Returns:
- The matching
PublicKeyfrom the keys ornullif no match found - See Also:
compareKeys(PublicKey, PublicKey)
-
compareKeyPairs
public static boolean compareKeyPairs(java.security.KeyPair k1, java.security.KeyPair k2)
-
compareKeys
public static boolean compareKeys(java.security.PublicKey k1, java.security.PublicKey k2)
-
recoverPublicKey
public static java.security.PublicKey recoverPublicKey(java.security.PrivateKey key) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
compareKeys
public static boolean compareKeys(java.security.PrivateKey k1, java.security.PrivateKey k2)
-
compareRSAKeys
public static boolean compareRSAKeys(java.security.interfaces.RSAPublicKey k1, java.security.interfaces.RSAPublicKey k2)
-
compareRSAKeys
public static boolean compareRSAKeys(java.security.interfaces.RSAPrivateKey k1, java.security.interfaces.RSAPrivateKey k2)
-
compareOpenSSHCertificateKeys
public static boolean compareOpenSSHCertificateKeys(OpenSshCertificate k1, OpenSshCertificate k2)
-
recoverRSAPublicKey
public static java.security.interfaces.RSAPublicKey recoverRSAPublicKey(java.security.interfaces.RSAPrivateKey privateKey) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
recoverFromRSAPrivateCrtKey
public static java.security.interfaces.RSAPublicKey recoverFromRSAPrivateCrtKey(java.security.interfaces.RSAPrivateCrtKey rsaKey) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
recoverRSAPublicKey
public static java.security.interfaces.RSAPublicKey recoverRSAPublicKey(java.math.BigInteger p, java.math.BigInteger q, java.math.BigInteger publicExponent) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
recoverRSAPublicKey
public static java.security.interfaces.RSAPublicKey recoverRSAPublicKey(java.math.BigInteger modulus, java.math.BigInteger publicExponent) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
compareDSAKeys
public static boolean compareDSAKeys(java.security.interfaces.DSAPublicKey k1, java.security.interfaces.DSAPublicKey k2)
-
compareDSAKeys
public static boolean compareDSAKeys(java.security.interfaces.DSAPrivateKey k1, java.security.interfaces.DSAPrivateKey k2)
-
compareDSAParams
public static boolean compareDSAParams(java.security.interfaces.DSAParams p1, java.security.interfaces.DSAParams p2)
-
recoverDSAPublicKey
public static java.security.interfaces.DSAPublicKey recoverDSAPublicKey(java.security.interfaces.DSAPrivateKey privateKey) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
compareECKeys
public static boolean compareECKeys(java.security.interfaces.ECPrivateKey k1, java.security.interfaces.ECPrivateKey k2)
-
compareECKeys
public static boolean compareECKeys(java.security.interfaces.ECPublicKey k1, java.security.interfaces.ECPublicKey k2)
-
compareECParams
public static boolean compareECParams(java.security.spec.ECParameterSpec s1, java.security.spec.ECParameterSpec s2)
-
compareSkEcdsaKeys
public static boolean compareSkEcdsaKeys(SkEcdsaPublicKey k1, SkEcdsaPublicKey k2)
-
compareSkEd25519Keys
public static boolean compareSkEd25519Keys(SkED25519PublicKey k1, SkED25519PublicKey k2)
-
getSignatureAlgorithm
public static java.lang.String getSignatureAlgorithm(java.lang.String chosenAlgorithm, java.security.PublicKey key)
-
-