public class RSAOaepParameterSpec extends RSAOaepPSourceParameterSpec implements java.lang.Cloneable
PKCS#1v2.1 defines the following parameters for the OAEP encryption scheme:
RSASES-OAEP-params :: = SEQUENCE { hashAlgorithm [0] HashAlgorithm DEFAULT sha1, maskGenerationAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, pSourceAlgorithm [2] PSourceAlgorithm DEFAULT pSpecifiedEmpty, } HashAlgorithm ::= Algorithmidentifier { {OAEP-PSSDigestAlgorithms} } MaskGenAlgorithm ::= AlgorithmIdentifier { {PKCS1MGFAlgorithms} } PSourceAlgorithm ::= AlgorithmIdentifier { {PKCS1PSourceAlgorithms} }By default OAEP uses SHA-1 as hash function, MGF1 (with SHA-1 as hash function parameter) as mask generation algorithm, and id-pSpecified as PSourceAlgorithm (with an empty OCTET STRING as parameter).
Hash algorithm, mask generation function, and PSourceAlgorithm have to be
supplied when creating a
creating
a RSAOaepParameterSpec object, e.g.:
// hash, mgf and pSource algorithm ids AlgorithmID hashID = (AlgorithmID) AlgorithmID.sha1.clone(); AlgorithmID mgfID = (AlgorithmID) AlgorithmID.mgf1.clone(); mgfID.setParameter(hashID.toASN1Object()); AlgorithmID pSourceID = (AlgorithmID) AlgorithmID.pSpecified.clone(); pSourceID.setParameter(new OCTET_STRING()); // hash and mgf engines MessageDigest hashEngine = hashID.getMessageDigestInstance(); MaskGenerationAlgorithm mgfEngine = mgfID.getMaskGenerationAlgorithmInstance(); MGF1ParameterSpec mgf1ParamSpec = new MGF1ParameterSpec(hashID); mgf1ParamSpec.setHashEngine(hashEngine); mgfEngine.setParameters(mgf1ParamSpec); // create the RSAOaepParameterSpec RSAOaepParameterSpec oaepParamSpec = new RSAOaepParameterSpec(hashID, mgfID, pSourceID); // set engines oaepParamSpec.setHashEngine(hashEngine); oaepParamSpec.setMGFEngine(mgfEngine);
RSAOaepParameters
,
MaskGenerationAlgorithm
,
MGF1
,
MGF1ParameterSpec
,
RSACipher
,
AlgorithmID
,
OCTET_STRING
Modifier and Type | Field and Description |
---|---|
static AlgorithmID |
DEFAULT_HASH_ALGORITHM
Default hash algorithm (SHA-1).
|
static AlgorithmID |
DEFAULT_MASK_GEN_ALGORITHM
Default mask generation algorithm (MGF1 with SHA1 as hash algorithm)
|
DEFAULT_PSOURCE_ALGORITHM, pSourceAlgorithm_
Constructor and Description |
---|
RSAOaepParameterSpec()
Creates default RSAES-OAEP parameters.
|
RSAOaepParameterSpec(AlgorithmID hashAlgorithm,
AlgorithmID maskGenAlgorithm,
AlgorithmID pSourceAlgorithm)
Creates a RSAOaepParameterSpec for the given hash algorithm, mask
generation function, and pSource algorithm.
|
RSAOaepParameterSpec(java.security.spec.AlgorithmParameterSpec paramSpec)
Creates a RSAOaepParameterSpec from the given AlgorithmParameterSpec.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Returns a clone of this Object.
|
boolean |
equals(java.lang.Object obj)
Compares this RSAOaepParameterSpec object with the supplied object.
|
java.lang.Boolean |
getEncodeDefaultValues()
This method shows if parameter values should be encoded even if they have
the default values; e.g.
|
AlgorithmID |
getHashAlgorithm()
Returns the hash algorithm.
|
java.security.MessageDigest |
getHashEngine()
Gets the JCA MessageDigest engine used for data hashing.
|
AlgorithmID |
getMaskGenAlgorithm()
Gets the mask generation algorithm.
|
MaskGenerationAlgorithm |
getMGFEngine()
Gets the MaskGenerationAlgorithm engine.
|
int |
hashCode()
Gets a hash code for this object.
|
void |
setEncodeDefaultValues(java.lang.Boolean encode)
With this method, the application can define that parameter values should
be encoded even if they have the default values; e.g.
|
void |
setHashEngine(java.security.MessageDigest hashEngine)
Sets the JCA MessageDigest engine to be used for data hashing.
|
void |
setMGFEngine(MaskGenerationAlgorithm mgfEngine)
Sets the MaskGenerationAlgorithm engine to be used.
|
java.lang.String |
toString()
Returns a string representation of this RSAOaepParameterSpec.
|
getDefault, getLabel, getPSourceAlgorithm, setLabel
getSecureRandom, setSecureRandom
public static final AlgorithmID DEFAULT_HASH_ALGORITHM
public static final AlgorithmID DEFAULT_MASK_GEN_ALGORITHM
public RSAOaepParameterSpec()
By default OAEP uses SHA-1 as hash function, MGF1 (with SHA-1 as hash function parameter) as mask generation algorithm, and id-pSpecified as PSourceAlgorithm (with an empty OCTET STRING as parameter), see (see PKCS#1v2.1:
RSASES-OAEP-params :: = SEQUENCE { hashAlgorithm [0] HashAlgorithm DEFAULT sha1, maskGenerationAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, pSourceAlgorithm [2] PSourceAlgorithm DEFAULT pSpecifiedEmpty, } HashAlgorithm ::= Algorithmidentifier { {OAEP-PSSDigestAlgorithms} } MaskGenAlgorithm ::= AlgorithmIdentifier { {PKCS1MGFAlgorithms} } PSourceAlgorithm ::= AlgorithmIdentifier { {PKCS1PSourceAlgorithms} }
public RSAOaepParameterSpec(AlgorithmID hashAlgorithm, AlgorithmID maskGenAlgorithm, AlgorithmID pSourceAlgorithm)
hashAlgorithm
- the hash algorithm to be usedjava.lang.IllegalArgumentException
- if hashAlgorithm or maskGenAlgorithm or pSourceAlgorithm are
nullpublic RSAOaepParameterSpec(java.security.spec.AlgorithmParameterSpec paramSpec) throws java.security.InvalidAlgorithmParameterException
paramSpec
- the RSA-OAEP parameter spec which has to be a RSAOaepParameterSpec or
a javax.crypto.spec.OaepParameterSpecjava.lang.IllegalArgumentException
- if paramSpec does not represent a valid RSA-OAEP parameter specjava.security.InvalidAlgorithmParameterException
public AlgorithmID getHashAlgorithm()
public AlgorithmID getMaskGenAlgorithm()
public void setHashEngine(java.security.MessageDigest hashEngine)
This method may be used to set a JCA MessageDigest engine to be used for
doing the any required hashing operations. If not set by this method,
getHashEngine
will try to create a MessageDigest
engine from the hash algorithm id.
hashEngine
- the JCA MessageDigest engine to be usedpublic java.security.MessageDigest getHashEngine() throws java.security.NoSuchAlgorithmException
If method setHashEngine
has been used to set a
MessageDigest engine, this engine is returned; otherwise it is tried to
create a MessageDigest engine from the hash algorithm id.
java.security.NoSuchAlgorithmException
public void setMGFEngine(MaskGenerationAlgorithm mgfEngine)
This method may be used to set a MaskGenerationAlgorithm engine. If not set
by this method, getMGFEngine
will try to create a
MaskGenerationAlgorithm engine from the mask generation algorithm id.
mgfEngine
- the MaskGenerationAlgorithm engine to be usedpublic MaskGenerationAlgorithm getMGFEngine() throws java.security.NoSuchAlgorithmException
If method setMGFEngine
has been used to set a MGF
engine, this engine is returned; otherwise it is tried to create a MGF
engine from the Mask generation algorithm id.
java.security.NoSuchAlgorithmException
public void setEncodeDefaultValues(java.lang.Boolean encode)
Note that these settings have higher priority than those given by the
RSAOaepParameters.getEncodeDefaultValues()
.
Note that only a value of false
results in a fully correct DER
encoding, because DER encoding required default values to be omitted.
encode
- Boolean.TRUE
to encode default values,
Boolean.False
to omit default values in the encoding.
Set to null
to use the current setting of
RSAOaepParameters.getEncodeDefaultValues()
RSAOaepParameters.setEncodeDefaultValues(boolean)
,
RSAOaepParameters.getEncodeDefaultValues()
public java.lang.Boolean getEncodeDefaultValues()
Note that these settings have higher priority than those given by the
RSAOaepParameters.getEncodeDefaultValues()
.
Note that only a value of false
results in a fully correct DER
encoding, because DER encoding required default values to be omitted.
true
if default values are encoded, false
if they are omitted in the encoding.setEncodeDefaultValues(Boolean)
,
RSAOaepParameters.setEncodeDefaultValues(boolean)
,
RSAOaepParameters.getEncodeDefaultValues()
public java.lang.Object clone()
clone
in class java.lang.Object
public int hashCode()
hashCode
in class RSAOaepPSourceParameterSpec
public boolean equals(java.lang.Object obj)
equals
in class RSAOaepPSourceParameterSpec
obj
- the object to be comparedtrue
if the two objects are RSAOaepParameterSpec
objects with same hash, mgf and pSource id; false
otherwisepublic java.lang.String toString()
toString
in class RSAOaepPSourceParameterSpec