public static byte[] hmac64(byte[] key1, byte[] key2) { try { IntPtr keyptr1 = Marshal.AllocHGlobal(key1.Length); Marshal.Copy(key1, 0, keyptr1, key1.Length); Crypt_CSharp.PACKAGE pgkey1; pgkey1.src = keyptr1; pgkey1.len = key1.Length; IntPtr keyptr2 = Marshal.AllocHGlobal(key2.Length); Marshal.Copy(key2, 0, keyptr2, key2.Length); Crypt_CSharp.PACKAGE pgkey2; pgkey2.src = keyptr2; pgkey2.len = key2.Length; Crypt_CSharp.PACKAGE res = Crypt_CSharp.hmac64(pgkey1, pgkey2); byte[] buffer = new byte[res.len]; Marshal.Copy(res.src, buffer, 0, res.len); pfree(res); Marshal.FreeHGlobal(keyptr1); Marshal.FreeHGlobal(keyptr2); return(buffer); } catch (Exception) { throw; } }
public static byte[] hmac64(byte[] key1, byte[] key2) { try { IntPtr key1ptr = Package.package_packarray(key1); IntPtr key2ptr = Package.package_packarray(key2); IntPtr resptr = Crypt_CSharp.hmac64(key1ptr, key2ptr); byte[] buffer = Package.package_unpackarray(resptr); Package.package_freezero(ref key1ptr); Package.package_freezero(ref key2ptr); Package.package_freezero(ref resptr); return(buffer); } catch (Exception) { throw; } }