private async void UnprotectAsyncBuffer_Click(object sender, RoutedEventArgs e)
        {
            string outputStr    = "";
            string plainMessage = "";

            try
            {
                if (m_protectedBuffer != null)
                {
                    BufferProtectUnprotectResult unBuffer = await DataProtectionManager.UnprotectAsync(m_protectedBuffer);

                    m_unprotectedBuffer = unBuffer.Buffer;
                    plainMessage        = CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8,
                                                                                    m_unprotectedBuffer
                                                                                    );
                    outputStr += "\n Status: " + unBuffer.ProtectionInfo.Status;
                    outputStr += "\n Unprotected string:" + plainMessage;
                    rootPage.NotifyUser(outputStr, NotifyType.StatusMessage);
                }
                else
                {
                    rootPage.NotifyUser("Please protect a buffer to unprotect", NotifyType.ErrorMessage);
                }
            }
            catch (Exception ex)
            {
                rootPage.NotifyUser(outputStr + "\n" + ex.ToString(), NotifyType.ErrorMessage);
            }
        }
Esempio n. 2
0
        private async void DoBufferWork(IBackgroundTaskInstance taskInstance)
        {
            string message            = "Hello World!";
            string unprotectedMessage = "";
            string logFileName        = "Bufferlog.txt";
            string logFileContent     = "";

            StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
            StorageFile   logFile     = await localFolder.CreateFileAsync(logFileName, CreationCollisionOption.OpenIfExists);


            IBuffer inputBuffer = CryptographicBuffer.ConvertStringToBinary(message, BinaryStringEncoding.Utf8);
            BufferProtectUnprotectResult procBuffer = await DataProtectionManager.ProtectAsync(inputBuffer, m_EnterpriseID);

            logFileContent += "\r\n" + DateTime.Now + ":" + "ProtStatus:" + procBuffer.ProtectionInfo.Status + "\n";
            logFileContent += "\r\n" + "Protected Buffer:" + CryptographicBuffer.EncodeToHexString(procBuffer.Buffer).Substring(0, 5);

            // If keys are dropped under lock, unprotectBuffer will fail so don't unprotectbuffer under lock
            if (!m_areKeysDropped)
            {
                BufferProtectUnprotectResult unBuffer = await DataProtectionManager.UnprotectAsync(procBuffer.Buffer);

                unprotectedMessage = CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, procBuffer.Buffer);
                logFileContent    += "\n Unprotected string:" + unprotectedMessage;
                if (message != unprotectedMessage)
                {
                    throw new Exception("Original string does not match with unprotectedMessage!");
                }
            }

            await FileIO.AppendTextAsync(logFile, logFileContent);
        }
Esempio n. 3
0
        private async void ProtectedAccessSuspending(object sender, ProtectedAccessSuspendingEventArgs args)
        {
            string logFileContent = "";

            Windows.Foundation.Deferral deferal = args.GetDeferral();

            // Protect any sensitive data in Memory so that it cannot be accessed while the device is  locked
            // You should encrypt or destory any copies of sensitve data while device is going to a locked state.

            IBuffer inputBuffer = CryptographicBuffer.ConvertStringToBinary(m_SecretMessage,
                                                                            BinaryStringEncoding.Utf8);
            BufferProtectUnprotectResult procBuffer = await DataProtectionManager.ProtectAsync(inputBuffer, m_EnterpriseID);

            m_protectedBuffer = procBuffer.Buffer;

            deferal.Complete();

            m_areKeysDropped = true;

            var settings = ApplicationData.Current.LocalSettings;

            settings.Values[m_taskName] += "\nApp got DPL suspend event";

            StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

            StorageFile logFile = await localFolder.CreateFileAsync("SuspendLog.txt",
                                                                    CreationCollisionOption.OpenIfExists);

            logFileContent += "\r\n" + DateTime.Now + ":" + "Got DPL Protected Suspended";
            logFileContent += "\r\n" + "Protection Status:" + procBuffer.ProtectionInfo.Status;

            await FileIO.AppendTextAsync(logFile, logFileContent);
        }
Esempio n. 4
0
        private async void ProtectedAccessResumed(object sender, ProtectedAccessResumedEventArgs args)
        {
            string logFileContent = "";

            // Keys are available so can read and write from a protected file

            m_areKeysDropped = false;

            //
            BufferProtectUnprotectResult unBuffer = await DataProtectionManager.UnprotectAsync(m_protectedBuffer);

            m_SecretMessage = CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8,
                                                                        m_protectedBuffer
                                                                        );
            logFileContent += "\n Unprotected string:" + m_SecretMessage;

            var settings = ApplicationData.Current.LocalSettings;

            settings.Values[m_taskName] += "\nApp got DPL resumed event";

            StorageFolder localFolder =
                Windows.Storage.ApplicationData.Current.LocalFolder;

            StorageFile logFile = await localFolder.CreateFileAsync("ResumeLog.txt",
                                                                    CreationCollisionOption.OpenIfExists);

            await FileIO.AppendTextAsync(logFile, "\r\n" + DateTime.Now + ":" + "Got DPL Protected resumed");
        }
        private async void ProtectAsyncBuffer_Click(object sender, RoutedEventArgs e)
        {
            string  outputStr   = "\n Protecting string:" + m_protectedMessage;
            IBuffer inputBuffer = CryptographicBuffer.ConvertStringToBinary(m_protectedMessage,
                                                                            BinaryStringEncoding.Utf8);
            BufferProtectUnprotectResult procBuffer = await DataProtectionManager.ProtectAsync(inputBuffer, Scenario1.m_enterpriseId);

            m_protectedBuffer = procBuffer.Buffer;
            outputStr        += "\n Status: " + procBuffer.ProtectionInfo.Status;
            outputStr        += "\n Protected string:";
            outputStr        += CryptographicBuffer.EncodeToHexString(m_protectedBuffer).Substring(0, 20);
            rootPage.NotifyUser(outputStr, NotifyType.StatusMessage);
        }