private void CheckConsistency(string message = "")
{
TpmHandle[] loadedObjects = GetLoadedEntities(Tpm, Ht.Transient);
TpmHandle[] loadedSessions = GetLoadedEntities(Tpm, Ht.LoadedSession);
TpmHandle[] contextSavedSessions = GetLoadedEntities(Tpm, TpmHelpers.GetEnumerator<Ht>("ActiveSession", "SavedSession"));
int numLoadedObject = 0, numLoadedSession = 0, numSavedSession = 0;
foreach (ObjectContext o in ContextManager.ObjectContexts)
{
if (o.TheSlotType == SlotType.ObjectSlot)
{
if (!o.Loaded)
{
continue;
}
Debug.Assert(loadedObjects.Contains(o.TheTpmHandle));
numLoadedObject++;
}
if (o.TheSlotType == SlotType.SessionSlot)
{
if (o.Loaded)
{
Debug.Assert(loadedSessions.Contains(o.TheTpmHandle));
numLoadedSession++;
}
else
{
TpmHandle translatedHandle = new TpmHandle(Ht.LoadedSession, o.Context.savedHandle.GetOffset());
Debug.Assert(contextSavedSessions.Contains(translatedHandle));
numSavedSession++;
}
}
}
Debug.Assert(numLoadedObject == loadedObjects.Length);
Debug.Assert(numLoadedSession == loadedSessions.Length);
Debug.Assert(numSavedSession == contextSavedSessions.Length);
}