public override void ReleaseSignatureProvider(SignatureProvider signatureProvider)
 {
     if (DisposeSignatureProvider)
     {
         base.ReleaseSignatureProvider(signatureProvider);
     }
 }
Exemplo n.º 2
0
        public void CanGetSignature()
        {
            var signatureProvider = new SignatureProvider(PrivateCertificate, PublicCertificate);
            var messageDigest     = "2012-05-19T17:27:16.630Z1234567890";

            Assert.AreEqual("YVS+Yrr280+ztQ44Qiwp0jYaRO5YJivg/HK7+/AdqUTDLYkPf2hqW6PO1n04LNOhGzAMgCgBmfkxV3fkEAnjmX/tcXU0mnwFxmQC8CjQJ/xpnXo/LDYJtkmfpaFLv0aJCWa2BSNB71Ygr8mtZQ/tach/jaaJwyWbpn+3wkUl7Zc=", signatureProvider.GetSignature(messageDigest));
        }
Exemplo n.º 3
0
        public void when_signature_provider_initialized_with_accept_signature_it_always_allows()
        {
            var signatureProvider = new SignatureProvider(new AcceptSignatureAlgorithm());
            var algorithm         = signatureProvider.GetIssuer("Whatever");

            Assert.IsTrue(algorithm.IssuerAlgorithm.Verify(null, null), "When SignatureProvider was initialized with AcceptSignatureAlgorithm it should accept signatures, which are not denied by other policies");
        }
Exemplo n.º 4
0
        public void VerifySignatureTestSetup()
        {
            file = new Mock <FileWrapper>();
            file.Setup(f => f.ReadAllBytes(It.IsAny <string>()))
            .Returns <string>(givenFile => files[givenFile]);

            console = new Mock <ConsoleWrapper>();

            Container container = ContainerProvider.GetContainer();

            container.Register <FileWrapper>(() => file.Object);
            container.Register <ConsoleWrapper>(() => console.Object);

            var asymmetricKeyPairGenerator = new AsymmetricKeyPairGenerator(new SecureRandomGenerator());
            var primeMapper     = new Rfc3526PrimeMapper();
            var curveNameMapper = new FieldToCurveNameMapper();

            rsaKeyProvider     = new RsaKeyProvider(asymmetricKeyPairGenerator);
            dsaKeyProvider     = new DsaKeyProvider(asymmetricKeyPairGenerator);
            ecKeyProvider      = new EcKeyProvider(asymmetricKeyPairGenerator, curveNameMapper);
            elGamalKeyProvider = new ElGamalKeyProvider(asymmetricKeyPairGenerator, primeMapper);

            signatureProvider = new SignatureProvider(new SignatureAlgorithmIdentifierMapper(), new SecureRandomGenerator(), new SignerUtilitiesWrapper());
            pkcs8PemFormatter = new Pkcs8PemFormattingProvider(new AsymmetricKeyProvider(new OidToCipherTypeMapper(), new KeyInfoWrapper(), rsaKeyProvider, dsaKeyProvider, ecKeyProvider, elGamalKeyProvider));

            base64   = new Base64Wrapper();
            encoding = new EncodingWrapper();
            random   = new SecureRandomGenerator();
        }
Exemplo n.º 5
0
 public void SetUp()
 {
     underTest = new SignatureProvider();
     time      = DateTime.UtcNow;
     secret    = "secret";
     appId     = "xf6tge1";
 }
        private void SignatureProvider_DisposeVariation(string testCase, SignatureProvider provider, ExpectedException expectedException)
        {
            try
            {
                if (testCase.StartsWith("Sign"))
                {
                    provider.Sign(new byte[256]);
                }
                else if (testCase.StartsWith("Verify"))
                {
                    provider.Verify(new byte[256], new byte[256]);
                }
                else if (testCase.StartsWith("Dispose"))
                {
                    provider.Dispose();
                }
                else
                {
                    Assert.True(false, "Test case does not match any scenario");
                }

                expectedException.ProcessNoException();
            }
            catch (Exception ex)
            {
                expectedException.ProcessException(ex);
            }
        }
