public boolean verifySignature(byte[] signature){
  contentDigest.doFinal(mDash,mDash.length - hLen - sLen);
  try {
    byte[] b=cipher.processBlock(signature,0,signature.length);
    System.arraycopy(b,0,block,block.length - b.length,b.length);
  }
 catch (  Exception e) {
    return false;
  }
  if (block[block.length - 1] != trailer) {
    clearBlock(block);
    return false;
  }
  byte[] dbMask=maskGeneratorFunction1(block,block.length - hLen - 1,hLen,block.length - hLen - 1);
  for (int i=0; i != dbMask.length; i++) {
    block[i]^=dbMask[i];
  }
  block[0]&=(0xff >> ((block.length * 8) - emBits));
  for (int i=0; i != block.length - hLen - sLen- 2; i++) {
    if (block[i] != 0) {
      clearBlock(block);
      return false;
    }
  }
  if (block[block.length - hLen - sLen- 2] != 0x01) {
    clearBlock(block);
    return false;
  }
  System.arraycopy(block,block.length - sLen - hLen- 1,mDash,mDash.length - sLen,sLen);
  contentDigest.update(mDash,0,mDash.length);
  contentDigest.doFinal(mDash,mDash.length - hLen);
  for (int i=block.length - hLen - 1, j=mDash.length - hLen; j != mDash.length; i++, j++) {
    if ((block[i] ^ mDash[j]) != 0) {
      clearBlock(mDash);
      clearBlock(block);
      return false;
    }
  }
  clearBlock(mDash);
  clearBlock(block);
  return true;
}

public boolean verifySignature ( byte [ ] signature ) { contentDigest . doFinal ( mDash , mDash . length - hLen - sLen ) ; try { byte [ ] b = cipher . processBlock ( signature , 0 , signature . length ) ; System . arraycopy ( b , 0 , block , block . length - b . length , b . length ) ; } catch ( Exception e ) { return false ; } if ( block [ block . length - 1 ] != trailer ) { clearBlock ( block ) ; return false ; } byte [ ] dbMask = maskGeneratorFunction1 ( block , block . length - hLen - 1 , hLen , block . length - hLen - 1 ) ; for ( int i = 0 ; i != dbMask . length ; i ++ ) { block [ i ] ^= dbMask [ i ] ; } block [ 0 ] &= ( 0xff > > ( ( block . length * 8 ) - emBits ) ) ; for ( int i = 0 ; i != block . length - hLen - sLen - 2 ; i ++ ) { if ( block [ i ] != 0 ) { clearBlock ( block ) ; return false ; } } if ( block [ block . length - hLen - sLen - 2 ] != 0x01 ) { clearBlock ( block ) ; return false ; } System . arraycopy ( block , block . length - sLen - hLen - 1 , mDash , mDash . length - sLen , sLen ) ; contentDigest . update ( mDash , 0 , mDash . length ) ; contentDigest . doFinal ( mDash , mDash . length - hLen ) ; for ( int i = block . length - hLen - 1 , j = mDash . length - hLen ; j != mDash . length ; i ++ , j ++ ) { if ( ( block [ i ] ^ mDash [ j ] ) != 0 ) { clearBlock ( mDash ) ; clearBlock ( block ) ; return false ; } } clearBlock ( mDash ) ; clearBlock ( block ) ; return true ; }
return true if the internal state represents the signature described in the passed in array .
