java.security

Class Signature

public abstract class Signature extends SignatureSpi

Signature is used to provide an interface to digital signature algorithms. Digital signatures provide authentication and data integrity of digital data.

The GNU provider provides the NIST standard DSA which uses DSA and SHA-1. It can be specified by SHA/DSA, SHA-1/DSA or its OID. If the RSA signature algorithm is provided then it could be MD2/RSA. MD5/RSA, or SHA-1/RSA. The algorithm must be specified because there is no default.

Signature provides implementation-independent algorithms which are requested by the user through the getInstance() methods. It can be requested by specifying just the algorithm name or by specifying both the algorithm name and provider name.

The three phases of using Signature are:

  1. Initializing:
    • It must be initialized with a private key for signing.
    • It must be initialized with a public key for verifying.
    • Updating:

      Update the bytes for signing or verifying with calls to update.

    • Signing or Verify the signature on the currently stored bytes by calling sign or verify.
Field Summary
protected intstate
Current sate of this instance.
protected static intSIGN
Possible state value which signifies that this instance has been initialized for signing purposes.
protected static intUNINITIALIZED
Possible state value which signifies that this instance has not yet been initialized.
protected static intVERIFY
Possible state value which signifies that this instance has been initialized for verification purposes.
Constructor Summary
protected Signature(String algorithm)
Constructs a new Signature instance for a designated digital signature algorithm.
Method Summary
Objectclone()
Returns a clone of this instance.
StringgetAlgorithm()
Returns the name of the algorithm currently used.
static SignaturegetInstance(String algorithm)
Returns an instance of Signature representing the specified signature.
static SignaturegetInstance(String algorithm, String provider)
Returns an instance of Signature representing the specified signature from the named provider.
static SignaturegetInstance(String algorithm, Provider provider)
Returns an instance of Signature representing the specified signature from the specified {@link Provider}.
ObjectgetParameter(String param)
Returns the value for the specified algorithm parameter.
AlgorithmParametersgetParameters()
Return the parameters of the algorithm used in this instance as an {@link AlgorithmParameters}.
ProvidergetProvider()
Returns the {@link Provider} of this instance.
voidinitSign(PrivateKey privateKey)
Initializes this class with the private key for signing purposes.
voidinitSign(PrivateKey privateKey, SecureRandom random)
Initializes this class with the private key and source of randomness for signing purposes.
voidinitVerify(PublicKey publicKey)
Initializes this instance with the public key for verification purposes.
voidinitVerify(Certificate certificate)
Verify a signature with a designated {@link Certificate}.
voidsetParameter(String param, Object value)
Sets the specified algorithm parameter to the specified value.
voidsetParameter(AlgorithmParameterSpec params)
Sets the signature engine with the specified {@link AlgorithmParameterSpec}.
byte[]sign()
Returns the signature bytes of all the data fed to this instance.
intsign(byte[] outbuf, int offset, int len)
Generates signature bytes of all the data fed to this instance and stores it in the designated array.
StringtoString()
Returns a rstring representation of this instance.
voidupdate(byte b)
Updates the data to be signed or verified with the specified byte.
voidupdate(byte[] data)
Updates the data to be signed or verified with the specified bytes.
voidupdate(byte[] data, int off, int len)
Updates the data to be signed or verified with the specified bytes.
voidupdate(ByteBuffer input)
Update this signature with the {@link java.nio.Buffer#remaining()} bytes of the input buffer.
booleanverify(byte[] signature)
Verifies a designated signature.
booleanverify(byte[] signature, int offset, int length)
Verifies a designated signature.

Field Detail

state

protected int state
Current sate of this instance.

SIGN

protected static final int SIGN
Possible state value which signifies that this instance has been initialized for signing purposes.

UNINITIALIZED

protected static final int UNINITIALIZED
Possible state value which signifies that this instance has not yet been initialized.

VERIFY

protected static final int VERIFY
Possible state value which signifies that this instance has been initialized for verification purposes.

Constructor Detail

Signature

protected Signature(String algorithm)
Constructs a new Signature instance for a designated digital signature algorithm.

Parameters: algorithm the algorithm to use.

Method Detail

clone

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

Returns: a clone of this instace.

Throws: CloneNotSupportedException if the implementation does not support cloning.

getAlgorithm

public final String getAlgorithm()
Returns the name of the algorithm currently used. The names of algorithms are usually SHA/DSA or SHA/RSA.

Returns: name of algorithm.

getInstance

public static Signature getInstance(String algorithm)
Returns an instance of Signature representing the specified signature.

Parameters: algorithm the algorithm to use.

Returns: a new instance repesenting the desired algorithm.

Throws: NoSuchAlgorithmException if the algorithm is not implemented by any provider. IllegalArgumentException if algorithm is null or is an empty string.

getInstance

public static Signature getInstance(String algorithm, String provider)
Returns an instance of Signature representing the specified signature from the named provider.

Parameters: algorithm the algorithm to use. provider the name of the provider to use.

Returns: a new instance repesenting the desired algorithm.

Throws: NoSuchProviderException if the named provider was not found. NoSuchAlgorithmException if the algorithm is not implemented by the named provider. IllegalArgumentException if either algorithm or provider is null or empty.

getInstance

public static Signature getInstance(String algorithm, Provider provider)
Returns an instance of Signature representing the specified signature from the specified {@link Provider}.

Parameters: algorithm the algorithm to use. provider the {@link Provider} to use.

Returns: a new instance repesenting the desired algorithm.

Throws: NoSuchAlgorithmException if the algorithm is not implemented by the {@link Provider}. IllegalArgumentException if either algorithm or provider is null, or if algorithm is an empty string.

getParameter

public final Object getParameter(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.

getParameters

public final AlgorithmParameters getParameters()
Return the parameters of the algorithm used in this instance as an {@link AlgorithmParameters}.

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

getProvider

public final Provider getProvider()
Returns the {@link Provider} of this instance.

Returns: the {@link Provider} of this instance.

initSign

public final void initSign(PrivateKey privateKey)
Initializes this class with the private key for signing purposes.

Parameters: privateKey the private key to sign with.

Throws: InvalidKeyException if the key is invalid.

initSign

public final void initSign(PrivateKey privateKey, SecureRandom random)
Initializes this class with the private key and source of randomness for signing purposes.

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

Throws: InvalidKeyException if the key is invalid.

initVerify

public final void initVerify(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.

initVerify

public final void initVerify(Certificate certificate)
Verify a signature with a designated {@link Certificate}. This is a FIPS 140-1 compatible method since it verifies a signature with a certificate.

If the {@link Certificate} is an X.509 one, has a KeyUsage parameter and that parameter indicates this key is not to be used for signing then an exception is thrown.

Parameters: certificate a {@link Certificate} containing a public key to verify with.

Throws: InvalidKeyException if the key is invalid.

setParameter

public final void setParameter(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 is invalid, the parameter is already set and can not be changed, a security exception occured, etc.

setParameter

public final void setParameter(AlgorithmParameterSpec params)
Sets the signature engine with the specified {@link AlgorithmParameterSpec}.

By default, and unless overriden by the concrete SPI, this method always throws an {@link UnsupportedOperationException}.

Parameters: params the parameters to use for intializing this instance.

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

sign

public final byte[] sign()
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.

sign

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

After calling this method, the instance is reset to its initial state and can then 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 array of bytes of where to store the resulting signature bytes. 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

toString

public String toString()
Returns a rstring representation of this instance.

Returns: a rstring representation of this instance.

update

public final void update(byte b)
Updates the data to be signed or verified with the specified byte.

Parameters: b the byte to update with.

Throws: SignatureException if the engine is not properly initialized.

update

public final void update(byte[] data)
Updates the data to be signed or verified with the specified bytes.

Parameters: data the array of bytes to use.

Throws: SignatureException if the engine is not properly initialized.

update

public final void update(byte[] data, int off, int len)
Updates the data to be signed or verified with the specified bytes.

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

Throws: SignatureException if the engine is not properly initialized.

update

public final void update(ByteBuffer input)
Update this signature with the {@link java.nio.Buffer#remaining()} bytes of the input buffer.

Parameters: input The input buffer.

Throws: SignatureException If this instance was not properly initialized.

verify

public final boolean verify(byte[] signature)
Verifies a designated signature.

Parameters: signature the signature bytes to verify.

Returns: true if verified, false otherwise.

Throws: SignatureException if the engine is not properly initialized or the signature does not check.

verify

public final boolean verify(byte[] signature, int offset, int length)
Verifies a designated signature.

Parameters: signature the signature bytes to verify. offset the offset to start at in the array. length the number of the bytes to use from the array.

Returns: true if verified, false otherwise.

Throws: IllegalArgumentException if the signature byte array is null, or the offset or length is less than 0, or the sum of the offset and length is greater than the length of the signature byte array. SignatureException if the engine is not properly initialized or the signature does not check.