private void ClearDigestCache()
{
if (_savedDigests == null)
{
return;
}
ArrayList[] toClose = new ArrayList[3];
lock (_savedDigests)
{
toClose[0] = _extraSavedDigestsBaking;
_extraSavedDigestsBaking = null;
toClose[1] = _extraSavedDigests;
_extraSavedDigests = null;
_newestContext = 0;
_oldestContext = 0;
toClose[2] = new ArrayList();
for (int i = 0; i < MaximumDigests; i++)
{
if (_savedDigests[i].context != null)
{
toClose[2].Add(_savedDigests[i].context);
_savedDigests[i].context = null;
}
_savedDigests[i].timestamp = 0;
}
}
for (int j = 0; j < toClose.Length; j++)
{
if (toClose[j] != null)
{
for (int k = 0; k < toClose[j].Count; k++)
{
((NTAuthentication)toClose[j][k]).CloseContext();
}
}
}
}