private bool CheckDigestedReferences() { ArrayList references = m_signature.SignedInfo.References; for (int i = 0; i < references.Count; ++i) { Reference digestedReference = (Reference)references[i]; if (!ReferenceUsesSafeTransformMethods(digestedReference)) { return(false); } SignedXmlDebugLog.LogVerifyReference(this, digestedReference); byte[] calculatedHash = null; try { calculatedHash = digestedReference.CalculateHashValue(_containingDocument, m_signature.ReferencedItems); } catch (CryptoSignedXmlRecursionException) { SignedXmlDebugLog.LogSignedXmlRecursionLimit(this, digestedReference); return(false); } // Compare both hashes SignedXmlDebugLog.LogVerifyReferenceHash(this, digestedReference, calculatedHash, digestedReference.DigestValue); if (!CryptographicEquals(calculatedHash, digestedReference.DigestValue)) { return(false); } } return(true); }