private bool CheckHashDataInfosOfSigAndRefsTimeStamp(TimeStamp timeStamp)
{
UnsignedSignatureProperties unsignedSignatureProperties;
bool signatureValueHashDataInfoFound = false;
bool allSignatureTimeStampHashDataInfosFound = false;
bool completeCertificateRefsHashDataInfoFound = false;
bool completeRevocationRefsHashDataInfoFound = false;
ArrayList signatureTimeStampIds = new ArrayList();
bool retVal = true;
unsignedSignatureProperties = this.XadesObject.QualifyingProperties.UnsignedProperties.UnsignedSignatureProperties;
foreach (TimeStamp signatureTimeStamp in unsignedSignatureProperties.SignatureTimeStampCollection)
{
signatureTimeStampIds.Add("#" + signatureTimeStamp.EncapsulatedTimeStamp.Id);
}
signatureTimeStampIds.Sort();
foreach (HashDataInfo hashDataInfo in timeStamp.HashDataInfoCollection)
{
if (hashDataInfo.UriAttribute == "#" + this.signatureValueId)
{
signatureValueHashDataInfoFound = true;
}
int signatureTimeStampIdIndex = signatureTimeStampIds.BinarySearch(hashDataInfo.UriAttribute);
if (signatureTimeStampIdIndex >= 0)
{
signatureTimeStampIds.RemoveAt(signatureTimeStampIdIndex);
}
if (hashDataInfo.UriAttribute == "#" + unsignedSignatureProperties.CompleteCertificateRefs.Id)
{
completeCertificateRefsHashDataInfoFound = true;
}
if (hashDataInfo.UriAttribute == "#" + unsignedSignatureProperties.CompleteRevocationRefs.Id)
{
completeRevocationRefsHashDataInfoFound = true;
}
}
if (signatureTimeStampIds.Count == 0)
{
allSignatureTimeStampHashDataInfosFound = true;
}
retVal = signatureValueHashDataInfoFound && allSignatureTimeStampHashDataInfosFound && completeCertificateRefsHashDataInfoFound && completeRevocationRefsHashDataInfoFound;
return retVal;
}