public static byte[] hmac_hash(byte[] key, byte[] data) { try { UnityEngine.Debug.Assert(key.Length == 8); IntPtr keyptr = Marshal.AllocHGlobal(key.Length); Marshal.Copy(key, 0, keyptr, key.Length); Crypt_CSharp.PACKAGE keypg; keypg.src = keyptr; keypg.len = key.Length; IntPtr ptr = Marshal.AllocHGlobal(data.Length); Marshal.Copy(data, 0, ptr, data.Length); Crypt_CSharp.PACKAGE pg; pg.src = ptr; pg.len = data.Length; Crypt_CSharp.PACKAGE res = Crypt_CSharp.hmac_hash(keypg, pg); byte[] buffer = new byte[res.len]; Marshal.Copy(res.src, buffer, 0, res.len); pfree(res); Marshal.FreeHGlobal(keyptr); Marshal.FreeHGlobal(ptr); return(buffer); } catch (Exception) { throw; } }
public static byte[] hmac_hash(byte[] key, byte[] data) { try { IntPtr keyptr = Package.package_packarray(key); IntPtr dataptr = Package.package_packarray(data); IntPtr resptr = Crypt_CSharp.hmac_hash(keyptr, dataptr); byte[] buffer = Package.package_unpackarray(resptr); Package.package_freezero(ref keyptr); Package.package_freezero(ref dataptr); Package.package_freezero(ref resptr); return(buffer); } catch (Exception) { throw; } }