gnu.java.security.sig

Interface ISignature

All Superinterfaces:
Cloneable
Known Implementing Classes:
BaseSignature, DSSSignature, RSAPKCS1V1_5Signature, RSAPSSSignature

public interface ISignature
extends Cloneable

The visible methods of every signature-with-appendix scheme.

The Handbook of Applied Cryptography (HAC), by A. Menezes & al. states: "Digital signature schemes which require the message as input to the verification algorithm are called digital signature schemes with appendix. ... They rely on cryptographic hash functions rather than customised redundancy functions, and are less prone to existential forgery attacks."

References:

  1. Handbook of Applied Cryptography, Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Section 11.2.2 Digital signature schemes with appendix.

Field Summary

static String
SIGNER_KEY
Property name of the signer's private key.
static String
SOURCE_OF_RANDOMNESS
Property name of an optional SecureRandom, Random, or IRandom instance to use.
static String
VERIFIER_KEY
Property name of the verifier's public key.

Method Summary

Object
clone()
Returns a clone copy of this instance.
String
name()
Returns the canonical name of this signature scheme.
void
setupSign(Map<K,V> attributes)
Initialises this instance for signature generation.
void
setupVerify(Map<K,V> attributes)
Initialises this instance for signature verification.
Object
sign()
Terminates a signature generation phase by digesting and processing the context of the underlying message digest algorithm instance.
void
update(byte b)
Digests one byte of a message for signing or verification purposes.
void
update(byte[] buffer, int offset, int length)
Digests a sequence of bytes from a message for signing or verification purposes.
boolean
verify(Object signature)
Terminates a signature verification phase by digesting and processing the context of the underlying message digest algorithm instance.

Field Details

SIGNER_KEY

public static final String SIGNER_KEY
Property name of the signer's private key.
Field Value:
"gnu.crypto.sig.private.key"

SOURCE_OF_RANDOMNESS

public static final String SOURCE_OF_RANDOMNESS
Property name of an optional SecureRandom, Random, or IRandom instance to use. The default is to use a classloader singleton from PRNG.
Field Value:
"gnu.crypto.sig.prng"

VERIFIER_KEY

public static final String VERIFIER_KEY
Property name of the verifier's public key.
Field Value:
"gnu.crypto.sig.public.key"

Method Details

clone

public Object clone()
Returns a clone copy of this instance.
Overrides:
clone in interface Object
Returns:
a clone copy of this instance.

name

public String name()
Returns the canonical name of this signature scheme.
Returns:
the canonical name of this instance.

setupSign

public void setupSign(Map<K,V> attributes)
            throws IllegalArgumentException
Initialises this instance for signature generation.
Parameters:
attributes - the attributes to use for setting up this instance.
Throws:
IllegalArgumentException - if the designated private key is not appropriate for this signature scheme.

setupVerify

public void setupVerify(Map<K,V> attributes)
            throws IllegalArgumentException
Initialises this instance for signature verification.
Parameters:
attributes - the attributes to use for setting up this instance.
Throws:
IllegalArgumentException - if the designated public key is not appropriate for this signature scheme.

sign

public Object sign()
            throws IllegalStateException
Terminates a signature generation phase by digesting and processing the context of the underlying message digest algorithm instance.
Returns:
a Object representing the native output of the signature scheme implementation.
Throws:
IllegalStateException - if this instance was not setup for signature generation.

update

public void update(byte b)
            throws IllegalStateException
Digests one byte of a message for signing or verification purposes.
Parameters:
b - the message byte to digest.
Throws:
IllegalStateException - if this instance was not setup for signature generation/verification.

update

public void update(byte[] buffer,
                   int offset,
                   int length)
            throws IllegalStateException
Digests a sequence of bytes from a message for signing or verification purposes.
Parameters:
buffer - the byte sequence to consider.
offset - the byte poisition in buffer of the first byte to consider.
length - the number of bytes in buffer starting from the byte at index offset to digest.
Throws:
IllegalStateException - if this instance was not setup for signature generation/verification.

verify

public boolean verify(Object signature)
            throws IllegalStateException
Terminates a signature verification phase by digesting and processing the context of the underlying message digest algorithm instance.
Parameters:
signature - a native signature object previously generated by an invocation of the sign() method.
Returns:
true iff the outpout of the verification phase confirms that the designated signature object has been generated using the corresponding public key of the recepient.
Throws:
IllegalStateException - if this instance was not setup for signature verification.

ISignature.java -- Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. This file is a part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.