using System.Collections.Generic;
using NUnit.Framework;
namespace Net.Pkcs11Interop.Tests.HighLevelAPI
{
[TestFixture()]
public class _15_CreateCopyDestroyObjectTest
{
[Test()]
public void _01_CreateDestroyObjectTest()
{
using (Pkcs11 pkcs11 = new Pkcs11(Settings.Pkcs11LibraryPath, Settings.AppType))
{
Slot slot = Helpers.GetUsableSlot(pkcs11);
using (Session session = slot.OpenSession(
SessionType.ReadWrite))
{
session.Login(
CKU.CKU_USER, Settings.NormalUserPin);
List<ObjectAttribute> objectAttributes = new List<ObjectAttribute>();
objectAttributes.Add(
new ObjectAttribute(
CKA.CKA_CLASS,
CKO.CKO_DATA));
objectAttributes.Add(
new ObjectAttribute(
CKA.CKA_TOKEN,
true));
objectAttributes.Add(
new ObjectAttribute(
CKA.CKA_APPLICATION, Settings.ApplicationName));
objectAttributes.Add(
new ObjectAttribute(
CKA.CKA_LABEL, Settings.ApplicationName));
objectAttributes.Add(
new ObjectAttribute(
CKA.CKA_VALUE,
"Data object content"));
ObjectHandle objectHandle = session.CreateObject(objectAttributes);
session.DestroyObject(objectHandle);
session.Logout();
}
}
}
[Test()]
public void _02_CopyObjectTest()
{
using (Pkcs11 pkcs11 = new Pkcs11(Settings.Pkcs11LibraryPath, Settings.AppType))
{
Slot slot = Helpers.GetUsableSlot(pkcs11);
using (Session session = slot.OpenSession(
SessionType.ReadWrite))
{
session.Login(
CKU.CKU_USER, Settings.NormalUserPin);
ObjectHandle objectHandle = Helpers.CreateDataObject(session);
ObjectHandle copiedObjectHandle = session.CopyObject(objectHandle, null);
session.DestroyObject(copiedObjectHandle);
session.DestroyObject(objectHandle);
session.Logout();
}
}
}
[Test()]
public void _03_GetObjectSizeTest()
{
using (Pkcs11 pkcs11 = new Pkcs11(Settings.Pkcs11LibraryPath, Settings.AppType))
{
Slot slot = Helpers.GetUsableSlot(pkcs11);
using (Session session = slot.OpenSession(
SessionType.ReadWrite))
{
session.Login(
CKU.CKU_USER, Settings.NormalUserPin);
ObjectHandle objectHandle = Helpers.CreateDataObject(session);
ulong objectSize = session.GetObjectSize(objectHandle);
Assert.IsTrue(objectSize > 0);
session.DestroyObject(objectHandle);
session.Logout();
}
}
}
}
}