using System.Collections.Generic;
using NUnit.Framework;
namespace Net.Pkcs11Interop.Tests.HighLevelAPI
{
[TestFixture()]
public class _17_ObjectFindingTest
{
[Test()]
public void _01_BasicObjectFindingTest()
{
using (IPkcs11Library pkcs11Library = Settings.Factories.Pkcs11LibraryFactory.LoadPkcs11Library(Settings.Factories, Settings.Pkcs11LibraryPath, Settings.AppType))
{
ISlot slot = Helpers.GetUsableSlot(pkcs11Library);
using (ISession session = slot.OpenSession(
SessionType.ReadWrite))
{
session.Login(
CKU.CKU_USER, Settings.NormalUserPin);
IObjectHandle objectHandle1 = Helpers.CreateDataObject(session);
IObjectHandle objectHandle2 = Helpers.CreateDataObject(session);
List<IObjectAttribute> objectAttributes = new List<IObjectAttribute>();
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_CLASS,
CKO.CKO_DATA));
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_TOKEN,
true));
session.FindObjectsInit(objectAttributes);
List<IObjectHandle> foundObjects = session.FindObjects(2);
session.FindObjectsFinal();
Assert.IsTrue(foundObjects.Count == 2);
Assert.IsTrue((foundObjects[0].ObjectId != CK.CK_INVALID_HANDLE) && (foundObjects[1].ObjectId != CK.CK_INVALID_HANDLE));
session.DestroyObject(objectHandle2);
session.DestroyObject(objectHandle1);
session.Logout();
}
}
}
[Test()]
public void _02_FindAllObjectsTest()
{
using (IPkcs11Library pkcs11Library = Settings.Factories.Pkcs11LibraryFactory.LoadPkcs11Library(Settings.Factories, Settings.Pkcs11LibraryPath, Settings.AppType))
{
ISlot slot = Helpers.GetUsableSlot(pkcs11Library);
using (ISession session = slot.OpenSession(
SessionType.ReadWrite))
{
session.Login(
CKU.CKU_USER, Settings.NormalUserPin);
IObjectHandle objectHandle1 = Helpers.CreateDataObject(session);
IObjectHandle objectHandle2 = Helpers.CreateDataObject(session);
List<IObjectAttribute> objectAttributes = new List<IObjectAttribute>();
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_CLASS,
CKO.CKO_DATA));
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_TOKEN,
true));
List<IObjectHandle> foundObjects = session.FindAllObjects(objectAttributes);
Assert.IsTrue(foundObjects.Count >= 2);
session.DestroyObject(objectHandle2);
session.DestroyObject(objectHandle1);
session.Logout();
}
}
}
}
}