public abstract class Signature extends SignatureSpi
Signature
is an engine class which is capable of creating and
verifying digital signatures, using different algorithms that have been
registered with the Security
class.SignatureSpi
Modifier and Type | Field and Description |
---|---|
protected static int |
SIGN
Constant that indicates that this
Signature instance has been
initialized for signing. |
protected int |
state
Represents the current state of this
Signature . |
protected static int |
UNINITIALIZED
Constant that indicates that this
Signature instance has not yet
been initialized. |
protected static int |
VERIFY
Constant that indicates that this
Signature instance has been
initialized for verification. |
appRandom
Modifier | Constructor and Description |
---|---|
protected |
Signature(String algorithm)
Constructs a new instance of
Signature with the name of
the algorithm to use. |
Modifier and Type | Method and Description |
---|---|
Object |
clone()
Creates and returns a copy of this
Object . |
String |
getAlgorithm()
Returns the name of the algorithm of this
Signature . |
static Signature |
getInstance(String algorithm)
Returns a new instance of
Signature that utilizes the specified
algorithm. |
static Signature |
getInstance(String algorithm,
Provider provider)
Returns a new instance of
Signature that utilizes the specified
algorithm from the specified provider. |
static Signature |
getInstance(String algorithm,
String provider)
Returns a new instance of
Signature that utilizes the specified
algorithm from the specified provider. |
Object |
getParameter(String param)
Deprecated.
There is no generally accepted parameter naming convention.
|
AlgorithmParameters |
getParameters()
Returns the
AlgorithmParameters of this Signature
instance. |
Provider |
getProvider()
Returns the provider associated with this
Signature . |
void |
initSign(PrivateKey privateKey)
Initializes this
Signature instance for signing, using the
private key of the identity whose signature is going to be generated. |
void |
initSign(PrivateKey privateKey,
SecureRandom random)
Initializes this
Signature instance for signing, using the
private key of the identity whose signature is going to be generated and
the specified source of randomness. |
void |
initVerify(Certificate certificate)
Initializes this
Signature instance for signature verification,
using the certificate of the identity whose signature is going to be
verified. |
void |
initVerify(PublicKey publicKey)
Initializes this
Signature instance for signature verification,
using the public key of the identity whose signature is going to be
verified. |
void |
setParameter(AlgorithmParameterSpec params)
Sets the specified
AlgorithmParameterSpec . |
void |
setParameter(String param,
Object value)
Deprecated.
|
byte[] |
sign()
Generates and returns the signature of all updated data.
|
int |
sign(byte[] outbuf,
int offset,
int len)
Generates and stores the signature of all updated data in the provided
byte[] at the specified position with the specified length. |
String |
toString()
Returns a string containing a concise, human-readable description of this
Signature including its algorithm and its state. |
void |
update(byte b)
Updates the data to be verified or to be signed, using the specified
byte . |
void |
update(byte[] data)
Updates the data to be verified or to be signed, using the specified
byte[] . |
void |
update(byte[] data,
int off,
int len)
Updates the data to be verified or to be signed, using the given
byte[] , starting form the specified index for the specified length. |
void |
update(ByteBuffer data)
Updates the data to be verified or to be signed, using the specified
ByteBuffer . |
boolean |
verify(byte[] signature)
Indicates whether the given
signature can be verified using the
public key or a certificate of the signer. |
boolean |
verify(byte[] signature,
int offset,
int length)
Indicates whether the given
signature starting at index offset with length bytes can be verified using the public key or
a certificate of the signer. |
engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify
protected static final int UNINITIALIZED
Signature
instance has not yet
been initialized.protected static final int SIGN
Signature
instance has been
initialized for signing.protected static final int VERIFY
Signature
instance has been
initialized for verification.protected int state
Signature
. The three
possible states are UNINITIALIZED
, SIGN
or
VERIFY
.protected Signature(String algorithm)
Signature
with the name of
the algorithm to use.algorithm
- the name of algorithm to use.public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
Signature
that utilizes the specified
algorithm.algorithm
- the name of the algorithm to use.Signature
that utilizes the specified
algorithm.NoSuchAlgorithmException
- if the specified algorithm is not available.NullPointerException
- if algorithm
is null
.public static Signature getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Signature
that utilizes the specified
algorithm from the specified provider.algorithm
- the name of the algorithm to use.provider
- the name of the provider.Signature
that utilizes the specified
algorithm from the specified provider.NoSuchAlgorithmException
- if the specified algorithm is not available.NoSuchProviderException
- if the specified provider is not available.NullPointerException
- if algorithm
is null
.IllegalArgumentException
- if provider == null || provider.isEmpty()
public static Signature getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Signature
that utilizes the specified
algorithm from the specified provider.algorithm
- the name of the algorithm to use.provider
- the security provider.Signature
that utilizes the specified
algorithm from the specified provider.NoSuchAlgorithmException
- if the specified algorithm is not available.NullPointerException
- if algorithm
is null
.IllegalArgumentException
- if provider == null
public final Provider getProvider()
Signature
.Signature
.public final String getAlgorithm()
Signature
.Signature
.public final void initVerify(PublicKey publicKey) throws InvalidKeyException
Signature
instance for signature verification,
using the public key of the identity whose signature is going to be
verified.publicKey
- the public key.InvalidKeyException
- if publicKey
is not valid.public final void initVerify(Certificate certificate) throws InvalidKeyException
Signature
instance for signature verification,
using the certificate of the identity whose signature is going to be
verified.
If the given certificate is an instance of X509Certificate
and
has a key usage parameter that indicates, that this certificate is not to
be used for signing, an InvalidKeyException
is thrown.
certificate
- the certificate used to verify a signature.InvalidKeyException
- if the publicKey in the certificate is not valid or not to be
used for signing.public final void initSign(PrivateKey privateKey) throws InvalidKeyException
Signature
instance for signing, using the
private key of the identity whose signature is going to be generated.privateKey
- the private key.InvalidKeyException
- if privateKey
is not valid.public final void initSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException
Signature
instance for signing, using the
private key of the identity whose signature is going to be generated and
the specified source of randomness.privateKey
- the private key.random
- the SecureRandom
to use.InvalidKeyException
- if privateKey
is not valid.public final byte[] sign() throws SignatureException
This Signature
instance is reset to the state of its last
initialization for signing and thus can be used for another signature
from the same identity.
SignatureException
- if this Signature
instance is not initialized
properly.public final int sign(byte[] outbuf, int offset, int len) throws SignatureException
byte[]
at the specified position with the specified length.
This Signature
instance is reset to the state of its last
initialization for signing and thus can be used for another signature
from the same identity.
outbuf
- the buffer to store the signature.offset
- the index of the first byte in outbuf
to store.len
- the number of bytes allocated for the signature.outbuf
.SignatureException
- if this Signature
instance is not initialized
properly.IllegalArgumentException
- if offset
or len
are not valid in respect to
outbuf
.public final boolean verify(byte[] signature) throws SignatureException
signature
can be verified using the
public key or a certificate of the signer.
This Signature
instance is reset to the state of its last
initialization for verifying and thus can be used to verify another
signature of the same signer.
signature
- the signature to verify.true
if the signature was verified, false
otherwise.SignatureException
- if this Signature
instance is not initialized
properly.public final boolean verify(byte[] signature, int offset, int length) throws SignatureException
signature
starting at index offset
with length
bytes can be verified using the public key or
a certificate of the signer.
This Signature
instance is reset to the state of its last
initialization for verifying and thus can be used to verify another
signature of the same signer.
signature
- the byte[]
containing the signature to verify.offset
- the start index in signature
of the signature.length
- the number of bytes allocated for the signature.true
if the signature was verified, false
otherwise.SignatureException
- if this Signature
instance is not initialized
properly.IllegalArgumentException
- if offset
or length
are not valid in respect
to signature
.public final void update(byte b) throws SignatureException
byte
.b
- the byte to update with.SignatureException
- if this Signature
instance is not initialized
properly.public final void update(byte[] data) throws SignatureException
byte[]
.data
- the byte array to update with.SignatureException
- if this Signature
instance is not initialized
properly.public final void update(byte[] data, int off, int len) throws SignatureException
byte[]
, starting form the specified index for the specified length.data
- the byte array to update with.off
- the start index in data
of the data.len
- the number of bytes to use.SignatureException
- if this Signature
instance is not initialized
properly.public final void update(ByteBuffer data) throws SignatureException
ByteBuffer
.data
- the ByteBuffer
to update with.SignatureException
- if this Signature
instance is not initialized
properly.public String toString()
Signature
including its algorithm and its state.@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException
setParameter(AlgorithmParameterSpec)
param
- the name of the parameter.value
- the parameter value.InvalidParameterException
- if the parameter is invalid, already set or is not allowed to
be changed.public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
AlgorithmParameterSpec
.params
- the parameter to set.InvalidAlgorithmParameterException
- if the parameter is invalid, already set or is not allowed to
be changed.public final AlgorithmParameters getParameters()
AlgorithmParameters
of this Signature
instance.AlgorithmParameters
of this Signature
instance, maybe null
.@Deprecated public final Object getParameter(String param) throws InvalidParameterException
param
- the name of the requested parameter valuenull
.InvalidParameterException
- if param
is not a valid parameter for this Signature
or an other error occures.public Object clone() throws CloneNotSupportedException
Object
Object
. The default
implementation returns a so-called "shallow" copy: It creates a new
instance of the same class and then copies the field values (including
object references) from this instance to the new instance. A "deep" copy,
in contrast, would also recursively clone nested objects. A subclass that
needs to implement this kind of cloning should call super.clone()
to create the new instance and then create deep copies of the nested,
mutable objects.clone
in class SignatureSpi
CloneNotSupportedException
- if this object's class does not implement the Cloneable
interface.