コード例 #1
0
ファイル: Crypto.cs プロジェクト: arlm/safe_mobile
        public static Task <List <byte> > DecryptSealedBoxAsync(List <byte> cipherText, ulong pkHandle, ulong skHandle)
        {
            var tcs       = new TaskCompletionSource <List <byte> >();
            var cipherPtr = cipherText.ToIntPtr();
            DecryptSealedBoxCb callback = null;

            callback = (self, result, dataPtr, dataLen) => {
                // Marshal.FreeHGlobal(cipherPtr); // TODO: Temp soln
                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.DecryptSealedBox(Session.AppPtr, cipherPtr, (IntPtr)cipherText.Count, pkHandle, skHandle, Session.UserData, callback);
            // Marshal.FreeHGlobal(cipherPtr);

            return(tcs.Task);
        }
コード例 #2
0
 public static extern void DecryptSealedBoxNative(
     IntPtr appPtr,
     IntPtr data,
     IntPtr len,
     ulong pkHandle,
     ulong skHandle,
     IntPtr self,
     DecryptSealedBoxCb callback);
コード例 #3
0
 public void DecryptSealedBox(
     IntPtr appPtr,
     IntPtr data,
     IntPtr len,
     ulong pkHandle,
     ulong skHandle,
     IntPtr self,
     DecryptSealedBoxCb callback)
 {
     DecryptSealedBoxNative(appPtr, data, len, pkHandle, skHandle, self, callback);
 }