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_KEY_TYPE_ALIASstatic java.lang.StringRSA_SHA512_KEY_TYPE_ALIASstatic 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 booleancompareRSAKeys(java.security.interfaces.RSAPrivateKey k1, java.security.interfaces.RSAPrivateKey k2)static booleancompareRSAKeys(java.security.interfaces.RSAPublicKey k1, java.security.interfaces.RSAPublicKey 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.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
-
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
-
-
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 permissionsThe 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)
-
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)
-
-