コード例 #1
0
        private async void LoadDataClick(object sender, RoutedEventArgs e)
        {
            try
            {
                RSACryptoServiceProvider rsa;
                WorkHistroySmartContract workHistroySmartContract = new WorkHistroySmartContract();

                using (rsa = new RSACryptoServiceProvider(Consts.RSA_KEY_LENGTH))
                {
                    try
                    {
                        RSACryptoServiceProviderExtensions.FromXmlString(rsa, File.ReadAllText(_xmlStringPath));

                        DataSubjectSharer dataSubjectSharer = new DataSubjectSharer();
                        dataSubjectSharer.WorkHistroySmartContract = workHistroySmartContract;
                        dataSubjectSharer.RSA = rsa;

                        workHistroySmartContract.LoadContract(AddressEntry.Text);

                        string decryptedData = await dataSubjectSharer.DecryptDataFromContract();

                        DataOutput.Text = decryptedData;
                    }
                    finally
                    {
                        rsa.PersistKeyInCsp = false;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: sardap/WorkAuthBlockchain
        public static async Task BenchmarkWorkHistoryBundleCreation(Queue <string> inputQue)
        {
            WorkHistroySmartContract workHistroySmartContract = new WorkHistroySmartContract();
            RSACryptoServiceProvider rsa;
            DataSubjectSharer        dataSubjectSharer = new DataSubjectSharer
            {
                WorkHistroySmartContract = workHistroySmartContract,
            };

            using (rsa = new RSACryptoServiceProvider(Consts.RSA_KEY_LENGTH))
            {
                try
                {
                    dataSubjectSharer.RSA = rsa;

                    string xmlString = new StreamReader("privatePaul.xml").ReadToEnd();
                    RSACryptoServiceProviderExtensions.FromXmlString(rsa, xmlString);

                    DataBundle   dataBundle  = new DataBundle();
                    List <Entry> workHistory = await dataSubjectSharer.GetAllWorkHistory();

                    string input;

                    do
                    {
                        input = inputQue.Dequeue();
                        try
                        {
                            int i = Int32.Parse(input) - 1;
                            dataBundle.WorkHistory.Add(workHistory[i]);
                        }
                        catch (Exception e)
                        {
                        }
                    } while (input != "done");

                    while ((input = inputQue.Dequeue()) != "done")
                    {
                        dataBundle.Referees.Add(await Entry.ReadEntry(input));
                    }

                    input = inputQue.Dequeue();

                    Utils.ExportToJsonFile(input, dataBundle);
                }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }
            }
        }
コード例 #3
0
        public async Task BindData()
        {
            try
            {
                _dataValid    = true;
                _sendersValid = true;

                listView.Items.Clear();

                WorkHistroySmartContract workHistroySmartContract = new WorkHistroySmartContract();

                DataConsumer dataConsumer = new DataConsumer
                {
                    WorkHistroySmartContract = workHistroySmartContract
                };

                foreach (Entry entry in Entries)
                {
                    VerfiyResult verfiyResult = await dataConsumer.Verfiy(entry);

                    VerfiyEntry verfiyEntry = new VerfiyEntry(entry)
                    {
                        SenderValid = verfiyResult.Sender,
                        DataValid   = verfiyResult.Data
                    };

                    if (!verfiyEntry.DataValid)
                    {
                        _dataValid = false;
                    }

                    if (!verfiyEntry.SenderValid)
                    {
                        _sendersValid = false;
                    }

                    listView.Items.Add(verfiyEntry);
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: sardap/WorkAuthBlockchain
        private static async Task EmpMenu(string[] args)
        {
            WorkHistroySmartContract workHistroySmartContract = new WorkHistroySmartContract();
            RSACryptoServiceProvider rsa;
            DataSubjectSharer        dataSubjectSharer = new DataSubjectSharer
            {
                WorkHistroySmartContract = workHistroySmartContract,
            };

            using (rsa = new RSACryptoServiceProvider(Consts.RSA_KEY_LENGTH))
            {
                try
                {
                    dataSubjectSharer.RSA = rsa;

                    string xmlString = new StreamReader(args[1]).ReadToEnd();
                    RSACryptoServiceProviderExtensions.FromXmlString(rsa, xmlString);

                    switch (args[0].ToLower())
                    {
                    case "add":
                        dataSubjectSharer.AddAddress(args[2]);
                        dataSubjectSharer.SaveChangesToAddresses();
                        break;

                    case "craete":
                        await CreateWorkHistoryBundle(dataSubjectSharer);

                        break;

                    case "export":
                        await ExportEntry(dataSubjectSharer);

                        break;
                    }
                }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }
            }
        }
コード例 #5
0
        private async void CreateClick(object sender, RoutedEventArgs e)
        {
            DataEntryPannel.Effect = _blurEffect;
            ProgressBox.Visibility = Visibility.Visible;

            ProgressEntry.Text = "Create Entry...";

            Entry entry = CreateAndPopluateEntry();

            ProgressEntry.Text = "Creating RSA...";

            string senderAddress = EthereumEntry.Text;             // 0x25922333d41f0f3f40be629f81af6983634d0fb6
            string password      = GethEntry.Password;
            string smartContractAddress;

            WorkHistroySmartContract workHistroySmartContract = new WorkHistroySmartContract();
            RSACryptoServiceProvider rsa;

            using (rsa = new RSACryptoServiceProvider(Consts.RSA_KEY_LENGTH))
            {
                try
                {
                    workHistroySmartContract.RSA = rsa;

                    rsa.FromXmlString(File.ReadAllText(_xmlStringPath));

                    DataProdcuer dataPrdocuer = new DataProdcuer
                    {
                        WorkHistroySmartContract = workHistroySmartContract,
                        RSA = rsa
                    };

                    ProgressEntry.Text   = "Waiting for address...";
                    smartContractAddress = await dataPrdocuer.PublishWorkHistoryAsync(entry.OnChainString(), senderAddress, password);

                    entry.Address = smartContractAddress;

                    ProgressEntry.Text = "Saving file...";
                    SaveFileDialog saveFileDialog = new SaveFileDialog();
                    if (saveFileDialog.ShowDialog() == true)
                    {
                        using (StreamWriter file = File.CreateText(saveFileDialog.FileName))
                        {
                            JsonSerializer serializer = new JsonSerializer();
                            //serialize object directly into file stream
                            serializer.Serialize(file, entry);

                            DomainEntry.Text    = "";
                            DeparmentEntry.Text = "";
                            PostionEntry.Text   = "";
                            NameEntry.Text      = "";
                            ExtraInfoEntry.Text = "";
                            EthereumEntry.Text  = "";
                            GethEntry.Password  = "";
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }

                ProgressBox.Visibility = Visibility.Hidden;
                DataEntryPannel.Effect = null;
            }
        }