Exemplo n.º 7
0
        public void CanVerifySignature()
        {
            var signatureProvider = new SignatureProvider(PrivateCertificate, PublicCertificate);
            var messageDigest     = "2012-05-19T17:31:18.000Z0000000000078330Success108429563";
            var signature         = "BXgUCWykw5I+4aDMC0gcJIY4crVfsPMt9NtTpLD9hzANEZB+gZIUOB6iIX2aS8AyxlDEikhM5eCA6UirtIbqcW94W4z0ekvtgBm0dUROACsZxHxqTuSRYDy22a+Qg92ei1eQ6GH0245BCAo3B4H48A91oFCOc963rJ43DrHd0x8=";

            Assert.IsTrue(signatureProvider.VerifySignature(signature, messageDigest));
        }
Exemplo n.º 8
0
        private void WriteJwts(SecurityTokenDescriptor tokenDescriptor, SignatureProvider signatureProvider)
        {
            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
            JwtSecurityToken        jwt          = new JwtSecurityToken(tokenDescriptor.TokenIssuerName, tokenDescriptor.AppliesToAddress, tokenDescriptor.Subject.Claims, tokenDescriptor.Lifetime, tokenDescriptor.SigningCredentials);
            MemoryStream            ms           = new MemoryStream();
            XmlDictionaryWriter     writer       = XmlDictionaryWriter.CreateTextWriter(ms);

            tokenHandler.WriteToken(writer, jwt);
        }
Exemplo n.º 9
0
        public void returns_default_provider_when_issuer_provider_not_specified()
        {
            var defaultAlgorithm  = new Mock <ISignatureAlgorithm>();
            var signatureProvider = new SignatureProvider(defaultAlgorithm.Object);

            IssuerInformation provider = signatureProvider.GetIssuer("someone");

            Assert.AreSame(defaultAlgorithm.Object, provider.IssuerAlgorithm, "When no vendor algorithm provided, default should be returned");
        }
Exemplo n.º 10
0
        private void CreateJwts(SecurityTokenDescriptor tokenDescriptor, SignatureProvider signatureProvider)
        {
            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();

            tokenHandler.CreateToken(issuer: tokenDescriptor.TokenIssuerName,
                                     audience: tokenDescriptor.AppliesToAddress,
                                     subject: tokenDescriptor.Subject,
                                     signingCredentials: tokenDescriptor.SigningCredentials,
                                     signatureProvider: signatureProvider);
        }
Exemplo n.º 11
0
        public void Sign_And_Verify()
        {
            const string expected = "Some text";
            var          key      = KeyGenerator.GenerateKeys().PrivateKey;

            var signature = SignatureProvider.CreateSignatureAsString(key, expected);
            var isValid   = SignatureProvider.VerifySignature(key, expected, signature);

            Assert.True(isValid);
        }
Exemplo n.º 12
0
 public ValueResult <bool> Verify(string data, string signature, string key)
 {
     try
     {
         return(new ValueResult <bool>(SignatureProvider.Verify(data, signature, key), true));
     }
     catch (Exception ex)
     {
         Logger.Error(ex, $"Can't verify signature: {ex.Message}");
         return(new ValueResult <bool>(false, false).Error($"Can't verify signature: {ex.Message}", ex));
     }
 }
Exemplo n.º 13
0
 public ValueResult <string> Sign(string data, string key)
 {
     try
     {
         return(new ValueResult <string>(SignatureProvider.Sign(data, key), true));
     }
     catch (Exception ex)
     {
         Logger.Error(ex, $"Can't sign data: {ex.Message}");
         return(new ValueResult <string>(null, false).Error($"Can't sign data: {ex.Message}", ex));
     }
 }
Exemplo n.º 14
0
 public ValueResult <string> GenerateNewKey()
 {
     try
     {
         return(new ValueResult <string>(SignatureProvider.GenerateNewKey(), true));
     }
     catch (Exception ex)
     {
         Logger.Error(ex, $"Can't generate new key: {ex.Message}");
         return(new ValueResult <string>(null, false).Error($"Can't generate new key: {ex.Message}", ex));
     }
 }
Exemplo n.º 15
0
 private void SignatureProvider_SignVariation(SignatureProvider provider, byte[] bytes, byte[] signature, ExpectedException expectedException)
 {
     try
     {
         provider.Sign(bytes);
         expectedException.ProcessNoException();
     }
     catch (Exception ex)
     {
         expectedException.ProcessException(ex);
     }
 }
