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 CK_OBJECT_HANDLE[] C_FindObjects(CK_SESSION_HANDLE session, int ulMaxObjectCount) { uint[] buf = null; ulong[] bufUnix = null; if (isWindows) { buf = new uint[ulMaxObjectCount]; } else { bufUnix = new ulong[ulMaxObjectCount]; } int count = 0; long countUnix = 0; CKR_Exception.check(isWindows ? LibraryWindows.fl.C_FindObjects(session.Handle, buf, ulMaxObjectCount, out count): LibraryUnix.fl.C_FindObjects(session.Handle, bufUnix, ulMaxObjectCount, out countUnix) , "C_FindObjectsInit"); if (!isWindows) { count = (int)countUnix; } CK_OBJECT_HANDLE[] res = new CK_OBJECT_HANDLE[count]; for (int i = 0; i < count; i++) { res[i] = new CK_OBJECT_HANDLE(isWindows ? buf[i] : (uint)bufUnix[i]); } return(res); }
public static void C_DigestKey(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key) { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_DigestKey(session.Handle, key.Handle): LibraryUnix.fl.C_DigestKey(session.Handle, key.Handle) , "C_DigestKey"); }
public static void C_DestroyObject(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE obj) { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_DestroyObject(session.Handle, obj.Handle): LibraryUnix.fl.C_DestroyObject(session.Handle, obj.Handle) , "C_DestroyObject"); }
public static byte[] C_WrapKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key, CK_OBJECT_HANDLE wrappedKey) { int outSize = C_WrapKey(session, mech, key, wrappedKey, null); byte[] output = new byte[outSize]; outSize = C_WrapKey(session, mech, key, wrappedKey, output); return(SubArray(output, outSize)); }
public static void C_SignInit(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_SignInit(session.Handle, m.windows, key.Handle): LibraryUnix.fl.C_SignInit(session.Handle, ref m.unix, key.Handle) , "C_SignInit"); } finally { m.Free(); } }
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 int C_WrapKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key, CK_OBJECT_HANDLE wrappedKey, byte[] output) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); int outSize = output == null ? 0 : output.Length; try { CKR_Exception.check(fl.C_WrapKey(session.Handle, m, key.Handle, wrappedKey.Handle, output, ref outSize), "C_WrapKey"); } finally { m.Free(); } return(outSize); }
public static int C_WrapKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key, CK_OBJECT_HANDLE wrappedKey, byte[] output) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); int outSize = output == null ? 0 : output.Length; long outSizeUnix = output == null ? 0 : output.Length; try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_WrapKey(session.Handle, m.windows, key.Handle, wrappedKey.Handle, output, ref outSize): LibraryUnix.fl.C_WrapKey(session.Handle, ref m.unix, key.Handle, wrappedKey.Handle, output, ref outSizeUnix) , "C_WrapKey"); } finally { m.Free(); } return(isWindows ? outSize : (int)outSizeUnix); }
public static CK_OBJECT_HANDLE[] C_FindObjects(CK_SESSION_HANDLE session, int ulMaxObjectCount) { uint[] buf = new uint[ulMaxObjectCount]; int count = 0; CKR_Exception.check(fl.C_FindObjects(session.Handle, out buf, ulMaxObjectCount, out count), "C_FindObjectsInit"); CK_OBJECT_HANDLE[] res = new CK_OBJECT_HANDLE[count]; for (int i = 0; i < count; i++) { res[i] = new CK_OBJECT_HANDLE(buf[i]); } return(res); }
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; try { CKR_Exception.check(fl.C_GenerateKeyPair(session.Handle, m, tPubRaw, tPub.Length, tPrvRaw, tPrv.Length, out pubKeyHandle, out prvKeyHandle), "C_GenerateKeyPair"); } finally { CK_ATTRIBUTE.Free(tPubRaw); CK_ATTRIBUTE.Free(tPrvRaw); m.Free(); } pubKey = new CK_OBJECT_HANDLE(pubKeyHandle); prvKey = new CK_OBJECT_HANDLE(prvKeyHandle); }
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); }
public static void C_VerifyInit(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); try { CKR_Exception.check(fl.C_VerifyInit(session.Handle, m, key.Handle), "C_VerifyInit"); } finally { m.Free(); } }
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(fl.C_SetAttributeValue(session.Handle, obj.Handle, t, t.Length), "C_SetAttributeValue"); } finally { CK_ATTRIBUTE.Free(t); } }
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 CK_OBJECT_HANDLE C_DeriveKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key, CK_ATTRIBUTE[] pTemplate) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); CK_ATTRIBUTE.Native[] t = CK_ATTRIBUTE.ToNative(pTemplate); uint derivedKeyHandle = 0; try { CKR_Exception.check(fl.C_DeriveKey(session.Handle, m, key.Handle, t, t.Length, out derivedKeyHandle), "C_DeriveKey"); } finally { m.Free(); CK_ATTRIBUTE.Free(t); } return(new CK_OBJECT_HANDLE(derivedKeyHandle)); }
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; try { CKR_Exception.check(fl.C_UnwrapKey(session.Handle, m, key.Handle, input, inSize, t, t.Length, out unwrappedKeyHandle), "C_UnwrapKey"); } finally { m.Free(); CK_ATTRIBUTE.Free(t); } return(new CK_OBJECT_HANDLE(unwrappedKeyHandle)); }
public static void C_DigestKey(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key) { CKR_Exception.check(fl.C_DigestKey(session.Handle, key.Handle), "C_DigestKey"); }
public static CK_OBJECT_HANDLE C_DeriveKey(CK_SESSION_HANDLE session, CK_MECHANISM mech, CK_OBJECT_HANDLE key, CK_ATTRIBUTE[] pTemplate) { CK_MECHANISM.Native m = new CK_MECHANISM.Native(mech); CK_ATTRIBUTE.Native t = CK_ATTRIBUTE.ToNative(pTemplate); uint derivedKeyHandle = 0; ulong derivedKeyHandleUnix = 0; try { CKR_Exception.check(isWindows ? LibraryWindows.fl.C_DeriveKey(session.Handle, m.windows, key.Handle, t.windows, t.Length, out derivedKeyHandle): LibraryUnix.fl.C_DeriveKey(session.Handle, ref m.unix, key.Handle, t.unix, t.Length, out derivedKeyHandleUnix) , "C_DeriveKey"); } finally { m.Free(); CK_ATTRIBUTE.Free(t); } return(new CK_OBJECT_HANDLE(isWindows ? derivedKeyHandle : (uint)derivedKeyHandleUnix)); }
public static void C_DestroyObject(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE obj) { CKR_Exception.check(fl.C_DestroyObject(session.Handle, obj.Handle), "C_DestroyObject"); }