Enum ScramMechanisms
- java.lang.Object
-
- java.lang.Enum<ScramMechanisms>
-
- com.impossibl.postgres.protocol.sasl.scram.ScramMechanisms
-
- All Implemented Interfaces:
ScramMechanism
,Serializable
,Comparable<ScramMechanisms>
public enum ScramMechanisms extends Enum<ScramMechanisms> implements ScramMechanism
SCRAM Mechanisms supported by this library. At least, SCRAM-SHA-1 and SCRAM-SHA-256 are provided, since both the hash and the HMAC implementations are provided by the Java JDK version 6 or greater.MessageDigest
: "Every implementation of the Java platform is required to support the following standard MessageDigest algorithms: MD5, SHA-1, SHA-256".Mac
: "Every implementation of the Java platform is required to support the following standard Mac algorithms: HmacMD5, HmacSHA1, HmacSHA256".- See Also:
- SASL SCRAM Family Mechanisms
-
-
Enum Constant Summary
Enum Constants Enum Constant Description SCRAM_SHA_1
SCRAM_SHA_1_PLUS
SCRAM_SHA_256
SCRAM_SHA_256_PLUS
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
algorithmKeyLength()
Returns the length of the key length of the algorithm.static ScramMechanisms
byName(String name)
Gets a SCRAM mechanism, given its standard IANA name.byte[]
digest(byte[] message)
Calculate a message digest, according to the algorithm of the SCRAM mechanism.protected String
getHashAlgorithmName()
Method that returns the name of the hash algorithm.protected String
getHmacAlgorithmName()
Method that returns the name of the HMAC algorithm.String
getName()
The name of the mechanism, which must be a value registered under IANA: SASL SCRAM Family Mechanismsbyte[]
hmac(byte[] key, byte[] message)
Calculate the hmac of a key and a message, according to the algorithm of the SCRAM mechanism.boolean
requiresChannelBinding()
Whether this mechanism requires channel bindingbyte[]
saltedPassword(StringPreparation stringPreparation, String password, byte[] salt, int iterations)
Compute the salted passwordstatic ScramMechanisms
valueOf(String name)
Returns the enum constant of this type with the specified name.static ScramMechanisms[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
SCRAM_SHA_1
public static final ScramMechanisms SCRAM_SHA_1
-
SCRAM_SHA_1_PLUS
public static final ScramMechanisms SCRAM_SHA_1_PLUS
-
SCRAM_SHA_256
public static final ScramMechanisms SCRAM_SHA_256
-
SCRAM_SHA_256_PLUS
public static final ScramMechanisms SCRAM_SHA_256_PLUS
-
-
Method Detail
-
values
public static ScramMechanisms[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (ScramMechanisms c : ScramMechanisms.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static ScramMechanisms valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is null
-
getHashAlgorithmName
protected String getHashAlgorithmName()
Method that returns the name of the hash algorithm. It is protected since should be of no interest for direct users. The instance is supposed to provide abstractions over the algorithm names, and are not meant to be directly exposed.- Returns:
- The name of the hash algorithm
-
getHmacAlgorithmName
protected String getHmacAlgorithmName()
Method that returns the name of the HMAC algorithm. It is protected since should be of no interest for direct users. The instance is supposed to provide abstractions over the algorithm names, and are not meant to be directly exposed.- Returns:
- The name of the HMAC algorithm
-
getName
public String getName()
Description copied from interface:ScramMechanism
The name of the mechanism, which must be a value registered under IANA: SASL SCRAM Family Mechanisms- Specified by:
getName
in interfaceScramMechanism
- Returns:
- The mechanism name
-
requiresChannelBinding
public boolean requiresChannelBinding()
Description copied from interface:ScramMechanism
Whether this mechanism requires channel binding- Specified by:
requiresChannelBinding
in interfaceScramMechanism
- Returns:
- True if it supports channel binding, false otherwise
-
algorithmKeyLength
public int algorithmKeyLength()
Description copied from interface:ScramMechanism
Returns the length of the key length of the algorithm.- Specified by:
algorithmKeyLength
in interfaceScramMechanism
- Returns:
- The length (in bits)
-
digest
public byte[] digest(byte[] message)
Description copied from interface:ScramMechanism
Calculate a message digest, according to the algorithm of the SCRAM mechanism.- Specified by:
digest
in interfaceScramMechanism
- Parameters:
message
- the message- Returns:
- The calculated message digest
-
hmac
public byte[] hmac(byte[] key, byte[] message)
Description copied from interface:ScramMechanism
Calculate the hmac of a key and a message, according to the algorithm of the SCRAM mechanism.- Specified by:
hmac
in interfaceScramMechanism
- Parameters:
key
- the keymessage
- the message- Returns:
- The calculated message hmac instance
-
saltedPassword
public byte[] saltedPassword(StringPreparation stringPreparation, String password, byte[] salt, int iterations)
Description copied from interface:ScramMechanism
Compute the salted password- Specified by:
saltedPassword
in interfaceScramMechanism
- Returns:
- The salted password
-
byName
public static ScramMechanisms byName(String name)
Gets a SCRAM mechanism, given its standard IANA name.- Parameters:
name
- The standard IANA full name of the mechanism.- Returns:
- An Optional instance that contains the ScramMechanism if it was found, or empty otherwise.
-
-