Ejemplo n.º 1
0
 public static extern void MDataInfoEncryptEntryKeyNative(
     IntPtr appPtr,
     ulong infoH,
     IntPtr inputPtr,
     IntPtr inputLen,
     IntPtr self,
     MDataInfoEncryptEntryKeyCb callback);
Ejemplo n.º 2
0
 public void MDataInfoEncryptEntryKey(
     IntPtr appPtr,
     ulong infoH,
     IntPtr inputPtr,
     IntPtr inputLen,
     IntPtr self,
     MDataInfoEncryptEntryKeyCb callback)
 {
     MDataInfoEncryptEntryKeyNative(appPtr, infoH, inputPtr, inputLen, self, callback);
 }
Ejemplo n.º 3
0
        public static Task <List <byte> > MDataInfoEncryptEntryKeyAsync(ulong infoH, List <byte> inputBytes)
        {
            var tcs           = new TaskCompletionSource <List <byte> >();
            var inputBytesPtr = inputBytes.ToIntPtr();
            MDataInfoEncryptEntryKeyCb callback = null;

            callback = (self, result, dataPtr, dataLen) => {
                if (result.ErrorCode != 0)
                {
                    tcs.SetException(result.ToException());
                    CallbackManager.Unregister(callback);
                    return;
                }
                var data = dataPtr.ToList <byte>(dataLen);
                tcs.SetResult(data);
                CallbackManager.Unregister(callback);
            };

            CallbackManager.Register(callback);
            NativeBindings.MDataInfoEncryptEntryKey(Session.AppPtr, infoH, inputBytesPtr, (IntPtr)inputBytes.Count, Session.UserData, callback);
            Marshal.FreeHGlobal(inputBytesPtr);

            return(tcs.Task);
        }