public static bool auth(Shared shared, Users authorizedUsers, PicoBuffer returnedStoredData, QrCallback qrCallback, object data, PicoBuffer localSymmetricKey) { IntPtr sharedPtr = IntPtr.Zero; if (shared != null) { sharedPtr = shared.getIntPtr(); } IntPtr usersPtr = IntPtr.Zero; if (authorizedUsers != null) { usersPtr = authorizedUsers.getIntPtr(); } IntPtr storedDataPtr = IntPtr.Zero; if (returnedStoredData != null) { storedDataPtr = returnedStoredData.getIntPtr(); } IntPtr localSymmetricKeyPtr = IntPtr.Zero; if (localSymmetricKey != null) { localSymmetricKeyPtr = localSymmetricKey.getIntPtr(); } PicoDLL.QrCallbackFunctionInternal internalDelegate = delegate(string qrData, IntPtr intPtr) { return(qrCallback(qrData, ((GCHandle)intPtr).Target)); }; return(PicoDLL.auth(sharedPtr, usersPtr, storedDataPtr, internalDelegate, (IntPtr)GCHandle.Alloc(data), localSymmetricKeyPtr)); }