Exemplo n.º 16
0
 public override void ReleaseSignatureProvider(SignatureProvider signatureProvider)
 {
     ReleaseSignatureProviderCalled = true;
     if (CustomCryptoProvider != null)
     {
         CustomCryptoProvider.Release(signatureProvider);
     }
     else
     {
         signatureProvider.Dispose();
     }
 }
Exemplo n.º 17
0
            public void ShouldReturnValidKey()
            {
                var algorithmMapper   = new SignatureAlgorithmIdentifierMapper();
                var secureRandom      = new SecureRandomGenerator();
                var signatureProvider = new SignatureProvider(algorithmMapper, secureRandom, new SignerUtilitiesWrapper());

                byte[] data = secureRandom.NextBytes(100);

                IAsymmetricKey result    = keyProvider.GetPrivateKey(rsaKeyPair.PrivateKey.Content);
                Signature      signature = signatureProvider.CreateSignature(result, data);

                Assert.IsTrue(signatureProvider.VerifySignature(rsaKeyPair.PublicKey, signature));
            }
Exemplo n.º 18
0
        public void SetupSignatureProviderTest()
        {
            algorithmIdentifierMapper = new SignatureAlgorithmIdentifierMapper();
            secureRandomGenerator     = new SecureRandomGenerator();
            signatureProvider         = new SignatureProvider(algorithmIdentifierMapper, secureRandomGenerator, new SignerUtilitiesWrapper());

            content = secureRandomGenerator.NextBytes(2000);

            keys = new Dictionary <CipherType, IAsymmetricKeyPair>();

            var rsaGenerator   = new AsymmetricKeyPairGenerator(secureRandomGenerator);
            var rsaKeyProvider = new RsaKeyProvider(rsaGenerator);

            IAsymmetricKeyPair keyPair = rsaKeyProvider.CreateKeyPair(2048);

            keys.Add(keyPair.PrivateKey.CipherType, keyPair);
        }
Exemplo n.º 19
0
        /**
         * <p>Constructs an initialized instance of the receiver.</p>
         *
         * @throws RavenConfigurationException if the application's default settings do not
         * exist or cannot be found or if any mandatory parameters are missing
         */
        public RavenSecureAPI()
        {
            this.rapiVersion = ConfigureParamAsValue("RAPIVersion", "RAVEN_RAPIVERSION", "2", true, CurrentValues.Instance.PacnetRAVEN_RAPIVERSION);
            this.site        = ConfigureParam("RAVEN_GATEWAY", "RAVEN_GATEWAY", null, true, CurrentValues.Instance.PacnetRAVEN_GATEWAY);
            this.userName    = ConfigureParamAsValue("UserName", "RAVEN_USERNAME", null, true, CurrentValues.Instance.PacnetRAVEN_USERNAME);
            this.secret      = ConfigureParam("RAVEN_SECRET", "RAVEN_SECRET", null, true, CurrentValues.Instance.PacnetRAVEN_SECRET);
            this.prefix      = ConfigureParam("RAVEN_PREFIX", "RAVEN_PREFIX", null, true, CurrentValues.Instance.PacnetRAVEN_PREFIX);

            try
            {
                signatureProvider = new SignatureProvider(this.secret);
            }
            catch (Exception e)
            {
                throw new RavenConfigurationException("Problem with secret or algorithm.", e);
            }
        }
Exemplo n.º 20
0
            public void ShouldReturnFalseWhenDataLengthExceptionIsThrown(CipherType cipherType)
            {
                var keyPair   = keys[cipherType];
                var signature = signatureProvider.CreateSignature(keyPair.PrivateKey, content);

                var signer = new Mock <ISigner>();

                signer.Setup(s => s.VerifySignature(It.IsAny <byte[]>()))
                .Throws <DataLengthException>();

                var signerUtilities = new Mock <SignerUtilitiesWrapper>();

                signerUtilities.Setup(w => w.GetSigner(It.IsAny <string>()))
                .Returns(signer.Object);

                signatureProvider = new SignatureProvider(algorithmIdentifierMapper, secureRandomGenerator, signerUtilities.Object);
                Assert.IsFalse(signatureProvider.VerifySignature(keyPair.PublicKey, signature));
            }
        private void Provider_Sign_Verify_ParameterChecking(string testcase, SignatureProvider provider, byte[] bytes, byte[] signature, ExpectedException exceptionExpected = null)
        {
            Console.WriteLine(string.Format("Testcase: '{0}'", testcase));
            try
            {
                if (testcase.StartsWith("Sign"))
                {
                    provider.Sign(bytes);
                }
                else
                {
                    provider.Verify(bytes, signature);
                }

                Assert.IsFalse(exceptionExpected != null && exceptionExpected.Thrown != null, string.Format("Expected exception: '{0}'", exceptionExpected.Thrown));
            }
            catch (Exception ex)
            {
                ExpectedException.ProcessException(exceptionExpected, ex);
            }
        }
 public string GetCacheKeyPublic(SignatureProvider signatureProvider)
 {
     return(base.GetCacheKey(signatureProvider));
 }
