public void TestBuildTBSField_SerialNumber_AssertBuilt()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     dynamic tbsField = parser.BuildTBSField("X509.TBS.SerialNumber");
     Assert.NotNull(tbsField);
     Assert.Equal(tbsField.GetType(), typeof(SerialNumberAttributeField));
     Assert.True(tbsField.IsRequired());
 }
        public void TestBuildX509Field_SignatureAlgorithm_AssertBuilt()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            IPolicyExpression field = parser.BuildX509Field("X509.Algorithm");
            Assert.NotNull(field);
            field.GetType().Should().Be(typeof(SignatureAlgorithmField));
        }
예제 #3
0
 private Task<IPolicyExpression> ParseLexicon(string lexicon)
 {
     return Task.Run(() =>
     {
         var parser = new SimpleTextV1LexiconPolicyParser();
         return parser.Parse(lexicon.ToStream());
     });
 }
 public void testParse_extraniousOperator_assertGrammarException()
 {
     using (Stream stream = "1 = 1 =".ToStream())
     {
         var parser = new SimpleTextV1LexiconPolicyParser();
         Assert.Throws<PolicyGrammarException>(() => parser.Parse(stream));
     }
 }
 public void TestParse_NoOperator_AssertGrammarException()
 {
     using (Stream stream = "(1".ToStream())
     {
         var parser = new SimpleTextV1LexiconPolicyParser();
         Assert.Throws<PolicyGrammarException>(() => parser.Parse(stream));
     }
 }
        public void TestParse_SimpleExpression_ValidateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = File.OpenRead("./resources/policies/simpleLexiconSamp1.txt"))
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(11);
            }
        }
        public void TestParse_SimpleExpression_PolicyRef_ValidateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = "X509.Algorithm = 1.2.840.113549.1.1.5".ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }
        }
        public void TestParse_LogicalAndOperator_ValidateSingleTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = File.OpenRead("./resources/policies/logicalAndOperator.txt"))
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(1);
                tokens.First().GetToken().Should().Be("&&");
            }
        }
        public void TestParse_LiteralWithSpaces_ValidateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = File.OpenRead("./resources/policies/literalWithSpaces.txt"))
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
                tokens.First().GetTokenType().Should().Be(TokenType.CERTIFICATE_REFERENCE_EXPRESSION);
            }
        }
        public void TestBuildExtensionField_SubjectAltName_AssertBuilt()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectAltName");
            Assert.NotNull(field);
            Assert.Equal(typeof(SubjectAltNameExtensionField), field.GetType());
            Assert.False(field.IsRequired());

            field = parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectAltName+");
            Assert.NotNull(field);
            Assert.Equal(typeof(SubjectAltNameExtensionField), field.GetType());
            Assert.True(field.IsRequired());
        }
예제 #11
0
 public Boolean IsValidLexicon(CertPolicy policy)
 {
     try
     {
         //might get parser from policy.Lexicon in the future
         var parser = new SimpleTextV1LexiconPolicyParser();
         parser.Parse(policy.Data.ToMemoryStream());
         return true;
     }
     catch (Exception)
     {
         return false;
     }
     
 }
