DigestInfo  digInfo;
    protected boolean engineVerify(        byte[]  sigBytes)         throws SignatureException    {        byte[]  hash = new byte[digest.getDigestSize()];        digest.doFinal(hash, 0);        DigestInfo  digInfo;        byte[]      sig;        try        {            sig = cipher.processBlock(sigBytes, 0, sigBytes.length);            digInfo = derDecode(sig);        }        catch (Exception e)        {            return false;        }        if (!digInfo.getAlgorithmId().getObjectId().equals(algId.getObjectId()))        {            return false;        }                if (!isNull(digInfo.getAlgorithmId().getParameters()))        {            return false;        }        byte[]  sigHash = digInfo.getDigest();        if (hash.length != sigHash.length)        {            return false;        }        for (int i = 0; i < hash.length; i++)        {            if (sigHash[i] != hash[i])            {                return false;            }        }        return true;    }