Exemplo n.º 23
0
        public void Sign_Should_Produse_Expected_Urls(SignatureRequest request, string expectedResult)
        {
            var signature = new SignatureProvider().Sign(request);

            signature.ToString().Should().Be(expectedResult);
        }
Exemplo n.º 24
0
        protected override void Seed(Contexts.TofiContext context)
        {
            // TODO: if seed already called
            if (context.Currency.FirstOrDefault() != null)
            {
                return;
            }
            var currencies = new List <CurrencyModel>
            {
                new CurrencyModel {
                    Name = "USD"
                },
                new CurrencyModel {
                    Name = "BYN"
                }
            };

            var creditTypes = new List <CreditTypeModel>()
            {
                new CreditTypeModel()
                {
                    Name               = "На все про все",
                    Description        = "Потребительский кредит наличными без поручителей от 100 руб. до 15 000 руб. на срок от 13 месяцев до 5 лет!",
                    InterestRate       = 0.36,
                    CreditRequirements = new List <CreditRequirementModel>()
                    {
                        new CreditRequirementModel
                        {
                            Description   = "Возраст кредитополучателя",
                            ExpectedValue = "От 21 до 62 лет"
                        },
                        new CreditRequirementModel
                        {
                            Description   = "Гражданство",
                            ExpectedValue = "Гражданин Республики Беларусь, либо вид на жительство на территории Республики Беларусь на срок действия кредита"
                        },
                        new CreditRequirementModel
                        {
                            Description   = "Непрерывный стаж на текущем месте работы",
                            ExpectedValue = "Не менее 3 месяцев"
                        }
                    },
                    CreditConditions = new List <CreditConditionModel>
                    {
                        new CreditConditionModel
                        {
                            MaxCreditSum = new PriceModel
                            {
                                Currency = currencies[1],
                                Value    = 15000
                            },
                            MinCreditSum = new PriceModel
                            {
                                Currency = currencies[1],
                                Value    = 100
                            },
                            MonthDurationFrom = 13,
                            MonthDurationTo   = 60
                        }
                    },
                    FineInterest = 0.01m,
                    IsArchived   = false
                },
                new CreditTypeModel
                {
                    Name               = "Все серьезно",
                    Description        = "Выгодные условия! Кредит до 50 000 руб. за один день!",
                    InterestRate       = 0.3,
                    CreditRequirements = new List <CreditRequirementModel>
                    {
                        new CreditRequirementModel
                        {
                            Description   = "Возраст кредитополучателя",
                            ExpectedValue = "От 27 до 62 лет"
                        },
                        new CreditRequirementModel
                        {
                            Description   = "Гражданство",
                            ExpectedValue = "Гражданин Республики Беларусь, либо вид на жительство на территории Республики Беларусь на срок действия кредита"
                        },
                        new CreditRequirementModel
                        {
                            Description   = "Обеспечение",
                            ExpectedValue = @"- неустойка
- поручительство не менее 2-х  физических лиц"
                        }
                    },
                    CreditConditions = new List <CreditConditionModel>
                    {
                        new CreditConditionModel
                        {
                            MonthDurationFrom = 13,
                            MonthDurationTo   = 120,
                            MinCreditSum      = new PriceModel
                            {
                                Currency = currencies[1],
                                Value    = 5000
                            },
                            MaxCreditSum = new PriceModel
                            {
                                Currency = currencies[1],
                                Value    = 50000
                            }
                        }
                    },
                    FineInterest = 0.015m,
                    IsArchived   = false
                },
                new CreditTypeModel()
                {
                    Name               = "Наш деловой",
                    Description        = "Широкий выбор",
                    InterestRate       = 0.45,
                    IsArchived         = false,
                    FineInterest       = 0.017m,
                    CreditRequirements = new List <CreditRequirementModel>
                    {
                        new CreditRequirementModel
                        {
                            Description   = "Возраст кредитополучателя",
                            ExpectedValue = "От 21 года"
                        },
                        new CreditRequirementModel
                        {
                            Description   = "Гражданство",
                            ExpectedValue = "Гражданин Республики Беларусь, либо вид на жительство на территории Республики Беларусь на срок действия кредита"
                        }
                    },
                    CreditConditions = new List <CreditConditionModel>
                    {
                        new CreditConditionModel
                        {
                            MaxCreditSum = new PriceModel
                            {
                                Currency = currencies[1],
                                Value    = 50000
                            },
                            MinCreditSum = new PriceModel
                            {
                                Currency = currencies[1],
                                Value    = 1000
                            },
                            MonthDurationFrom = 13,
                            MonthDurationTo   = 40
                        },
                        new CreditConditionModel
                        {
                            MaxCreditSum = new PriceModel
                            {
                                Currency = currencies[0],
                                Value    = 30000
                            },
                            MinCreditSum = new PriceModel
                            {
                                Currency = currencies[0],
                                Value    = 1000
                            },
                            MonthDurationFrom = 24,
                            MonthDurationTo   = 48
                        }
                    },
                }
            };

            var salt     = SecurityProvider.GetNewSalt();
            var testUser = new UserModel
            {
                Username   = "******",
                Email      = "*****@*****.**",
                FirstName  = "Test",
                LastName   = "Testovich",
                MiddleName = "Иванович",
                Client     = new ClientModel()
                {
                    Address         = "temp",
                    Birthday        = new DateTime(1992, 04, 05),
                    Authority       = "Беларусь",
                    ExpirationDate  = new DateTime(2020, 03, 04),
                    IssueDate       = new DateTime(2009, 01, 06),
                    PassportId      = "1234567890фыва",
                    PassportNumber  = "АВ1234567",
                    Sex             = TOFI.TransferObjects.Client.Enums.Sex.Male,
                    TelephoneNumber = "987654321"
                },
                Key  = SignatureProvider.GenerateNewKey(),
                Auth = new AuthModel
                {
                    PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                    Salt           = salt,
                    SecurityStamp  = Guid.NewGuid().ToString(),
                    LockoutEnabled = true
                },
                EmailConfirmed = true
            };

            salt = SecurityProvider.GetNewSalt();
            var employees = new List <UserModel>()
            {
                new UserModel
                {
                    Username  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Employee",
                    LastName  = "Employevich",
                    Key       = SignatureProvider.GenerateNewKey(),
                    Auth      = new AuthModel
                    {
                        PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                        Salt           = salt,
                        SecurityStamp  = Guid.NewGuid().ToString(),
                        LockoutEnabled = true
                    },
                    Employee = new EmployeeModel
                    {
                        Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.Handyman
                    }
                },
                new UserModel
                {
                    Username  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Cashier",
                    LastName  = "Cashierovich",
                    Key       = SignatureProvider.GenerateNewKey(),
                    Auth      = new AuthModel
                    {
                        PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                        Salt           = salt,
                        SecurityStamp  = Guid.NewGuid().ToString(),
                        LockoutEnabled = true
                    },
                    Employee = new EmployeeModel
                    {
                        Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.Cashier
                    }
                },
                new UserModel
                {
                    Username  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Operator",
                    LastName  = "Operatorovich",
                    Key       = SignatureProvider.GenerateNewKey(),
                    Auth      = new AuthModel
                    {
                        PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                        Salt           = salt,
                        SecurityStamp  = Guid.NewGuid().ToString(),
                        LockoutEnabled = true
                    },
                    Employee = new EmployeeModel
                    {
                        Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.Operator
                    }
                },
                new UserModel
                {
                    Username  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Committee",
                    LastName  = "committeevich",
                    Key       = SignatureProvider.GenerateNewKey(),
                    Auth      = new AuthModel
                    {
                        PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                        Salt           = salt,
                        SecurityStamp  = Guid.NewGuid().ToString(),
                        LockoutEnabled = true
                    },
                    Employee = new EmployeeModel
                    {
                        Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.CreditCommitteeMember
                    }
                },
                new UserModel
                {
                    Username  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Depchef",
                    LastName  = "Depchefovich",
                    Key       = SignatureProvider.GenerateNewKey(),
                    Auth      = new AuthModel
                    {
                        PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                        Salt           = salt,
                        SecurityStamp  = Guid.NewGuid().ToString(),
                        LockoutEnabled = true
                    },
                    Employee = new EmployeeModel
                    {
                        Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.CreditDepartmentChief
                    }
                },
                new UserModel
                {
                    Username  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Security",
                    LastName  = "Securitievich",
                    Key       = SignatureProvider.GenerateNewKey(),
                    Auth      = new AuthModel
                    {
                        PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                        Salt           = salt,
                        SecurityStamp  = Guid.NewGuid().ToString(),
                        LockoutEnabled = true
                    },
                    Employee = new EmployeeModel
                    {
                        Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.SecurityOfficer
                    }
                },
            };

            salt = SecurityProvider.GetNewSalt();
            var adminUser = new UserModel
            {
                Username  = "******",
                Email     = "*****@*****.**",
                FirstName = "Admin",
                LastName  = "Adminovich",
                Key       = SignatureProvider.GenerateNewKey(),
                Auth      = new AuthModel
                {
                    PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                    Salt           = salt,
                    SecurityStamp  = Guid.NewGuid().ToString(),
                    LockoutEnabled = true
                },
                Employee = new EmployeeModel
                {
                    Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.Admin
                }
            };

            salt = SecurityProvider.GetNewSalt();
            var superUser = new UserModel
            {
                Username  = "******",
                Email     = "*****@*****.**",
                FirstName = "Super",
                LastName  = "Superovich",
                Key       = SignatureProvider.GenerateNewKey(),
                Auth      = new AuthModel
                {
                    PasswordHash   = SecurityProvider.ApplySalt("qwe123", salt),
                    Salt           = salt,
                    SecurityStamp  = Guid.NewGuid().ToString(),
                    LockoutEnabled = true
                },
                Employee = new EmployeeModel
                {
                    Rights = TOFI.TransferObjects.Employee.DataObjects.EmployeeRights.Superuser
                }
            };

            context.CreditTypes.AddRange(creditTypes);
            context.Users.Add(testUser);
            context.Users.Add(adminUser);
            context.Users.AddRange(employees);
            context.Users.Add(superUser);
            context.SaveChanges();
        }
