org.bouncycastle.crypto.signers

Class ISO9796d2PSSSigner

Implemented Interfaces:
Signer, SignerWithRecovery

public class ISO9796d2PSSSigner
extends java.lang.Object
implements SignerWithRecovery

ISO9796-2 - mechanism using a hash function with recovery (scheme 2 and 3).

Note: the usual length for the salt is the length of the hash function used in bytes.

Field Summary

static int
TRAILER_IMPLICIT
static int
TRAILER_RIPEMD128
static int
TRAILER_RIPEMD160
static int
TRAILER_SHA1

Constructor Summary

ISO9796d2PSSSigner(AsymmetricBlockCipher cipher, Digest digest, int saltLength)
Constructor for a signer with an explicit digest trailer.
ISO9796d2PSSSigner(AsymmetricBlockCipher cipher, Digest digest, int saltLength, boolean implicit)
Generate a signer for the with either implicit or explicit trailers for ISO9796-2, scheme 2 or 3.

Method Summary

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.
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.

Field Details

TRAILER_IMPLICIT

public static final int TRAILER_IMPLICIT

Field Value:
188


TRAILER_RIPEMD128

public static final int TRAILER_RIPEMD128

Field Value:
13004


TRAILER_RIPEMD160

public static final int TRAILER_RIPEMD160

Field Value:
12748


TRAILER_SHA1

public static final int TRAILER_SHA1

Field Value:
13260

Constructor Details

ISO9796d2PSSSigner

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

Parameters:
cipher - cipher to use.
digest - digest to sign with.
saltLength - length of salt in bytes.


ISO9796d2PSSSigner

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

Parameters:
cipher - base cipher to use for signature creation/verification
digest - digest to use.
saltLength - length of salt in bytes.
implicit - whether or not the trailer is implicit or gives the hash.

Method Details

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


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()


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, or if not sure.

See Also:
SignerWithRecovery.hasFullMessage()


init

public void init(boolean forSigning,
                 CipherParameters param)
Initialise the signer.
Specified by:
init in interface Signer

Parameters:
forSigning - true if for signing, false if for verification.
param - parameters for signature generation/verification. If the parameters are for generation they should be a ParametersWithRandom, a ParametersWithSalt, or just an RSAKeyParameters object. If RSAKeyParameters are passed in a SecureRandom will be created.


reset

public void reset()
reset the internal state
Specified by:
reset in interface Signer


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


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