コード例 #1
0
        private void InitializeConfiguration()
        {
            var certificateStore    = new CertificateStore(ModuleLogger(nameof(CertificateStore)));
            var compressor          = new GZipCompressor(ModuleLogger(nameof(GZipCompressor)));
            var passwordEncryption  = new PasswordEncryption(ModuleLogger(nameof(PasswordEncryption)));
            var publicKeyEncryption = new PublicKeyEncryption(certificateStore, ModuleLogger(nameof(PublicKeyEncryption)));
            var symmetricEncryption = new PublicKeySymmetricEncryption(certificateStore, ModuleLogger(nameof(PublicKeySymmetricEncryption)), passwordEncryption);
            var repositoryLogger    = ModuleLogger(nameof(ConfigurationRepository));
            var xmlParser           = new XmlParser(compressor, ModuleLogger(nameof(XmlParser)));
            var xmlSerializer       = new XmlSerializer(ModuleLogger(nameof(XmlSerializer)));

            configuration = new ConfigurationRepository(certificateStore, new HashAlgorithm(), repositoryLogger);
            appConfig     = configuration.InitializeAppConfig();

            configuration.Register(new BinaryParser(
                                       compressor,
                                       new HashAlgorithm(),
                                       ModuleLogger(nameof(BinaryParser)),
                                       passwordEncryption,
                                       publicKeyEncryption,
                                       symmetricEncryption, xmlParser));
            configuration.Register(new BinarySerializer(
                                       compressor,
                                       ModuleLogger(nameof(BinarySerializer)),
                                       passwordEncryption,
                                       publicKeyEncryption,
                                       symmetricEncryption,
                                       xmlSerializer));
            configuration.Register(new XmlParser(compressor, ModuleLogger(nameof(XmlParser))));
            configuration.Register(new XmlSerializer(ModuleLogger(nameof(XmlSerializer))));
            configuration.Register(new FileResourceLoader(ModuleLogger(nameof(FileResourceLoader))));
            configuration.Register(new FileResourceSaver(ModuleLogger(nameof(FileResourceSaver))));
            configuration.Register(new NetworkResourceLoader(appConfig, new ModuleLogger(logger, nameof(NetworkResourceLoader))));
        }
コード例 #2
0
        public void Initialize()
        {
            logger = new Mock <ILogger>();
            store  = new Mock <ICertificateStore>();

            LoadCertificate();
            store.Setup(s => s.TryGetCertificateWith(It.IsAny <byte[]>(), out certificate)).Returns(true);

            sut = new PublicKeyEncryption(store.Object, logger.Object);
        }
コード例 #3
0
        private void InitializeConfiguration()
        {
            var executable       = Assembly.GetExecutingAssembly();
            var programBuild     = FileVersionInfo.GetVersionInfo(executable.Location).FileVersion;
            var programCopyright = executable.GetCustomAttribute <AssemblyCopyrightAttribute>().Copyright;
            var programTitle     = executable.GetCustomAttribute <AssemblyTitleAttribute>().Title;
            var programVersion   = executable.GetCustomAttribute <AssemblyInformationalVersionAttribute>().InformationalVersion;

            var certificateStore    = new CertificateStore(ModuleLogger(nameof(CertificateStore)));
            var compressor          = new GZipCompressor(ModuleLogger(nameof(GZipCompressor)));
            var passwordEncryption  = new PasswordEncryption(ModuleLogger(nameof(PasswordEncryption)));
            var publicKeyEncryption = new PublicKeyEncryption(certificateStore, ModuleLogger(nameof(PublicKeyEncryption)));
            var symmetricEncryption = new PublicKeySymmetricEncryption(certificateStore, ModuleLogger(nameof(PublicKeySymmetricEncryption)), passwordEncryption);
            var repositoryLogger    = ModuleLogger(nameof(ConfigurationRepository));
            var xmlParser           = new XmlParser(ModuleLogger(nameof(XmlParser)));
            var xmlSerializer       = new XmlSerializer(ModuleLogger(nameof(XmlSerializer)));

            configuration = new ConfigurationRepository(
                certificateStore,
                new HashAlgorithm(),
                repositoryLogger,
                executable.Location,
                programBuild,
                programCopyright,
                programTitle,
                programVersion);
            appConfig = configuration.InitializeAppConfig();

            configuration.Register(new BinaryParser(
                                       compressor,
                                       new HashAlgorithm(),
                                       ModuleLogger(nameof(BinaryParser)),
                                       passwordEncryption,
                                       publicKeyEncryption,
                                       symmetricEncryption, xmlParser));
            configuration.Register(new BinarySerializer(
                                       compressor,
                                       ModuleLogger(nameof(BinarySerializer)),
                                       passwordEncryption,
                                       publicKeyEncryption,
                                       symmetricEncryption,
                                       xmlSerializer));
            configuration.Register(new XmlParser(ModuleLogger(nameof(XmlParser))));
            configuration.Register(new XmlSerializer(ModuleLogger(nameof(XmlSerializer))));
            configuration.Register(new FileResourceLoader(ModuleLogger(nameof(FileResourceLoader))));
            configuration.Register(new FileResourceSaver(ModuleLogger(nameof(FileResourceSaver))));
            configuration.Register(new NetworkResourceLoader(appConfig, new ModuleLogger(logger, nameof(NetworkResourceLoader))));
        }
