public static void C_GetAttributeValue(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE obj, CK_ATTRIBUTE[] pTemplate) { CK_ATTRIBUTE.Native t = null; IntPtr buf = IntPtr.Zero; try { bool isKnownSize; t = CK_ATTRIBUTE.ToNativeReadSize(pTemplate, out isKnownSize); if (!isKnownSize) { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_GetAttributeValue(session.Handle, obj.Handle, t.windows, t.Length): LibraryUnix.fl.C_GetAttributeValue(session.Handle, obj.Handle, t.unix, t.Length) , "C_GetAttributeValue(null)"); } CK_ATTRIBUTE.ToNativeRead(t); CKR_Exception.check(isWindows ? LibraryWindows.fl.C_GetAttributeValue(session.Handle, obj.Handle, t.windows, t.Length): LibraryUnix.fl.C_GetAttributeValue(session.Handle, obj.Handle, t.unix, t.Length) , "C_GetAttributeValue"); CK_ATTRIBUTE.FromNative(pTemplate, t); } finally { CK_ATTRIBUTE.Free(t); } }
public static void C_FindObjectsInit(CK_SESSION_HANDLE session, CK_ATTRIBUTE[] pTemplate) { CK_ATTRIBUTE.Native t = CK_ATTRIBUTE.ToNative(pTemplate); try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_FindObjectsInit(session.Handle, t.windows, t.Length): LibraryUnix.fl.C_FindObjectsInit(session.Handle, t.unix, t.Length) , "C_FindObjectsInit"); } finally { CK_ATTRIBUTE.Free(t); } }
public static void C_SetAttributeValue(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE obj, CK_ATTRIBUTE[] pTemplate) { CK_ATTRIBUTE.Native t = CK_ATTRIBUTE.ToNative(pTemplate); try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_SetAttributeValue(session.Handle, obj.Handle, t.windows, t.Length): LibraryUnix.fl.C_SetAttributeValue(session.Handle, obj.Handle, t.unix, t.Length) , "C_SetAttributeValue"); } finally { CK_ATTRIBUTE.Free(t); } }
public static CK_OBJECT_HANDLE C_CreateObject(CK_SESSION_HANDLE session, CK_ATTRIBUTE[] pTemplate) { CK_ATTRIBUTE.Native t = CK_ATTRIBUTE.ToNative(pTemplate); uint objHandle = 0; ulong objHandleUnix = 0; try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_CreateObject(session.Handle, t.windows, t.Length, out objHandle): LibraryUnix.fl.C_CreateObject(session.Handle, t.unix, t.Length, out objHandleUnix) , "C_CreateObject"); } finally { CK_ATTRIBUTE.Free(t); } return(new CK_OBJECT_HANDLE(isWindows ? objHandle : (uint)objHandleUnix)); }
public static CK_OBJECT_HANDLE C_GenerateKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_ATTRIBUTE[] pTemplate) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); CK_ATTRIBUTE.Native t = CK_ATTRIBUTE.ToNative(pTemplate); uint keyHandle = 0; ulong keyHandleUnix = 0; try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_GenerateKey(session.Handle, m.windows, t.windows, t.Length, out keyHandle): LibraryUnix.fl.C_GenerateKey(session.Handle, ref m.unix, t.unix, t.Length, out keyHandleUnix) , "C_GenerateKey"); } finally { m.Free(); CK_ATTRIBUTE.Free(t); } return(new CK_OBJECT_HANDLE(isWindows ? keyHandle : (uint)keyHandleUnix)); }
public static CK_OBJECT_HANDLE C_UnwrapKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key, byte[] input, CK_ATTRIBUTE[] pTemplate) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); CK_ATTRIBUTE.Native t = CK_ATTRIBUTE.ToNative(pTemplate); int inSize = input == null ? 0 : input.Length; uint unwrappedKeyHandle = 0; ulong unwrappedKeyHandleUnix = 0; try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_UnwrapKey(session.Handle, m.windows, key.Handle, input, inSize, t.windows, t.Length, out unwrappedKeyHandle): LibraryUnix.fl.C_UnwrapKey(session.Handle, ref m.unix, key.Handle, input, inSize, t.unix, t.Length, out unwrappedKeyHandleUnix) , "C_UnwrapKey"); } finally { m.Free(); CK_ATTRIBUTE.Free(t); } return(new CK_OBJECT_HANDLE(isWindows ? unwrappedKeyHandle : (uint)unwrappedKeyHandleUnix)); }
public static void C_GenerateKeyPair(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_ATTRIBUTE[] tPub, CK_ATTRIBUTE[] tPrv, out CK_OBJECT_HANDLE pubKey, out CK_OBJECT_HANDLE prvKey) { CK_ATTRIBUTE.Native tPubRaw = CK_ATTRIBUTE.ToNative(tPub); CK_ATTRIBUTE.Native tPrvRaw = CK_ATTRIBUTE.ToNative(tPrv); CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); uint pubKeyHandle = 0; uint prvKeyHandle = 0; ulong pubKeyHandleUnix = 0; ulong prvKeyHandleUnix = 0; try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_GenerateKeyPair(session.Handle, m.windows, tPubRaw.windows, tPub.Length, tPrvRaw.windows, tPrv.Length, out pubKeyHandle, out prvKeyHandle): LibraryUnix.fl.C_GenerateKeyPair(session.Handle, ref m.unix, tPubRaw.unix, tPub.Length, tPrvRaw.unix, tPrv.Length, out pubKeyHandleUnix, out prvKeyHandleUnix) , "C_GenerateKeyPair"); } finally { CK_ATTRIBUTE.Free(tPubRaw); CK_ATTRIBUTE.Free(tPrvRaw); m.Free(); } pubKey = new CK_OBJECT_HANDLE(isWindows ? pubKeyHandle : (uint)pubKeyHandleUnix); prvKey = new CK_OBJECT_HANDLE(isWindows ? prvKeyHandle : (uint)prvKeyHandleUnix); }