public void _10_MechanismArrayAttributeTest() { if (Platform.UnmanagedLongSize != 8 || Platform.StructPackingSize != 0) Assert.Inconclusive("Test cannot be executed on this platform"); List<CKM> originalValue = new List<CKM>(); originalValue.Add(CKM.CKM_RSA_PKCS); originalValue.Add(CKM.CKM_AES_CBC); // Create attribute with mechanism array value using (ObjectAttribute attr = new ObjectAttribute(CKA.CKA_ALLOWED_MECHANISMS, originalValue)) { Assert.IsTrue(attr.Type == (ulong)CKA.CKA_ALLOWED_MECHANISMS); List<CKM> recoveredValue = attr.GetValueAsCkmList(); for (int i = 0; i < recoveredValue.Count; i++) Assert.IsTrue(originalValue[i] == recoveredValue[i]); } originalValue = null; // Create attribute with null mechanism array value using (ObjectAttribute attr = new ObjectAttribute(CKA.CKA_ALLOWED_MECHANISMS, originalValue)) { Assert.IsTrue(attr.Type == (ulong)CKA.CKA_ALLOWED_MECHANISMS); Assert.IsTrue(attr.GetValueAsCkmList() == originalValue); } originalValue = new List<CKM>(); // Create attribute with empty mechanism array value using (ObjectAttribute attr = new ObjectAttribute(CKA.CKA_ALLOWED_MECHANISMS, originalValue)) { Assert.IsTrue(attr.Type == (ulong)CKA.CKA_ALLOWED_MECHANISMS); Assert.IsTrue(attr.GetValueAsCkmList() == null); } }