protected void engineUpdate( byte[] b, int off, int len) throws SignatureException { signer.update(b, off, len); }
protected boolean engineVerify( byte[] sigBytes) throws SignatureException { boolean yes = signer.verifySignature(sigBytes); return yes; }
protected ISOSignatureSpi( Digest digest, AsymmetricBlockCipher cipher) { signer = new ISO9796d2Signer(cipher, digest, true); }
RSAKeyParameters pubParameters = new RSAKeyParameters(false, mod3, pub3); RSAKeyParameters privParameters = new RSAKeyParameters(true, mod3, pri3); RSAEngine rsa = new RSAEngine(); byte[] data; ISO9796d2Signer eng = new ISO9796d2Signer(rsa, new RIPEMD128Digest()); eng.init(true, privParameters); eng.update(msg4[0]); eng.update(msg4, 1, msg4.length - 1); data = eng.generateSignature(); eng.init(false, pubParameters); eng.update(msg4[0]); eng.update(msg4, 1, msg4.length - 1); if (eng.hasFullMessage()) { eng = new ISO9796d2Signer(rsa, new RIPEMD128Digest()); eng.init(false, pubParameters); if (!eng.verifySignature(sig4)) { // signature tampered with } byte[] message = eng.getRecoveredMessage(), 0, msg4); }
RSAEngine rsa = new RSAEngine(); //DS as SHA1 Digest dig = new SHA1Digest(); //3rd parameter "true" indicates implicit which means TF1(octet BC) ISO9796d2Signer eng = new ISO9796d2Signer(rsa, dig, true); eng.init(false, pubKeyParameter); eng.verifySignature(sig); // if the signature is valid eng.getRecoveredMessage(); // get the recovered message, only after successful signature verification
return returnFalse(block); return returnFalse(block); return returnFalse(block); return returnFalse(block); return returnFalse(block); return returnFalse(block); if (!isSameAs(mBuf, recoveredMessage)) return returnFalse(block); clearBlock(mBuf); clearBlock(block);
protected void engineInitSign( PrivateKey privateKey) throws InvalidKeyException { CipherParameters param = RSAUtil.generatePrivateKeyParameter((RSAPrivateKey)privateKey); signer.init(true, param); }
private boolean returnFalse(byte[] block) { messageLength = 0; clearBlock(mBuf); clearBlock(block); return false; }
protected byte[] engineSign() throws SignatureException { try { byte[] sig = signer.generateSignature(); return sig; } catch (Exception e) { throw new SignatureException(e.toString()); } }
public void init( boolean forSigning, CipherParameters param) { RSAKeyParameters kParam = (RSAKeyParameters)param; cipher.init(forSigning, kParam); keyBits = kParam.getModulus().bitLength(); block = new byte[(keyBits + 7) / 8]; if (trailer == TRAILER_IMPLICIT) { mBuf = new byte[block.length - digest.getDigestSize() - 2]; } else { mBuf = new byte[block.length - digest.getDigestSize() - 3]; } reset(); }
return returnFalse(block); return returnFalse(block); return returnFalse(block); return returnFalse(block); return returnFalse(block); return returnFalse(block); if (!isSameAs(mBuf, recoveredMessage)) return returnFalse(block); clearBlock(mBuf); clearBlock(block);
protected void engineInitVerify( PublicKey publicKey) throws InvalidKeyException { CipherParameters param = RSAUtil.generatePublicKeyParameter((RSAPublicKey)publicKey); signer.init(false, param); }
private boolean returnFalse(byte[] block) { clearBlock(mBuf); clearBlock(block); return false; }
protected byte[] engineSign() throws SignatureException { try { byte[] sig = signer.generateSignature(); return sig; } catch (Exception e) { throw new SignatureException(e.toString()); } }
public void init( boolean forSigning, CipherParameters param) { RSAKeyParameters kParam = (RSAKeyParameters)param; cipher.init(forSigning, kParam); keyBits = kParam.getModulus().bitLength(); block = new byte[(keyBits + 7) / 8]; if (trailer == ISOTrailers.TRAILER_IMPLICIT) { mBuf = new byte[block.length - digest.getDigestSize() - 2]; } else { mBuf = new byte[block.length - digest.getDigestSize() - 3]; } reset(); }
protected void engineUpdate( byte[] b, int off, int len) throws SignatureException { signer.update(b, off, len); }
protected void engineInitVerify( PublicKey publicKey) throws InvalidKeyException { CipherParameters param = RSAUtil.generatePublicKeyParameter((RSAPublicKey)publicKey); signer.init(false, param); }
/** * reset the internal state */ public void reset() { digest.reset(); messageLength = 0; clearBlock(mBuf); if (recoveredMessage != null) { clearBlock(recoveredMessage); } recoveredMessage = null; fullMessage = false; }
protected boolean engineVerify( byte[] sigBytes) throws SignatureException { boolean yes = signer.verifySignature(sigBytes); return yes; }
protected ISOSignatureSpi( Digest digest, AsymmetricBlockCipher cipher) { signer = new ISO9796d2Signer(cipher, digest, true); }