public class IaikProvider extends SecurityProvider
SecurityProviderALG_CIPHER_3DES, ALG_CIPHER_AES, ALG_CIPHER_AES_CCM, ALG_CIPHER_AES_GCM, ALG_CIPHER_AES_PKCS5, ALG_CIPHER_CAMELLIA, ALG_CIPHER_CAMELLIA_GCM, ALG_CIPHER_CHACHA20_POLY1305, ALG_CIPHER_DES, ALG_CIPHER_IDEA, ALG_CIPHER_RC2, ALG_CIPHER_RC4, ALG_CIPHER_RSA, ALG_CIPHER_RSA_DECRYPT, ALG_CIPHER_RSA_ENCRYPT, ALG_CIPHER_RSA_ENCRYPT_SSL2, ALG_CIPHER_RSA_SIGN, ALG_CIPHER_RSA_VERIFY, ALG_DIGEST_MD5, ALG_DIGEST_SHA, ALG_DIGEST_SHA1, ALG_DIGEST_SHA224, ALG_DIGEST_SHA256, ALG_DIGEST_SHA384, ALG_DIGEST_SHA512, ALG_HMAC_MD5, ALG_HMAC_SHA, ALG_HMAC_SHA256, ALG_HMAC_SHA384, ALG_HMAC_SHA512, ALG_KEM_MLKEM1024, ALG_KEM_MLKEM512, ALG_KEM_MLKEM768, ALG_KEYEX_DH, ALG_KEYEX_DSA, ALG_KEYEX_DSA_CLIENT, ALG_KEYEX_ECDH, ALG_KEYEX_ECDSA, ALG_KEYEX_ECDSA_CLIENT, ALG_KEYEX_RSA, ALG_KEYGEN_AES, ALG_KEYGEN_HMAC_SHA, ALG_KEYGEN_HMAC_SHA256, ALG_KEYGEN_PBKDF2, ALG_KEYPAIR_RSA, ALG_SIGNATURE_MD5RSA, ALG_SIGNATURE_RAWDSA, ALG_SIGNATURE_RAWECDSA, ALG_SIGNATURE_RAWRSAPSS, ALG_SIGNATURE_SHA1ECDSA, ALG_SIGNATURE_SHA1RSA, ALG_SIGNATURE_SHA224ECDSA, ALG_SIGNATURE_SHA224RSA, ALG_SIGNATURE_SHA256ECDSA, ALG_SIGNATURE_SHA256RSA, ALG_SIGNATURE_SHA384ECDSA, ALG_SIGNATURE_SHA384RSA, ALG_SIGNATURE_SHA512ECDSA, ALG_SIGNATURE_SHA512RSA, ALG_SIGNATURE_SHADSA, ALG_SIGNATURE_SHAECDSA, CIPHER_DECRYPT, CIPHER_ENCRYPT, CIPHER_NONE, configuration_, CONFIGURATION_PROPERTIES, KEYAGREEMENT_INIT, KEYAGREEMENT_NONE, provider, providerName, SIGNATURE_NONE, SIGNATURE_SIGN, SIGNATURE_VERIFY| Constructor and Description |
|---|
IaikProvider()
Default Constructor.
|
IaikProvider(boolean installIAIKProvider)
Default Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
protected int |
aeadDecrypt(javax.crypto.Cipher cipher,
javax.crypto.SecretKey key,
byte[] in,
int inOff,
int inLen,
byte[] out,
int outOff,
byte[] aad,
byte[] nonce,
int macSize)
Uses the given cipher to AEAD decrypt the given encrypted data with the
given key.
|
protected int |
aeadEncrypt(javax.crypto.Cipher cipher,
javax.crypto.SecretKey key,
byte[] in,
int inOff,
int inLen,
byte[] out,
int outOff,
byte[] aad,
byte[] nonce,
int macSize,
java.security.SecureRandom random)
Uses the given cipher to AEAD encrypt the given data with the given key.
|
byte[] |
calculateTrustedAuthorityIdentifier(int type,
java.security.cert.X509Certificate certificate)
Calculates a
TrustedAuthority identifier of the
given type from the given certificate. |
boolean |
canBeUsedWithKey(SignatureAndHashAlgorithm signatureAlgorithm,
java.security.PublicKey publicKey)
Checks if the given SignatureAndHashAlgorithm can be used with the given
public key.
|
protected boolean |
checkCreatedRSAServerKeyExchangeSignature()
Asks whether to check an RSA ServerKeyExchange signature immediately after
signature creation.
|
boolean |
checkExtendedKeyUsage(java.security.cert.X509Certificate cert,
boolean clientAuth)
Checks if the ExtendedKeyUsage of the given client/server certificate
enables the certificate for client/server authentication.
|
byte[] |
createCertStatusRequest(int statusType)
Creates a status request to be sent within a
status_request extension. |
byte[] |
createPkiPath(java.security.cert.X509Certificate[] certificates)
Creates a DER encoded PKI path from the given (client) certificate chain.
|
javax.crypto.SecretKey |
deriveKey(java.lang.String algorithm,
char[] password,
byte[] salt,
int iterationCount,
int keyLen,
java.lang.String keyName,
java.security.SecureRandom random)
Uses the specified key derivation function to derive a key from the given
password.
|
protected javax.crypto.Cipher |
getCipher(java.lang.String algorithm,
int mode,
java.security.Key key,
java.security.spec.AlgorithmParameterSpec param,
java.security.SecureRandom random)
Return an implementation for the requested algorithm from the IAIK
provider.
|
protected javax.crypto.interfaces.DHPrivateKey |
getDHPrivateKey(java.math.BigInteger x,
java.math.BigInteger p,
java.math.BigInteger g)
This method returns an IAIK DHPrivateKey instance created from the given
values.
|
protected javax.crypto.interfaces.DHPublicKey |
getDHPublicKey(java.math.BigInteger y,
java.math.BigInteger p,
java.math.BigInteger g)
This method returns an IAIK DHPublicKey instance created from the given
values.
|
protected byte[] |
getEncodedPrincipal(java.security.Principal principal)
This method returns a DER encoded Principal assuming it is an IAIK Name
object.
|
protected java.security.MessageDigest |
getMessageDigest(java.lang.String algorithm)
This method returns the desired MessageDigest object.
|
protected java.security.Principal |
getPrincipal(byte[] array)
This method returns a Principal (IAIK Name object) created from a DER
encoded byte array.
|
protected java.security.spec.AlgorithmParameterSpec |
getRSAPssParameterSpec(java.lang.String hashAlgName)
Creates a RSAPssParameterSpec from the given hash algorithm name.
|
protected java.security.interfaces.RSAPublicKey |
getRSAPublicKey(java.math.BigInteger modulus,
java.math.BigInteger exponent)
This method returns an IAIK RSAPublicKey instance created from the given
values.
|
protected java.security.SecureRandom |
getSecureRandom()
Return an instance of the default SecureRandom class set in
iaik.security.random.SecRandom. |
protected java.security.Signature |
getSignature(java.lang.String algorithm,
int mode,
java.security.Key key,
java.security.SecureRandom random)
Return an implementation for the requested algorithm from the IAIK
provider.
|
ServerName[] |
getTLSServerName(int nameType,
java.security.cert.X509Certificate serverCert)
Gets the TLS server name(s) from the given certificate.
|
protected java.lang.String[] |
getTLSServerName(java.security.cert.X509Certificate cert)
Return the TLS servername from the certificate.
|
protected java.security.cert.X509Certificate |
getX509Certificate(byte[] array)
This method returns an IAIK X509Certificate instance created from a DER
encoded byte array.
|
java.security.cert.X509Certificate |
getX509Certificate(java.io.InputStream is)
This method parses a DER encoded X509Certificate from an input stream.
|
java.security.cert.X509Certificate[] |
getX509Certificates(byte[] pkiPath)
This method parses a certificate array from a DER encoded PKI path as used
by the TLS extension Client Certificate URLs (RFC 4366).
|
java.security.KeyStore |
loadKeyStore(java.lang.String keyStoreFile,
char[] keyStorePassword,
java.lang.String keyStoreType,
java.security.Provider keyStoreProvider)
Loads a KeyStore from the given file protected with the given password.
|
java.security.KeyStore |
loadKeyStore(java.lang.String keyStoreFile,
char[] keyStorePassword,
java.lang.String keyStoreType,
java.lang.String keyStoreProvider)
Loads a KeyStore from the given file protected with the given password.
|
calculateRawSignature, calculateRawSignature, canBeUsedWithKey, canBeUsedWithKey, canBeUsedWithKey, canBeUsedWithVersion, checkCertSignatureAlgorithm, checkCertSignatureAlgorithm, checkCertSignatureAlgorithm, checkIfOnSameCurve, checkKeyECPointFormat, checkKeyEllipticCurve, checkKeyLength, checkKeyLength, continueIfPeerDoesNotSupportSecureRenegotiation, createSharedECDHSecret, decapsulate, decodeECPublicKey, decodeECPublicKey, decodePqcPublicKey, decodeURL, encapsulate, encodeECPublicKey, encodePqcPublicKey, encodeURL, generateECKeyPair, generateECKeyPair, generateECKeyPair, generateExtendedMasterSecret, generateMasterSecret, generateMasterSecret, generatePqcKeyPair, getAlgorithmParameterGenerator, getCurve, getCurve, getCurve, getCurveName, getCurveName, getDefaultCurve, getECPointFormat, getKeyAgreement, getKeyGenerator, getKeyLength, getKeyLength, getKeyLength, getKeyPairGenerator, getMac, getMacLength, getNamedCurve, getSecurityProvider, getSignature, getSignatureAlgorithms, getSignatureAlgorithms, getSignatureScheme, getTLSServerName, getTLSServerName, isBinary, isImplemented, isImplemented, isImplementedSignatureAlgorithm, isNamedCurveSupported, isNamedGroupSupported, isPointFormatSupported, setImplementationCheckDebugStream, setSecurityProvider, validateDHPublicKey, verifyRawSignaturepublic IaikProvider()
public IaikProvider(boolean installIAIKProvider)
installIAIKProvider - whether to install the IAIK provider within the JCA framework or
not (from JDK 1.4 upwards it is possible to use JCA engines from a
Provider without installing it within the JCA/JCE frameworkprotected javax.crypto.interfaces.DHPublicKey getDHPublicKey(java.math.BigInteger y,
java.math.BigInteger p,
java.math.BigInteger g)
throws java.lang.Exception
getDHPublicKey in class SecurityProvidery - the public value yp - the prime modulus pg - the base generator gjava.lang.Exceptionprotected javax.crypto.interfaces.DHPrivateKey getDHPrivateKey(java.math.BigInteger x,
java.math.BigInteger p,
java.math.BigInteger g)
getDHPrivateKey in class SecurityProviderx - the private value xp - the prime modulus pg - the base generator gprotected java.security.interfaces.RSAPublicKey getRSAPublicKey(java.math.BigInteger modulus,
java.math.BigInteger exponent)
getRSAPublicKey in class SecurityProvidermodulus - the modulusexponent - the public exponentprotected java.security.cert.X509Certificate getX509Certificate(byte[] array)
throws java.security.cert.CertificateException
getX509Certificate in class SecurityProviderarray - a X509Certificate as DER encoded byte arrayjava.security.cert.CertificateExceptionpublic java.security.cert.X509Certificate getX509Certificate(java.io.InputStream is)
throws java.lang.Exception
getX509Certificate in class SecurityProvideris - the stream from which to read the certifictaejava.lang.Exceptionpublic java.security.cert.X509Certificate[] getX509Certificates(byte[] pkiPath)
throws java.lang.Exception
PkiPath ::= SEQUENCE OF CertificateNote that the certificates in a PKI path are ordered in a way that the client certificate is located at index (n-1). However TLS expects certificates in reverse order (client certificate at index 0). For that reason this method may have to reverse the order of the certificates parsed from the PKI path.
getX509Certificates in class SecurityProviderpkiPath - the DER encoded PKI path holding a SEQUENCE of certificatesjava.lang.Exception - if the certificates cannot be parsed from the PKI pathpublic byte[] createPkiPath(java.security.cert.X509Certificate[] certificates)
throws java.lang.Exception
PkiPath ::= SEQUENCE OF CertificateNote that the certificates in a PKI path are ordered in a way that the client certificate is located at index (n-1). However, TLS uses certificates in reverse order (client certificate at index 0). Thus, before creating the pki path, this method first may have to order the certificates in a way that the client certificate is located at index [n-1].
createPkiPath in class SecurityProvidercertificates - the (client) certificate chain from which to create the pki pathjava.lang.Exception - if the PKI path cannot be createdpublic boolean checkExtendedKeyUsage(java.security.cert.X509Certificate cert,
boolean clientAuth)
throws java.security.cert.CertificateException
checkExtendedKeyUsage in class SecurityProvidercert - the certificate to be checkedclientAuth - true if the certificate shall be used for client
authentication, false if it shall be used for server
authenticationtrue if the certificate has the
anyExtendedKeyUsage or clientAuth purpose
id set and shall be used for client authentication, or if the
certificate has the anyExtendedKeyUsage or
serverAuth purpose id set and shall be used for server
authentication, or if the certificate does not contain the
ExtendedKeyUsage at all; false in any other casejava.security.cert.CertificateException - if an error occurs when parsing the
ExtendedKeyUsage extensionprotected java.security.Principal getPrincipal(byte[] array)
throws java.lang.Exception
getPrincipal in class SecurityProviderarray - a Distinguished Name (Principal) as DER encoded byte arrayjava.lang.Exceptionprotected byte[] getEncodedPrincipal(java.security.Principal principal)
getEncodedPrincipal in class SecurityProviderprincipal - the Distinguished Name (Principal) to encodeprotected java.security.MessageDigest getMessageDigest(java.lang.String algorithm)
throws java.lang.Exception
getMessageDigest in class SecurityProvideralgorithm - the name of the algorithmjava.lang.Exceptionprotected java.security.Signature getSignature(java.lang.String algorithm,
int mode,
java.security.Key key,
java.security.SecureRandom random)
throws java.lang.Exception
getSignature in class SecurityProvideralgorithm - the name of the signature algorithmmode - the initialization mode, either
SIGNATURE_NONE,
SIGNATURE_SIGN or
SIGNATURE_VERIFY indicating
whether to not initialize the signature engine at all, or
to initialize it for signing or verifying with the given
keykey - the key to be used to initialize the Signature enginerandom - the SecureRandom to be set for the Signature enginejava.lang.Exceptionprotected java.security.spec.AlgorithmParameterSpec getRSAPssParameterSpec(java.lang.String hashAlgName)
throws java.lang.Exception
getRSAPssParameterSpec in class SecurityProviderhashAlgName - the name of the hash algorithmjava.lang.Exception - if the RSAPssParameterSpec cannot be created (e.g. no AlgorithmID
is available for the given hash algorithm name)public boolean canBeUsedWithKey(SignatureAndHashAlgorithm signatureAlgorithm, java.security.PublicKey publicKey)
canBeUsedWithKey in class SecurityProvidersignatureAlgorithm - the signature algorithmpublicKey - the public keytrue if the SignatureAndHashAlgorithm can be used with
the given key, false otherwiseprotected javax.crypto.Cipher getCipher(java.lang.String algorithm,
int mode,
java.security.Key key,
java.security.spec.AlgorithmParameterSpec param,
java.security.SecureRandom random)
throws java.lang.Exception
getCipher in class SecurityProviderjava.lang.Exceptionprotected int aeadEncrypt(javax.crypto.Cipher cipher,
javax.crypto.SecretKey key,
byte[] in,
int inOff,
int inLen,
byte[] out,
int outOff,
byte[] aad,
byte[] nonce,
int macSize,
java.security.SecureRandom random)
throws java.lang.Exception
AEAD (authenticated encryption with additional data) cipher suites have
been introduced by TLS 1.2 (RFC 5246).
They do not require a separate mac calculation because data integrity is
already ensured during AEAD encryption.
AEAD is specified in RFC 5116, AES Galois Counter Mode (GCM) Cipher Suites
for TLS are specified in RFC 5288,
and Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter
Mode (GCM) are specified in RFC 5289.
The AEAD (write) Cipher object for this method has been created by a
previous call to method getCipher and is used throughout
the entire TLS session with some specific peer. However, with any call of
this method the Cipher has to be initialized anew with the given key. This
has to be done inside the method because the AEAD parameters built from
given additional authentication data, nonce and mac size may depend on the
JCA provider that is used for encryption. After initializing the Cipher the
required update and/or doFinal calls have to be
made to encrypt inLen data bytes from the in
array and write the encrypted data to the out array, starting
at offset outOff. The output data shall consist of the
encrypted data and (followed by) the authentication tag:
encrypted data || mac.
aeadEncrypt in class SecurityProvidercipher - the AEAD (GCM) Cipher object to be used for encryptionkey - the cipher key to be used for initializing the CipherinOff - the offset indicating the start of the message data in the in byte
arrayinLen - the number of bytes to encryptout - the array to which to write the encrypted messageoutOff - the offset indicating the start position in the out byte arrayaad - the additional authentication data (not (!) cloned)nonce - the nonce (not (!) cloned)macSize - the size of the mac (authentication tag)random - the SecureRandom that may be used when random numbers are requiredjava.lang.Exception - if an error occurs during encryptionprotected int aeadDecrypt(javax.crypto.Cipher cipher,
javax.crypto.SecretKey key,
byte[] in,
int inOff,
int inLen,
byte[] out,
int outOff,
byte[] aad,
byte[] nonce,
int macSize)
throws java.lang.Exception
AEAD (authenticated encryption with additional data) cipher suites have
been introduced by TLS 1.2 (RFC 5246).
They do not require a separate mac calculation because data integrity is
already ensured during AEAD encryption.
AEAD is specified in RFC 5116, AES Galois Counter Mode (GCM) Cipher Suites
for TLS are specified in RFC 5288,
and Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter
Mode (GCM) are specified in RFC 5289.
The AEAD (read) Cipher object for this method has been created by a
previous call to method getCipher and is used throughout
the entire TLS session with some specific peer. However, with any call of
this method the Cipher has to be initialized anew with the given key. This
has to be done inside the method because the AEAD parameters built from
given additional authentication data, nonce and mac size may depend on the
JCA provider that is used for decryption. After initializing the Cipher the
required update and/or doFinal calls have to be
made to decrypt inLen data bytes from the in
array and write the decrypted data to the out array, starting
at offset outOff. The input data contains the encrypted data
and the authentication tag: encrypted data || mac. For that
reason an implementation of this method may first parse the authentication
tag from the in array (if, e.g., required as parameter for
Cipher initialization) or may pass the whole in data as it is
to the Cipher update, doFinal calls (and let the
Cipher take care from getting the authentication tag), depending on the
specific JCA provider implementation.
The default implementation of this method throws an exception since a provider independent AEAD API (parameter classes) was not available before Java 7.
aeadDecrypt in class SecurityProvidercipher - the AEAD (GCM) Cipher object to be used for encryptionkey - the cipher key to be used for intializing the CipherinOff - the offset indicating the start of the message data in the in byte
arrayinLen - the number of bytes to encryptout - the array to which to write the encrypted messageoutOff - the offset indicating the start position in the out byte arrayaad - the additional authentication data (not (!) cloned)nonce - the nonce (not (!) cloned)macSize - the size of the mac (authentication tag)java.lang.Exception - if an error occurs during encryptionprotected java.lang.String[] getTLSServerName(java.security.cert.X509Certificate cert)
getTLSServerName in class SecurityProvidercert - the cert from which to get the server name(s)null if no commonName attribute is includedpublic ServerName[] getTLSServerName(int nameType, java.security.cert.X509Certificate serverCert)
getTLSServerName(X509Certificate) which returns the server name(s) as
String(s), this method return(s) the server name(s) as instances of class
ServerName. ServerName structure has been introduced by RFC 4366 (TLS
Extensions). It maybe sent within a Server Name
Indication extension from the client to the server to help the server
to select a certificate in accordance with the server name(s) received from
the client (see RFC 4366):
struct {
NameType name_type;
select (name_type) {
case host_name: HostName;
} name;
} ServerName;
enum {
host_name(0), (255)
} NameType;
opaque HostName<1..2^16-1>;
struct {
ServerName server_name_list<1..2^16-1>
} ServerNameList;
Each ServerName in the list consists of a type and a name. Currently only
one type HostName is defined by RFC
4366. It represents the UTF-8 encoded DNS host name of the server. Other
name types may be added in the future. ServerName implementation generally
does not interpret the name type and expects that a name is encoded
according to the UTF-8 syntax. If you want to support (or especially
interpret) other name types, or if you want to implement full IDNA naming
comparison, you may write your own ServerName class and
override the corresponding getTLSServerName SecurityProvider
methods to use your ServerName implementation.
This method tries to build TLS ServerNames from name
information that may be included in a X.509 certificate. It is used by
iSaSiLk for mapping server credentials to server names.
getTLSServerName in class SecurityProvidernameType - the type of the server name (currently only
HostName) is specifiedserverCert - the certificate of the servernull signals to the ChainVerifier that this operation
is not supported.public byte[] calculateTrustedAuthorityIdentifier(int type,
java.security.cert.X509Certificate certificate)
throws java.lang.Exception
TrustedAuthority identifier of the
given type from the given certificate.
The identifier type has to be one of the following (see RFC 4366):
pre_agreed: does not
provide any identification information about the CA root key
key_sha1_hash: the CA
root key is identified by a SHA-1 hash of the public key. For DSA and ECDSA
keys the hash is calculated from the subjectPublicKey field, for RSA keys
the hash is calculated from the big-endian byte representation of the
modulus (without leading 0-bytes) (see RFC 4366).
x509_name: the CA root key
is identified by the DER encoded distinguished name of the CA
cert_sha1_hash: the
CA root key is identified by the SHA-1 hash of the DER encoded CA
certificate
calculateTrustedAuthorityIdentifier in class SecurityProvidertype - the identifier type; PRE_AGREED (0), KEY_SHA1_HASH (1), KEY_X509_NAME (2), or CERT_SHA1_HASH (3)certificate - the certificate from which to calculate the identifierjava.lang.IllegalArgumentException - if identifierType is invalid (not
PRE_AGREED (0),
KEY_SHA1_HASH (1),
KEY_X509_NAME (2), or
CERT_SHA1_HASH (3)
), or the given certificate is nulljava.lang.Exception - if an error occurs while calculating the identifierpublic byte[] createCertStatusRequest(int statusType)
throws java.lang.Exception
status_request extension. CertificateStatusRequest
extension. This may be suitable when, for instance, using ocsp status
requests and let iSaSiLk calculate a fresh Nonce extension anytime a status
request is sent.
The byte array returned by this method must contain the TLS encoded
request field of the CertificateStatusRequest
structure (see RFC 4366):
struct {
CertificateStatusType status_type;
select (status_type) {
case ocsp: OCSPStatusRequest;
} request;
} CertificateStatusRequest;
enum { ocsp(1), (255) } CertificateStatusType;
struct {
ResponderID responder_id_list<0..2^16-1>;
Extensions request_extensions;
} OCSPStatusRequest;
opaque ResponderID<1..2^16-1>;
opaque Extensions<0..2^16-1>;
Currently only one status type,
ocsp is specified
(see RFC 4366). This also is the only status type supported by this method.
It creates an OCSPStatusRequest with no responder
ids and no request extension. iSaSiLk versions prior 6.0 will include
the Nonce extension with a random nonce value in the
OCSPStatusRequest. However, since the peer may use cached responses
it might not be able to respond with a valid nonce.
createCertStatusRequest in class SecurityProviderstatusType - the certificate status typejava.lang.Exception - if an error occurs when creating the ocsp status request or
the requested status type is not
ocspprotected java.security.SecureRandom getSecureRandom()
iaik.security.random.SecRandom. For more documentation see the
superclass SecurityProvider.getSecureRandom in class SecurityProviderpublic javax.crypto.SecretKey deriveKey(java.lang.String algorithm,
char[] password,
byte[] salt,
int iterationCount,
int keyLen,
java.lang.String keyName,
java.security.SecureRandom random)
throws java.lang.Exception
DefaultPSKManager to derive a key from a password for pbe protected
storing the contents of the psk manager. You may override this method if
you want to use your self-designed SecurityProvider. However, note that
this method is NOT required for the normal SSL/TLS protocol working, even
if PSK cipher suites are used. It is only required if you are using the
DefaultPSKManager and want to pbe protected
store/
read the contents of
the manager.deriveKey in class SecurityProvideralgorithm - the name of key derivation function to be used ("PBKDF2")password - the password to be usedsalt - the salt value for the key derivation functioniterationCount - the iteration count value for the key derivation functionkeyLen - the length of the key to be derived from the passwordkeyName - the (algorithm) name of the derived keyrandom - SecureRandom for providing random numbers if required by the key
derivation function in useif - an error occurs when generating the keyjava.lang.Exceptionpublic java.security.KeyStore loadKeyStore(java.lang.String keyStoreFile,
char[] keyStorePassword,
java.lang.String keyStoreType,
java.lang.String keyStoreProvider)
throws java.lang.Exception
loadKeyStore in class SecurityProviderkeyStoreFile - the name of the KeyStore filekeyStorePassword - the KeyStore passwordkeyStoreType - the KeyStore type; default: IAIKKeyStorekeyStoreProvider - the KeyStore provider; default: IAIKjava.lang.Exception - if an error occurs when loading the KeyStorepublic java.security.KeyStore loadKeyStore(java.lang.String keyStoreFile,
char[] keyStorePassword,
java.lang.String keyStoreType,
java.security.Provider keyStoreProvider)
throws java.lang.Exception
loadKeyStore in class SecurityProviderkeyStoreFile - the name of the KeyStore filekeyStorePassword - the KeyStore passwordkeyStoreType - the KeyStore type; default: IAIKKeyStorekeyStoreProvider - the KeyStore provider; default: IAIKjava.lang.Exception - if an error occurs when loading the KeyStoreprotected boolean checkCreatedRSAServerKeyExchangeSignature()
true for IAIK provider versions <= 5.25. IAIK provider
versions > 5.25 already include the verification step.checkCreatedRSAServerKeyExchangeSignature in class SecurityProvidertrue for IAIK provider versions <= 5.25,
false otherwise