コード例 #4
0
        public void TestInitialise()
        {
            fieldSize = 128;
            n         = 20;
            t         = 5;

            sch = new Schoenmakers();
            sch.SelectPrimeAndGenerators(fieldSize);
            pke      = new PublicKeyEncryption();
            keypairs = new List <Tuple <byte[], byte[]> >();
            for (int i = 0; i < n; i++)
            {
                var pair = pke.GenerateKeyPair(sch.GetqB(), sch.GetGB());
                keypairs.Add(pair);
            }
            sch.SetPublicKeys(keypairs.Select(po => po.Item2).ToList());
        }
コード例 #5
0
        public IEnumerable <SecretSharingBenchmarkReport> BenchmarkKey(int MinN, int MaxN, int MinK, int MaxK, int step,
                                                                       SecretSharingBenchmarkReport.OperationType operation, string key, int iterate, List <LoadedPrimeNumber> loadedPrimes)
        {
            List <SecretSharingBenchmarkReport> results = new List <SecretSharingBenchmarkReport>();
            var filteredPrimes = loadedPrimes.Where(po => po.PrimeSize == key.Length * 8).ToList();

            PrimeGenerator.SetLoadedPrimes(filteredPrimes);

            Schoenmakers schoenmakers = new Schoenmakers();

            pke = new PublicKeyEncryption();

            //TODO: ensure it's secure enough
            int fieldSize = key.Length * 8;

            for (int n = MinN; n <= MaxN; n += step)
            {
                //k can not be bigger than n

                //Parallel.For(1, MaxK, k =>
                //{
                List <long> initProtocolElapsedTicks = new List <long>();
                Antix.Testing.Benchmark.Run(() => InitProtocolWrapper(ref schoenmakers, n, fieldSize, ref initProtocolElapsedTicks), iterate);
                results.Add(new SecretSharingBenchmarkReport()
                {
                    n            = n,
                    k            = 0,
                    ElapsedTicks = initProtocolElapsedTicks.ToArray(),
                    keyLength    = key.Length * 8,
                    Operation    = SecretSharingBenchmarkReport.OperationType.InitProtocol,
                });
                //for (int k = MinK; k <= n && k <= MaxK; )
                //{
                //            List<long> verifySharesElapsedTicks = new List<long>();

                //            List<long> divideRandomSecretElapsedTicks = new List<long>();
                //            var decryptShareElapsedTicks = new List<long>();
                //            var verifyDecryptedSharesTicks = new List<long>();
                //            var reconstructRandomSecretElapsedTicks = new List<long>();
                //            byte[] secret = null;
                //            Antix.Testing.Benchmark.Run(() =>
                //            {
                //                List<Byte[]> Commitments = new List<byte[]>();
                //                byte[] U = null;
                //                List<SchoenmakersShare> shares = null;

                //                shares = DivideRandomSecretWrapper(ref schoenmakers, n, k, ref secret, ref divideRandomSecretElapsedTicks, ref Commitments);
                //                List<byte[]> publickeys = keypairs.Select(po => po.Item2).ToList();
                //                VerifyDistributedShares(ref schoenmakers, shares, Commitments, publickeys, ref verifySharesElapsedTicks);
                //                DecryptSharesWrapper(ref schoenmakers, ref shares, keypairs, ref decryptShareElapsedTicks);
                //                VerifyDecryptedShares(ref schoenmakers, shares, k, ref verifyDecryptedSharesTicks);
                //                ReconstructRandomSecretWrapper(ref schoenmakers, shares, k, ref reconstructRandomSecretElapsedTicks);
                //            }, iterate);

                //            #region adding results

                //            results.Add(new SecretSharingBenchmarkReport()
                //            {
                //                n = n,
                //                k = k,
                //                ElapsedTicks = divideRandomSecretElapsedTicks.ToArray(),
                //                keyLength = key.Length * 8,
                //                Operation = SecretSharingBenchmarkReport.OperationType.ShareGenerationRandomSecret,
                //            });

                //            results.Add(new SecretSharingBenchmarkReport()
                //            {
                //                n = n,
                //                k = k,
                //                ElapsedTicks = verifySharesElapsedTicks.ToArray(),
                //                keyLength = key.Length * 8,
                //                Operation = SecretSharingBenchmarkReport.OperationType.VerifyShares,
                //            });

                //            results.Add(new SecretSharingBenchmarkReport()
                //            {
                //                n = n,
                //                k = k,
                //                ElapsedTicks = decryptShareElapsedTicks.ToArray(),
                //                keyLength = key.Length * 8,
                //                Operation = SecretSharingBenchmarkReport.OperationType.DecryptShares,
                //            });


                //            results.Add(new SecretSharingBenchmarkReport()
                //            {
                //                n = n,
                //                k = k,
                //                ElapsedTicks = verifyDecryptedSharesTicks.ToArray(),
                //                keyLength = key.Length * 8,
                //                Operation = SecretSharingBenchmarkReport.OperationType.VerifyPooledShares,
                //            });


                //            results.Add(new SecretSharingBenchmarkReport()
                //            {
                //                n = n,
                //                k = k,
                //                ElapsedTicks = reconstructRandomSecretElapsedTicks.ToArray(),
                //                keyLength = key.Length * 8,
                //                Operation = SecretSharingBenchmarkReport.OperationType.RandomSecretReconstruction,
                //            });
                //            #endregion

                //            Console.WriteLine("Iteration info: n:{0} t:{1} keySize:{2}", n, k, key/*s[i]*/.Length * 8);
                //    if (k == 1) k = step;
                //    else k += step;
                //}
            }//);
            var orderedResults = results.OrderBy(po => po.n).ThenBy(po => po.k);

            return(orderedResults);
        }