using System.Collections.Generic;
using NUnit.Framework;
namespace Net.Pkcs11Interop.Tests.HighLevelAPI
{
[TestFixture()]
public class _15_CreateCopyDestroyObjectTest
{
[Test()]
public void _01_CreateDestroyObjectTest()
{
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);
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));
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_APPLICATION, Settings.ApplicationName));
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_LABEL, Settings.ApplicationName));
objectAttributes.Add(session.Factories.ObjectAttributeFactory.Create(
CKA.CKA_VALUE,
"Data object content"));
IObjectHandle objectHandle = session.CreateObject(objectAttributes);
session.DestroyObject(objectHandle);
session.Logout();
}
}
}
[Test()]
public void _02_CopyObjectTest()
{
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 objectHandle = Helpers.CreateDataObject(session);
IObjectHandle copiedObjectHandle = session.CopyObject(objectHandle, null);
session.DestroyObject(copiedObjectHandle);
session.DestroyObject(objectHandle);
session.Logout();
}
}
}
[Test()]
public void _03_GetObjectSizeTest()
{
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 objectHandle = Helpers.CreateDataObject(session);
ulong objectSize = session.GetObjectSize(objectHandle);
Assert.IsTrue(objectSize > 0);
session.DestroyObject(objectHandle);
session.Logout();
}
}
}
}
}