Exemplo n.º 25
0
        public void BallotPrompt(ElectionType electionType)
        {
            if (electionType == ElectionType.FirstPastThePost)
            {
                var i = 1;

                Console.WriteLine("Welcome to the election! This is a 'First Past The Post' election model.\nThese are the following candidates to select from:\n" +
                                  string.Join("\n", this.candidateArr.Select(x => $"{i++}: {x}"))
                                  );
                int counter = 1;
                int choice  = 0;
                while (counter < 4)
                {
                    Console.WriteLine("Please select your choice of candidate e.g. 1.");
                    choice = Convert.ToInt32(Console.ReadLine());
                    if (choice < 1 || choice > candidateArr.Length)
                    {
                        Console.WriteLine("Please enter a valid choice.");
                        counter += 1;
                    }
                    else
                    {
                        Console.WriteLine("Thank you for voting!");
                        break;
                    }
                }

                if (counter == 4)
                {
                    Console.WriteLine("You've exhausted your tries. Bye Bye");
                    return;
                }

                FirstPastThePostVote irVote = new FirstPastThePostVote(this.candidateArr[choice - 1]);
                var  jsonVote  = this.voteSerializer.Serialize(irVote);
                var  signature = SignatureProvider.Sign(this.password, this.keyPair, jsonVote.GetBytes());
                Vote vote      = new Vote(this.keyPair.PublicKey.GetBase64String(), jsonVote, signature.GetBase64String());
                this.voteMemoryPool.AddVote(vote);
            }
            else if (electionType == ElectionType.InstantRunoff)
            {
                var i = 1;
                Console.WriteLine("Welcome to the election! This is a 'Instant Runoff' election model.\nThese are the following candidates to select from:\n" +
                                  string.Join("\n", this.candidateArr.Select(x => $"{i++}: {x}"))
                                  );
                // We need to consider when a candidate is not wishing NONE
                int           counter        = 1;
                var           prefs          = "";
                List <string> tokens         = null;
                char[]        charSeparators = new char[] { ',' };
                while (counter < 4)
                {
                    Console.WriteLine("Please type a list in order of candidate preference e.g. 2,1,3.");
                    prefs  = Console.ReadLine();
                    tokens = prefs.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries).ToList();

                    if (tokens.Count > this.candidateArr.Length)
                    {
                        Console.WriteLine("Please enter valid choices in the correct format.");
                        counter += 1;
                    }

                    List <string> rankedOrderedCandidates = new List <string>();

                    for (int j = 0; j < tokens.Count; j++)
                    {
                        rankedOrderedCandidates.Add(this.candidateArr[Convert.ToInt32(tokens[j]) - 1]);
                    }


                    InstantRunoffVote iroVote = new InstantRunoffVote(rankedOrderedCandidates); // make the IR vote
                    var  jsonVote             = this.voteSerializer.Serialize(iroVote);
                    var  signature            = SignatureProvider.Sign(this.password, this.keyPair, jsonVote.GetBytes());
                    Vote vote = new Vote(this.keyPair.PublicKey.GetBase64String(), jsonVote, signature.GetBase64String());
                    this.voteMemoryPool.AddVote(vote);
                    return;
                }

                Console.WriteLine("You've exhausted your tries. Bye Bye");
                return;
            }
        }
