java.security

Class SignatureSpi

public abstract class SignatureSpi extends Object

SignatureSpi defines the Service Provider Interface (SPI) for the {@link Signature} class. The signature class provides an interface to a digital signature algorithm. Digital signatures are used for authentication and integrity of data.

Since: 1.2

See Also: Signature

Field Summary
protected SecureRandomappRandom
Source of randomness.
Constructor Summary
SignatureSpi()
Creates a new instance of SignatureSpi.
Method Summary
Objectclone()
Returns a clone of this instance.
protected abstract ObjectengineGetParameter(String param)
Returns the value for the specified algorithm parameter.
protected AlgorithmParametersengineGetParameters()
The default implementaion of this method always throws a {@link UnsupportedOperationException}.
protected abstract voidengineInitSign(PrivateKey privateKey)
Initializes this instance with the private key for signing purposes.
protected voidengineInitSign(PrivateKey privateKey, SecureRandom random)
Initializes this instance with the private key and source of randomness for signing purposes.
protected abstract voidengineInitVerify(PublicKey publicKey)
Initializes this instance with the public key for verification purposes.
protected abstract voidengineSetParameter(String param, Object value)
Sets the specified algorithm parameter to the specified value.
protected voidengineSetParameter(AlgorithmParameterSpec params)
Sets the signature engine with the specified {@link AlgorithmParameterSpec}.
protected abstract byte[]engineSign()
Returns the signature bytes of all the data fed to this instance.
protected intengineSign(byte[] outbuf, int offset, int len)
Generates signature bytes of all the data fed to this instance and stores the result in the designated array.
protected abstract voidengineUpdate(byte b)
Updates the data to be signed or verified with the specified byte.
protected abstract voidengineUpdate(byte[] b, int off, int len)
Updates the data to be signed or verified with the specified bytes.
protected voidengineUpdate(ByteBuffer input)
Update this signature with the {@link java.nio.Buffer#remaining()} bytes of the given buffer.
protected abstract booleanengineVerify(byte[] sigBytes)
Verifies a designated signature.
protected booleanengineVerify(byte[] sigBytes, int offset, int length)
Convenience method which calls the method with the same name and one argument after copying the designated bytes into a temporary byte array.

Field Detail

appRandom

protected SecureRandom appRandom
Source of randomness.

Constructor Detail

SignatureSpi

public SignatureSpi()
Creates a new instance of SignatureSpi.

Method Detail

clone

public Object clone()
Returns a clone of this instance.

Returns: a clone of this instance.

Throws: CloneNotSupportedException if the implementation does not support cloning.

engineGetParameter

protected abstract Object engineGetParameter(String param)

Deprecated: use the other getParameter

Returns the value for the specified algorithm parameter.

Parameters: param the parameter name.

Returns: the parameter value.

Throws: InvalidParameterException if the parameter is invalid.

engineGetParameters

protected AlgorithmParameters engineGetParameters()
The default implementaion of this method always throws a {@link UnsupportedOperationException}. It MUST be overridden by concrete implementations to return the appropriate {@link AlgorithmParameters} for this signature engine (or null when that engine does not use any parameters.

Returns: the parameters used with this signature engine, or null if it does not use any parameters.

Throws: UnsupportedOperationException always.

engineInitSign

protected abstract void engineInitSign(PrivateKey privateKey)
Initializes this instance with the private key for signing purposes.

Parameters: privateKey the private key to sign with.

Throws: InvalidKeyException if the key is invalid.

engineInitSign

protected void engineInitSign(PrivateKey privateKey, SecureRandom random)
Initializes this instance with the private key and source of randomness for signing purposes.

This method cannot be abstract for backward compatibility reasons.

Parameters: privateKey the private key to sign with. random the {@link SecureRandom} to use.

Throws: InvalidKeyException if the key is invalid.

Since: 1.2

engineInitVerify

protected abstract void engineInitVerify(PublicKey publicKey)
Initializes this instance with the public key for verification purposes.

Parameters: publicKey the public key to verify with.

Throws: InvalidKeyException if the key is invalid.

engineSetParameter

protected abstract void engineSetParameter(String param, Object value)

Deprecated: use the other setParameter.

Sets the specified algorithm parameter to the specified value.

Parameters: param the parameter name. value the parameter value.

Throws: InvalidParameterException if the parameter invalid, the parameter is already set and cannot be changed, a security exception occured, etc.

engineSetParameter

protected void engineSetParameter(AlgorithmParameterSpec params)
Sets the signature engine with the specified {@link AlgorithmParameterSpec}.

This method cannot be abstract for backward compatibility reasons. By default it always throws {@link UnsupportedOperationException} unless overridden.

Parameters: params the parameters.

Throws: InvalidParameterException if the parameter is invalid, the parameter is already set and cannot be changed, a security exception occured, etc.

engineSign

protected abstract byte[] engineSign()
Returns the signature bytes of all the data fed to this instance. The format of the output depends on the underlying signature algorithm.

Returns: the signature bytes.

Throws: SignatureException if the engine is not properly initialized.

engineSign

protected int engineSign(byte[] outbuf, int offset, int len)
Generates signature bytes of all the data fed to this instance and stores the result in the designated array. The format of the output depends on the underlying signature algorithm.

This method cannot be abstract for backward compatibility reasons. After calling this method, the signature is reset to its initial state and can be used to generate additional signatures.

IMPLEMENTATION NOTE:: Neither this method nor the GNU provider will return partial digests. If len is less than the signature length, this method will throw a {@link SignatureException}. If it is greater than or equal then it is ignored.

Parameters: outbuf the array of bytes to store the result in. offset the offset to start at in the array. len the number of the bytes to use in the array.

Returns: the real number of bytes used.

Throws: SignatureException if the engine is not properly initialized.

Since: 1.2

engineUpdate

protected abstract void engineUpdate(byte b)
Updates the data to be signed or verified with the specified byte.

Parameters: b byte to update with.

Throws: SignatureException if the engine is not properly initialized.

engineUpdate

protected abstract void engineUpdate(byte[] b, int off, int len)
Updates the data to be signed or verified with the specified bytes.

Parameters: b the array of bytes to use. off the offset to start at in the array. len the number of the bytes to use from the array.

Throws: SignatureException if the engine is not properly initialized.

engineUpdate

protected void engineUpdate(ByteBuffer input)
Update this signature with the {@link java.nio.Buffer#remaining()} bytes of the given buffer.

Parameters: input The input buffer.

Throws: IllegalStateException if the engine is not properly initialized.

engineVerify

protected abstract boolean engineVerify(byte[] sigBytes)
Verifies a designated signature.

Parameters: sigBytes the signature bytes to verify.

Returns: true if verified, false otherwise.

Throws: SignatureException if the engine is not properly initialized or if it is the wrong signature.

engineVerify

protected boolean engineVerify(byte[] sigBytes, int offset, int length)
Convenience method which calls the method with the same name and one argument after copying the designated bytes into a temporary byte array. Subclasses may override this method for performance reasons.

Parameters: sigBytes the array of bytes to use. offset the offset to start from in the array of bytes. length the number of bytes to use, starting at offset.

Returns: true if verified, false otherwise.

Throws: SignatureException if the engine is not properly initialized.