For the latest news and information visit
The GNU Crypto project

gnu.crypto.sig
Class BaseSignature

java.lang.Object
  |
  +--gnu.crypto.sig.BaseSignature
All Implemented Interfaces:
java.lang.Cloneable, ISignature
Direct Known Subclasses:
DSSSignature, RSAPSSSignature

public abstract class BaseSignature
extends java.lang.Object
implements ISignature

A base abstract class to facilitate implementations of concrete Signatures.

Version:
$Revision: 1.4 $

Field Summary
protected  IMessageDigest md
          The underlying message digest instance for this signature scheme.
protected  java.security.PrivateKey privateKey
          The private key to use when generating signatures (signing).
protected  java.security.PublicKey publicKey
          The public key to use when verifying signatures.
protected  java.lang.String schemeName
          The canonical name of this signature scheme.
static java.lang.String SIGNER_KEY
          Property name of the signer's private key.
static java.lang.String SOURCE_OF_RANDOMNESS
          Property name of an optional SecureRandom instance to use.
static java.lang.String VERIFIER_KEY
          Property name of the verifier's public key.
 
Constructor Summary
protected BaseSignature(java.lang.String schemeName, IMessageDigest md)
          Trivial constructor.
 
Method Summary
abstract  java.lang.Object clone()
          Returns a clone copy of this instance.
protected abstract  java.lang.Object generateSignature()
           
protected  void init()
          Initialises the internal fields of this instance.
 java.lang.String name()
          Returns the canonical name of this signature scheme.
protected  void nextRandomBytes(byte[] buffer)
          Fills the designated byte array with random data.
protected abstract  void setupForSigning(java.security.PrivateKey key)
           
protected abstract  void setupForVerification(java.security.PublicKey key)
           
 void setupSign(java.util.Map attributes)
          Initialises this instance for signature generation.
 void setupVerify(java.util.Map attributes)
          Initialises this instance for signature verification.
 java.lang.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[] b, int off, int len)
          Digests a sequence of bytes from a message for signing or verification purposes.
 boolean verify(java.lang.Object sig)
          Terminates a signature verification phase by digesting and processing the context of the underlying message digest algorithm instance.
protected abstract  boolean verifySignature(java.lang.Object signature)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VERIFIER_KEY

public static final java.lang.String VERIFIER_KEY
Property name of the verifier's public key.

See Also:
Constant Field Values

SIGNER_KEY

public static final java.lang.String SIGNER_KEY
Property name of the signer's private key.

See Also:
Constant Field Values

SOURCE_OF_RANDOMNESS

public static final java.lang.String SOURCE_OF_RANDOMNESS
Property name of an optional SecureRandom instance to use. The default is to use a classloader singleton from PRNG.

See Also:
Constant Field Values

schemeName

protected java.lang.String schemeName
The canonical name of this signature scheme.


md

protected IMessageDigest md
The underlying message digest instance for this signature scheme.


publicKey

protected java.security.PublicKey publicKey
The public key to use when verifying signatures.


privateKey

protected java.security.PrivateKey privateKey
The private key to use when generating signatures (signing).

Constructor Detail

BaseSignature

protected BaseSignature(java.lang.String schemeName,
                        IMessageDigest md)

Trivial constructor.

Parameters:
schemeName - the name of this signature scheme.
md - the underlying instance of the message digest algorithm.
Method Detail

name

public java.lang.String name()
Description copied from interface: ISignature
Returns the canonical name of this signature scheme.

Specified by:
name in interface ISignature
Returns:
the canonical name of this instance.

setupVerify

public void setupVerify(java.util.Map attributes)
                 throws java.lang.IllegalArgumentException
Description copied from interface: ISignature
Initialises this instance for signature verification.

Specified by:
setupVerify in interface ISignature
Parameters:
attributes - the attributes to use for setting up this instance.
Throws:
java.lang.IllegalArgumentException - if the designated public key is not appropriate for this signature scheme.

setupSign

public void setupSign(java.util.Map attributes)
               throws java.lang.IllegalArgumentException
Description copied from interface: ISignature
Initialises this instance for signature generation.

Specified by:
setupSign in interface ISignature
Parameters:
attributes - the attributes to use for setting up this instance.
Throws:
java.lang.IllegalArgumentException - if the designated private key is not appropriate for this signature scheme.

update

public void update(byte b)
Description copied from interface: ISignature
Digests one byte of a message for signing or verification purposes.

Specified by:
update in interface ISignature
Parameters:
b - the message byte to digest.

update

public void update(byte[] b,
                   int off,
                   int len)
Description copied from interface: ISignature
Digests a sequence of bytes from a message for signing or verification purposes.

Specified by:
update in interface ISignature
Parameters:
b - the byte sequence to consider.
off - the byte poisition in buffer of the first byte to consider.
len - the number of bytes in buffer starting from the byte at index offset to digest.

sign

public java.lang.Object sign()
Description copied from interface: ISignature
Terminates a signature generation phase by digesting and processing the context of the underlying message digest algorithm instance.

Specified by:
sign in interface ISignature
Returns:
a Object representing the native output of the signature scheme implementation.

verify

public boolean verify(java.lang.Object sig)
Description copied from interface: ISignature
Terminates a signature verification phase by digesting and processing the context of the underlying message digest algorithm instance.

Specified by:
verify in interface ISignature
Parameters:
sig - 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.

clone

public abstract java.lang.Object clone()
Description copied from interface: ISignature
Returns a clone copy of this instance.

Specified by:
clone in interface ISignature
Overrides:
clone in class java.lang.Object
Returns:
a clone copy of this instance.

setupForVerification

protected abstract void setupForVerification(java.security.PublicKey key)
                                      throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException

setupForSigning

protected abstract void setupForSigning(java.security.PrivateKey key)
                                 throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException

generateSignature

protected abstract java.lang.Object generateSignature()
                                               throws java.lang.IllegalStateException
java.lang.IllegalStateException

verifySignature

protected abstract boolean verifySignature(java.lang.Object signature)
                                    throws java.lang.IllegalStateException
java.lang.IllegalStateException

init

protected void init()
Initialises the internal fields of this instance.


nextRandomBytes

protected void nextRandomBytes(byte[] buffer)

Fills the designated byte array with random data.

Parameters:
buffer - the byte array to fill with random data.

For the latest news and information visit
The GNU Crypto project

Copyright ©2001, 2002 Free Software Foundation, Inc.. All Rights Reserved.