public class ISO9796d2Signer extends java.lang.Object implements SignerWithRecovery
Modifier and Type | Field and Description |
---|---|
private byte[] |
block |
private AsymmetricBlockCipher |
cipher |
private Digest |
digest |
private boolean |
fullMessage |
private int |
keyBits |
private byte[] |
mBuf |
private int |
messageLength |
private byte[] |
preBlock |
private byte[] |
preSig |
private byte[] |
recoveredMessage |
private int |
trailer |
static int |
TRAILER_IMPLICIT |
static int |
TRAILER_RIPEMD128 |
static int |
TRAILER_RIPEMD160 |
static int |
TRAILER_SHA1 |
static int |
TRAILER_SHA256 |
static int |
TRAILER_SHA384 |
static int |
TRAILER_SHA512 |
static int |
TRAILER_WHIRLPOOL |
private static java.util.Hashtable |
trailerMap |
Constructor and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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 - constant time
|
void |
reset()
reset the internal state
|
private boolean |
returnFalse(byte[] block) |
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
|
void |
updateWithRecoveredMessage(byte[] signature)
Perform an update with the recovered message before adding any other data.
|
boolean |
verifySignature(byte[] signature)
return true if the signature represents a ISO9796-2 signature
for the passed in message.
|
public static final int TRAILER_IMPLICIT
public static final int TRAILER_RIPEMD160
public static final int TRAILER_RIPEMD128
public static final int TRAILER_SHA1
public static final int TRAILER_SHA256
public static final int TRAILER_SHA512
public static final int TRAILER_SHA384
public static final int TRAILER_WHIRLPOOL
private static java.util.Hashtable trailerMap
private Digest digest
private AsymmetricBlockCipher cipher
private int trailer
private int keyBits
private byte[] block
private byte[] mBuf
private int messageLength
private boolean fullMessage
private byte[] recoveredMessage
private byte[] preSig
private byte[] preBlock
public ISO9796d2Signer(AsymmetricBlockCipher cipher, Digest digest, boolean implicit)
cipher
- base cipher to use for signature creation/verificationdigest
- digest to use.implicit
- whether or not the trailer is implicit or gives the hash.public ISO9796d2Signer(AsymmetricBlockCipher cipher, Digest digest)
cipher
- cipher to use.digest
- digest to sign with.public void init(boolean forSigning, CipherParameters param)
Signer
private boolean isSameAs(byte[] a, byte[] b)
private void clearBlock(byte[] block)
public void updateWithRecoveredMessage(byte[] signature) throws InvalidCipherTextException
SignerWithRecovery
updateWithRecoveredMessage
in interface SignerWithRecovery
signature
- the signature that we are in the process of verifying.InvalidCipherTextException
public void update(byte b)
public void update(byte[] in, int off, int len)
public byte[] generateSignature() throws CryptoException
generateSignature
in interface Signer
CryptoException
public boolean verifySignature(byte[] signature)
verifySignature
in interface Signer
private boolean returnFalse(byte[] block)
public boolean hasFullMessage()
hasFullMessage
in interface SignerWithRecovery
SignerWithRecovery.hasFullMessage()
public byte[] getRecoveredMessage()
getRecoveredMessage
in interface SignerWithRecovery
SignerWithRecovery.getRecoveredMessage()