org.bouncycastle.crypto.signers
Class ISO9796d2Signer

java.lang.Object
  extended by org.bouncycastle.crypto.signers.ISO9796d2Signer
All Implemented Interfaces:
Signer, SignerWithRecovery

public class ISO9796d2Signer
extends java.lang.Object
implements SignerWithRecovery

ISO9796-2 - mechanism using a hash function with recovery (scheme 1)


Field Summary
private  byte[] block
           
private  AsymmetricBlockCipher cipher
           
private  Digest digest
           
private  boolean fullMessage
           
private  int keyBits
           
private  byte[] mBuf
           
private  int messageLength
           
private  byte[] recoveredMessage
           
private  int trailer
           
static int TRAILER_IMPLICIT
           
static int TRAILER_RIPEMD128
           
static int TRAILER_RIPEMD160
           
static int TRAILER_SHA1
           
 
Constructor Summary
ISO9796d2Signer(AsymmetricBlockCipher cipher, Digest digest)
          Constructor for a signer with an explicit digest trailer.
ISO9796d2Signer(AsymmetricBlockCipher cipher, Digest digest, boolean implicit)
          Generate a signer for the with either implicit or explicit trailers for ISO9796-2.
 
Method Summary
private  void clearBlock(byte[] block)
          clear possible sensitive data
 byte[] generateSignature()
          generate a signature for the loaded message using the key we were initialised with.
 byte[] getRecoveredMessage()
          Return a reference to the recoveredMessage message.
 boolean hasFullMessage()
          Return true if the full message was recoveredMessage.
 void init(boolean forSigning, CipherParameters param)
          Initialise the signer for signing or verification.
private  boolean isSameAs(byte[] a, byte[] b)
          compare two byte arrays.
 void reset()
          reset the internal state
 void update(byte b)
          update the internal digest with the byte b
 void update(byte[] in, int off, int len)
          update the internal digest with the byte array in
 boolean verifySignature(byte[] signature)
          return true if the signature represents a ISO9796-2 signature for the passed in message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRAILER_IMPLICIT

public static final int TRAILER_IMPLICIT
See Also:
Constant Field Values

TRAILER_RIPEMD160

public static final int TRAILER_RIPEMD160
See Also:
Constant Field Values

TRAILER_RIPEMD128

public static final int TRAILER_RIPEMD128
See Also:
Constant Field Values

TRAILER_SHA1

public static final int TRAILER_SHA1
See Also:
Constant Field Values

digest

private Digest digest

cipher

private AsymmetricBlockCipher cipher

trailer

private int trailer

keyBits

private int keyBits

block

private byte[] block

mBuf

private byte[] mBuf

messageLength

private int messageLength

fullMessage

private boolean fullMessage

recoveredMessage

private byte[] recoveredMessage
Constructor Detail

ISO9796d2Signer

public ISO9796d2Signer(AsymmetricBlockCipher cipher,
                       Digest digest,
                       boolean implicit)
Generate a signer for the with either implicit or explicit trailers for ISO9796-2.

Parameters:
cipher - base cipher to use for signature creation/verification
digest - digest to use.
implicit - whether or not the trailer is implicit or gives the hash.

ISO9796d2Signer

public ISO9796d2Signer(AsymmetricBlockCipher cipher,
                       Digest digest)
Constructor for a signer with an explicit digest trailer.

Parameters:
cipher - cipher to use.
digest - digest to sign with.
Method Detail

init

public void init(boolean forSigning,
                 CipherParameters param)
Description copied from interface: Signer
Initialise the signer for signing or verification.

Specified by:
init in interface Signer
Parameters:
forSigning - true if for signing, false otherwise
param - necessary parameters.

isSameAs

private boolean isSameAs(byte[] a,
                         byte[] b)
compare two byte arrays.


clearBlock

private void clearBlock(byte[] block)
clear possible sensitive data


update

public void update(byte b)
update the internal digest with the byte b

Specified by:
update in interface Signer

update

public void update(byte[] in,
                   int off,
                   int len)
update the internal digest with the byte array in

Specified by:
update in interface Signer

reset

public void reset()
reset the internal state

Specified by:
reset in interface Signer

generateSignature

public byte[] generateSignature()
                         throws CryptoException
generate a signature for the loaded message using the key we were initialised with.

Specified by:
generateSignature in interface Signer
Throws:
CryptoException

verifySignature

public boolean verifySignature(byte[] signature)
return true if the signature represents a ISO9796-2 signature for the passed in message.

Specified by:
verifySignature in interface Signer

hasFullMessage

public boolean hasFullMessage()
Return true if the full message was recoveredMessage.

Specified by:
hasFullMessage in interface SignerWithRecovery
Returns:
true on full message recovery, false otherwise.
See Also:
SignerWithRecovery.hasFullMessage()

getRecoveredMessage

public byte[] getRecoveredMessage()
Return a reference to the recoveredMessage message.

Specified by:
getRecoveredMessage in interface SignerWithRecovery
Returns:
the full/partial recoveredMessage message.
See Also:
SignerWithRecovery.getRecoveredMessage()