| Method from java.security.Signature Detail: |
void chooseFirstProvider() {
// empty, overridden in Delegate
}
|
public Object clone() throws CloneNotSupportedException {
if (this instanceof Cloneable) {
return super.clone();
} else {
throw new CloneNotSupportedException();
}
}
Returns a clone if the implementation is cloneable. |
public final String getAlgorithm() {
return this.algorithm;
}
Returns the name of the algorithm for this signature object. |
public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException {
List< Service > list;
if (algorithm.equalsIgnoreCase(RSA_SIGNATURE)) {
list = GetInstance.getServices(rsaIds);
} else {
list = GetInstance.getServices("Signature", algorithm);
}
Iterator< Service > t = list.iterator();
if (t.hasNext() == false) {
throw new NoSuchAlgorithmException
(algorithm + " Signature not available");
}
// try services until we find an Spi or a working Signature subclass
NoSuchAlgorithmException failure;
do {
Service s = t.next();
if (isSpi(s)) {
return new Delegate(s, t, algorithm);
} else {
// must be a subclass of Signature, disable dynamic selection
try {
Instance instance =
GetInstance.getInstance(s, SignatureSpi.class);
return getInstance(instance, algorithm);
} catch (NoSuchAlgorithmException e) {
failure = e;
}
}
} while (t.hasNext());
throw failure;
}
Returns a Signature object that implements the specified signature
algorithm.
This method traverses the list of registered security Providers,
starting with the most preferred Provider.
A new Signature object encapsulating the
SignatureSpi implementation from the first
Provider that supports the specified algorithm is returned.
Note that the list of registered providers may be retrieved via
the Security.getProviders() method. |
public static Signature getInstance(String algorithm,
String provider) throws NoSuchProviderException, NoSuchAlgorithmException {
if (algorithm.equalsIgnoreCase(RSA_SIGNATURE)) {
// exception compatibility with existing code
if ((provider == null) || (provider.length() == 0)) {
throw new IllegalArgumentException("missing provider");
}
Provider p = Security.getProvider(provider);
if (p == null) {
throw new NoSuchProviderException
("no such provider: " + provider);
}
return getInstanceRSA(p);
}
Instance instance = GetInstance.getInstance
("Signature", SignatureSpi.class, algorithm, provider);
return getInstance(instance, algorithm);
}
Returns a Signature object that implements the specified signature
algorithm.
A new Signature object encapsulating the
SignatureSpi implementation from the specified provider
is returned. The specified provider must be registered
in the security provider list.
Note that the list of registered providers may be retrieved via
the Security.getProviders() method. |
public static Signature getInstance(String algorithm,
Provider provider) throws NoSuchAlgorithmException {
if (algorithm.equalsIgnoreCase(RSA_SIGNATURE)) {
// exception compatibility with existing code
if (provider == null) {
throw new IllegalArgumentException("missing provider");
}
return getInstanceRSA(provider);
}
Instance instance = GetInstance.getInstance
("Signature", SignatureSpi.class, algorithm, provider);
return getInstance(instance, algorithm);
}
Returns a Signature object that implements the specified
signature algorithm.
A new Signature object encapsulating the
SignatureSpi implementation from the specified Provider
object is returned. Note that the specified Provider object
does not have to be registered in the provider list. |
public final Object getParameter(String param) throws InvalidParameterException {
return engineGetParameter(param);
} Deprecated!
Gets the value of the specified algorithm parameter. This method
supplies a general-purpose mechanism through which it is possible to
get the various parameters of this object. A parameter may be any
settable parameter for the algorithm, such as a parameter size, or
a source of random bits for signature generation (if appropriate),
or an indication of whether or not to perform a specific but optional
computation. A uniform algorithm-specific naming scheme for each
parameter is desirable but left unspecified at this time. |
public final AlgorithmParameters getParameters() {
return engineGetParameters();
}
Returns the parameters used with this signature object.
The returned parameters may be the same that were used to initialize
this signature, or may contain a combination of default and randomly
generated parameter values used by the underlying signature
implementation if this signature requires algorithm parameters but
was not initialized with any. |
public final Provider getProvider() {
chooseFirstProvider();
return this.provider;
}
Returns the provider of this signature object. |
public final void initSign(PrivateKey privateKey) throws InvalidKeyException {
engineInitSign(privateKey);
state = SIGN;
}
Initialize this object for signing. If this method is called
again with a different argument, it negates the effect
of this call. |
public final void initSign(PrivateKey privateKey,
SecureRandom random) throws InvalidKeyException {
engineInitSign(privateKey, random);
state = SIGN;
}
Initialize this object for signing. If this method is called
again with a different argument, it negates the effect
of this call. |
public final void initVerify(PublicKey publicKey) throws InvalidKeyException {
engineInitVerify(publicKey);
state = VERIFY;
}
Initializes this object for verification. If this method is called
again with a different argument, it negates the effect
of this call. |
public final void initVerify(Certificate certificate) throws InvalidKeyException {
// If the certificate is of type X509Certificate,
// we should check whether it has a Key Usage
// extension marked as critical.
if (certificate instanceof java.security.cert.X509Certificate) {
// Check whether the cert has a key usage extension
// marked as a critical extension.
// The OID for KeyUsage extension is 2.5.29.15.
X509Certificate cert = (X509Certificate)certificate;
Set< String > critSet = cert.getCriticalExtensionOIDs();
if (critSet != null && !critSet.isEmpty()
&& critSet.contains("2.5.29.15")) {
boolean[] keyUsageInfo = cert.getKeyUsage();
// keyUsageInfo[0] is for digitalSignature.
if ((keyUsageInfo != null) && (keyUsageInfo[0] == false))
throw new InvalidKeyException("Wrong key usage");
}
}
PublicKey publicKey = certificate.getPublicKey();
engineInitVerify(publicKey);
state = VERIFY;
}
Initializes this object for verification, using the public key from
the given certificate.
If the certificate is of type X.509 and has a key usage
extension field marked as critical, and the value of the key usage
extension field implies that the public key in
the certificate and its corresponding private key are not
supposed to be used for digital signatures, an
InvalidKeyException is thrown. |
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException {
engineSetParameter(params);
}
Initializes this signature engine with the specified parameter set. |
public final void setParameter(String param,
Object value) throws InvalidParameterException {
engineSetParameter(param, value);
} Deprecated! Use -
setParameter .
Sets the specified algorithm parameter to the specified value.
This method supplies a general-purpose mechanism through
which it is possible to set the various parameters of this object.
A parameter may be any settable parameter for the algorithm, such as
a parameter size, or a source of random bits for signature generation
(if appropriate), or an indication of whether or not to perform
a specific but optional computation. A uniform algorithm-specific
naming scheme for each parameter is desirable but left unspecified
at this time. |
public final byte[] sign() throws SignatureException {
if (state == SIGN) {
return engineSign();
}
throw new SignatureException("object not initialized for " +
"signing");
}
Returns the signature bytes of all the data updated.
The format of the signature depends on the underlying
signature scheme.
A call to this method resets this signature object to the state
it was in when previously initialized for signing via a
call to initSign(PrivateKey). That is, the object is
reset and available to generate another signature from the same
signer, if desired, via new calls to update and
sign. |
public final int sign(byte[] outbuf,
int offset,
int len) throws SignatureException {
if (outbuf == null) {
throw new IllegalArgumentException("No output buffer given");
}
if (outbuf.length - offset < len) {
throw new IllegalArgumentException
("Output buffer too small for specified offset and length");
}
if (state != SIGN) {
throw new SignatureException("object not initialized for " +
"signing");
}
return engineSign(outbuf, offset, len);
}
Finishes the signature operation and stores the resulting signature
bytes in the provided buffer outbuf, starting at
offset.
The format of the signature depends on the underlying
signature scheme.
This signature object is reset to its initial state (the state it
was in after a call to one of the initSign methods) and
can be reused to generate further signatures with the same private key. |
public String toString() {
String initState = "";
switch (state) {
case UNINITIALIZED:
initState = "< not initialized >";
break;
case VERIFY:
initState = "< initialized for verifying >";
break;
case SIGN:
initState = "< initialized for signing >";
break;
}
return "Signature object: " + getAlgorithm() + initState;
}
Returns a string representation of this signature object,
providing information that includes the state of the object
and the name of the algorithm used. |
public final void update(byte b) throws SignatureException {
if (state == VERIFY || state == SIGN) {
engineUpdate(b);
} else {
throw new SignatureException("object not initialized for "
+ "signature or verification");
}
}
Updates the data to be signed or verified by a byte. |
public final void update(byte[] data) throws SignatureException {
update(data, 0, data.length);
}
Updates the data to be signed or verified, using the specified
array of bytes. |
public final void update(ByteBuffer data) throws SignatureException {
if ((state != SIGN) && (state != VERIFY)) {
throw new SignatureException("object not initialized for "
+ "signature or verification");
}
if (data == null) {
throw new NullPointerException();
}
engineUpdate(data);
}
Updates the data to be signed or verified using the specified
ByteBuffer. Processes the data.remaining() bytes
starting at at data.position().
Upon return, the buffer's position will be equal to its limit;
its limit will not have changed. |
public final void update(byte[] data,
int off,
int len) throws SignatureException {
if (state == SIGN || state == VERIFY) {
engineUpdate(data, off, len);
} else {
throw new SignatureException("object not initialized for "
+ "signature or verification");
}
}
Updates the data to be signed or verified, using the specified
array of bytes, starting at the specified offset. |
public final boolean verify(byte[] signature) throws SignatureException {
if (state == VERIFY) {
return engineVerify(signature);
}
throw new SignatureException("object not initialized for " +
"verification");
}
Verifies the passed-in signature.
A call to this method resets this signature object to the state
it was in when previously initialized for verification via a
call to initVerify(PublicKey). That is, the object is
reset and available to verify another signature from the identity
whose public key was specified in the call to initVerify. |
public final boolean verify(byte[] signature,
int offset,
int length) throws SignatureException {
if (state == VERIFY) {
if ((signature == null) || (offset < 0) || (length < 0) ||
(offset + length > signature.length)) {
throw new IllegalArgumentException("Bad arguments");
}
return engineVerify(signature, offset, length);
}
throw new SignatureException("object not initialized for " +
"verification");
}
Verifies the passed-in signature in the specified array
of bytes, starting at the specified offset.
A call to this method resets this signature object to the state
it was in when previously initialized for verification via a
call to initVerify(PublicKey). That is, the object is
reset and available to verify another signature from the identity
whose public key was specified in the call to initVerify. |