예제 #12
0
        public IPolicyExpression GetPolicyExpression(byte[] policy)
        {
            try
            {
                //might get parser from policy.Lexicon in the future
                var parser = new SimpleTextV1LexiconPolicyParser();
                IPolicyExpression expression = parser.Parse(policy.ToMemoryStream());
                return expression;
            }
            catch (Exception)
            {
                return null;
            }

        }
        public void TestBuildExtensionField_AutorityKeyId_AssertFields()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityKeyIdentifier.KeyId");
            Assert.NotNull(field);
            Assert.Equal(typeof(AuthorityKeyIdentifierKeyIdExtensionField), field.GetType());
            Assert.False(field.IsRequired());


            field = parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityKeyIdentifier.KeyId+");
            Assert.NotNull(field);
            Assert.Equal(typeof(AuthorityKeyIdentifierKeyIdExtensionField), field.GetType());
            Assert.True(field.IsRequired());

            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityKeyIdentifier.CertIssuers"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityKeyIdentifier.CertIssuers+"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityKeyIdentifier.SerialNumber"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityKeyIdentifier.SerialNumber+"));
        }
        public void testParse_tbs_serialnumber_validateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = "X509.TBS.SerialNumber = f74f1c4fe4e1762e".ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }
        }
 public void TestBuildX509Field_UnknownField_AssertNull()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     IPolicyExpression field = parser.BuildX509Field("X509.Bogus");
     Assert.Null(field);
 }
 public void TestBuildX509Field_Signature_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildX509Field("X509.Signature"));
 }
        public void TestBuildExtensionField_ExtendedKeyUsage_AssertBuilt()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.ExtKeyUsageSyntax");
            Assert.NotNull(field);
            Assert.Equal(typeof(ExtendedKeyUsageExtensionField), field.GetType());
            Assert.False(field.IsRequired());


            field = parser.BuildExtensionField("X509.TBS.EXTENSION.ExtKeyUsageSyntax+");
            Assert.NotNull(field);
            Assert.Equal(typeof(ExtendedKeyUsageExtensionField), field.GetType());
            Assert.True(field.IsRequired());
        }
 public void TestBuildExtensionField_FreshestCRL_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.FullName"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.FullName+"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.RelativeToIssuer"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.RelativeToIssuer+"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.Reasons"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.Reasons+"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.CRLIssuer"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.FreshestCRL.CRLIssuer+"));
 }
        public void TestBuildExtensionField_BasicContraints_AssertFields()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.BasicConstraints.CA");
            Assert.NotNull(field);
            Assert.Equal(typeof(BasicContraintsExtensionField), field.GetType());
            Assert.False(field.IsRequired());


            field = parser.BuildExtensionField("X509.TBS.EXTENSION.BasicConstraints.CA+");
            Assert.NotNull(field);
            Assert.Equal(typeof(BasicContraintsExtensionField), field.GetType());
            Assert.True(field.IsRequired());

            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.BasicConstraints.MaxPathLength"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.BasicConstraints.MaxPathLength+"));
        }
        public void TestBuildExtensionField_CRLDispPoints_AssertFields()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.FullName");
            Assert.NotNull(field);
            Assert.Equal(typeof(CRLDistributionPointNameExtentionField), field.GetType());
            Assert.False(field.IsRequired());


            field = parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.FullName+");
            Assert.NotNull(field);
            Assert.Equal(typeof(CRLDistributionPointNameExtentionField), field.GetType());
            Assert.True(field.IsRequired());

            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.RelativeToIssuer"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.RelativeToIssuer+"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.Reasons"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.Reasons+"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.CRLIssuer"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.CRLDistributionPoints.CRLIssuer+"));
        }
        public void TestBuildExtensionField_UnknownField_AssertNull() 
	    {
		    var parser = new SimpleTextV1LexiconPolicyParser();
            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.Bogus");
            Assert.Null(field);
	    }
 public void TestBuildExtensionField_AuhtorityInformationAccess_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectInfoAccessSyntax.Url"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectInfoAccessSyntax.Url+"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectInfoAccessSyntax.AccessMethod"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectInfoAccessSyntax.AccessMethod+"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectInfoAccessSyntax.OCSPLocation"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectInfoAccessSyntax.OCSPLocation+"));
 }
        public void TestBuildExtensionField_AuhtorityInformationAccess_AssertFields()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityInfoAccessSyntax.Url");
            Assert.NotNull(field);
            Assert.Equal(typeof(AuthorityInfoAccessExtentionField), field.GetType());
            Assert.False(field.IsRequired());


            field = parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityInfoAccessSyntax.Url+");
            Assert.NotNull(field);
            Assert.Equal(typeof(AuthorityInfoAccessExtentionField), field.GetType());
            Assert.True(field.IsRequired());

            field = parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityInfoAccessSyntax.OCSPLocation");
            Assert.NotNull(field);
            Assert.Equal(typeof(AuthorityInfoAccessOCSPLocExtentionField), field.GetType());
            Assert.False(field.IsRequired());


            field = parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityInfoAccessSyntax.OCSPLocation+");
            Assert.NotNull(field);
            Assert.Equal(typeof(AuthorityInfoAccessOCSPLocExtentionField), field.GetType());
            Assert.True(field.IsRequired());
            
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityInfoAccessSyntax.AccessMethod"));
            Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.AuthorityInfoAccessSyntax.AccessMethod+"));
        }
        public void TestExtensionBasicContraint_CA_AssertTrue()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();
            using (Stream stream = ("X509.TBS.EXTENSION.BasicConstraints.CA = true").ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }

            using (Stream stream = ("X509.TBS.EXTENSION.BasicConstraints.CA = true").ToStream())
            {
                IPolicyExpression expression = parser.Parse(stream);
                expression.Should().BeAssignableTo<OperationPolicyExpression>();

                var operationPolicyExpression = expression as OperationPolicyExpression;
                operationPolicyExpression.GetOperands().Count.Should().Be(2);
               
            }
        }
 public void TestBuildExtensionField_PolicyConstraints_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.PolicyConstraints"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.PolicyConstraints+"));
 }
        public void TestBuildExtensionField_CertificatePolicies_AssertBuilt()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            dynamic field = parser.BuildExtensionField("X509.TBS.EXTENSION.CertificatePolicies.PolicyOIDs");
            Assert.NotNull(field);
            Assert.Equal(typeof(CertificatePolicyIndentifierExtensionField), field.GetType());
            Assert.False(field.IsRequired());

            field = parser.BuildExtensionField("X509.TBS.EXTENSION.CertificatePolicies.PolicyOIDs+");
            Assert.NotNull(field);
            Assert.Equal(typeof(CertificatePolicyIndentifierExtensionField), field.GetType());
            Assert.True(field.IsRequired());

            field = parser.BuildExtensionField("X509.TBS.EXTENSION.CertificatePolicies.CPSUrls");
            Assert.NotNull(field);
            Assert.Equal(typeof(CertificatePolicyCpsUriExtensionField), field.GetType());
            Assert.False(field.IsRequired());

            field = parser.BuildExtensionField("X509.TBS.EXTENSION.CertificatePolicies.CPSUrls+");
            Assert.NotNull(field);
            Assert.Equal(typeof(CertificatePolicyCpsUriExtensionField), field.GetType());
            Assert.True(field.IsRequired());
        }
 public void TestBuildExtensionField_SubjectDirectoryAttributes_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectDirectoryAttributes"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.SubjectDirectoryAttributes+"));
 }
 public void TestBuildExtensionField_InhibitAnyPolicy_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.InhibitAnyPolicy"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.InhibitAnyPolicy+"));
 }
        public void testParse_requiredCertField_validateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = "X509.TBS.EXTENSION.SubjectKeyIdentifier+ = 1.3.2.3".ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }
        }
 public void TestBuildExtensionField_IssuierAltName_AssertFieldNotImplemented()
 {
     var parser = new SimpleTextV1LexiconPolicyParser();
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.IssuerAltName"));
     Assert.Throws<PolicyParseException>(() => parser.BuildExtensionField("X509.TBS.EXTENSION.IssuerAltName+"));
 }