Exemplo n.º 26
0
 public override bool TryGetSignatureProvider(SecurityKey securityKey, string algorithm, string typeofProvider, bool willCreateSignatures, out SignatureProvider signatureProvider)
 => throw new InvalidOperationException();
Exemplo n.º 27
0
        private void RunCreationTests(SecurityTokenDescriptor tokenDescriptor, int iterations, bool display = true)
        {
            // Create jwts using wif
            // Create Saml2 tokens
            // Create Saml tokens

            DateTime started;
            string   written = "Created, signed and xmlWrite: '{0}', '{1}' Tokens. Time: '{2}'";
            string   created = "Created, signed: '{0}', '{1}' Tokens. Time: '{2}'";

            SignatureProviderFactory factory           = new SignatureProviderFactory();
            SignatureProvider        signatureProvider = factory.CreateForSigning(tokenDescriptor.SigningCredentials.SigningKey, tokenDescriptor.SigningCredentials.SignatureAlgorithm);

            started = DateTime.UtcNow;
            for (int i = 0; i < iterations; i++)
            {
                CreateJwts(tokenDescriptor, signatureProvider);
            }

            if (display)
            {
                Console.WriteLine(string.Format(created, "JwtHandler - signatureProvider != null", iterations, DateTime.UtcNow - started));
            }

            started = DateTime.UtcNow;
            for (int i = 0; i < iterations; i++)
            {
                CreateJwts(tokenDescriptor, null);
            }

            if (display)
            {
                Console.WriteLine(string.Format(created, "JwtHandler - signatureProvider == null", iterations, DateTime.UtcNow - started));
            }

            started = DateTime.UtcNow;
            for (int i = 0; i < iterations; i++)
            {
                CreateSaml2Tokens(tokenDescriptor);
            }

            if (display)
            {
                Console.WriteLine(string.Format(written, "Saml2", iterations, DateTime.UtcNow - started));
            }

            started = DateTime.UtcNow;
            for (int i = 0; i < iterations; i++)
            {
                CreateSamlTokens(tokenDescriptor);
            }

            if (display)
            {
                Console.WriteLine(string.Format(written, "Saml1", iterations, DateTime.UtcNow - started));
            }

            started = DateTime.UtcNow;
            for (int i = 0; i < iterations; i++)
            {
                WriteJwts(tokenDescriptor, signatureProvider);
            }

            if (display)
            {
                Console.WriteLine(string.Format(written, "JwtHandler", iterations, DateTime.UtcNow - started));
            }
        }
Exemplo n.º 28
0
        public void CanGetThumbprintPublicCertificate()
        {
            var signatureProvider = new SignatureProvider(PrivateCertificate, PublicCertificate);

            Assert.AreEqual(PublicCertificate.Thumbprint, signatureProvider.GetThumbprintAcquirerCertificate());
        }
Exemplo n.º 29
0
 public override bool TryRemove(SignatureProvider signatureProvider)
 => throw new InvalidOperationException();
Exemplo n.º 30
0
 protected override string GetCacheKey(SignatureProvider signatureProvider)
 => throw new InvalidOperationException();