示例#1
0
        public void EmptyIdentifier()
        {
            AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension();
            AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension(ext);

            Empty(aki);
        }
示例#2
0
        static byte [] GetAuthorityKeyIdentifier(X509Extension ext)
        {
            if (ext == null)
            {
                return(null);
            }

            AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension(ext);

            return(aki.Identifier);
        }
示例#3
0
        public X509ExtensionsList SetAuthorityKeyIdentifier(byte[] id)
        {
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }
            var issuerKeyIdentifier = new AuthorityKeyIdentifierExtension(id);

            Add(issuerKeyIdentifier);
            return(this);
        }
示例#4
0
        /// <summary>
        /// Find the KeyIdentifier of the issuer certificate.
        /// </summary>
        /// <param name="cert"></param>
        /// <returns></returns>
        public static string GetAuthorityKeyIdentifier(this X509Certificate2 cert)
        {
            string keyid     = null;
            var    extension = cert.Extensions[AuthorityKeyIdentifierExtension.Oid_AuthorityKeyIdentifier];

            if (extension != null)
            {
                keyid = new AuthorityKeyIdentifierExtension(extension, extension.Critical).AuthorityKeyIdentifier;
            }
            return(keyid);
        }
示例#5
0
        public void Constructor_Empty()
        {
            AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension();

            aki.Identifier = new byte[] {
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00
            };
            Empty(aki);
        }
示例#6
0
 private void Empty(AuthorityKeyIdentifierExtension aki)
 {
     Assert.IsFalse(aki.Critical, "Critical");
     Assert.AreEqual("2.5.29.35", aki.Oid, "Oid");
     Assert.IsNotNull(aki.Name, "Name");
     Assert.IsFalse(aki.Name == aki.Oid, "Name!=Oid");
     Assert.AreEqual(new byte[] {
         0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00
     }, aki.Identifier, "Identifier");
 }
示例#7
0
        public void ImportBase64Certificate()
        {
            var qwacBase64         = "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";
            var qwacCert           = new X509Certificate2(Encoding.UTF8.GetBytes(qwacBase64), "", X509KeyStorageFlags.Exportable);
            var statements         = default(QualifiedCertificateStatements);
            var policyInfos        = default(PolicyInformation[]);
            var accessDescriptions = default(AccessDescription[]);
            var distributionPoints = default(CRLDistributionPoint[]);
            var keyId          = string.Empty;
            var authoritykeyId = string.Empty;

            foreach (var extension in qwacCert.Extensions)
            {
                if (extension.Oid.Value == QualifiedCertificateStatementsExtension.Oid_QC_Statements)
                {
                    var qcStatements = new QualifiedCertificateStatementsExtension(extension, extension.Critical);
                    statements = qcStatements.Statements;
                }
                if (extension.Oid.Value == CertificatePoliciesExtension.Oid_CertificatePolicies)
                {
                    var policiesExt = new CertificatePoliciesExtension(extension, extension.Critical);
                    policyInfos = policiesExt.Policies;
                }
                if (extension.Oid.Value == AuthorityInformationAccessExtension.Oid_AuthorityInformationAccess)
                {
                    var aia = new AuthorityInformationAccessExtension(extension, extension.Critical);
                    accessDescriptions = aia.AccessDescriptions;
                }
                if (extension.Oid.Value == CRLDistributionPointsExtension.Oid_CRLDistributionPoints)
                {
                    var crl = new CRLDistributionPointsExtension(extension, extension.Critical);
                    distributionPoints = crl.DistributionPoints;
                }
                if (extension.Oid.Value == AuthorityKeyIdentifierExtension.Oid_AuthorityKeyIdentifier)
                {
                    var authkey = new AuthorityKeyIdentifierExtension(extension, extension.Critical);
                    authoritykeyId = authkey.AuthorityKeyIdentifier;
                }
                if (extension.Oid.Value == AuthorityKeyIdentifierExtension.Oid_SubjectKeyIdentifier)
                {
                    keyId = ((X509SubjectKeyIdentifierExtension)extension).SubjectKeyIdentifier;
                }
            }
            Assert.Equal("GR", statements.Psd2Type.AuthorizationId.CountryCode);
            Assert.Equal("BOG", statements.Psd2Type.AuthorizationId.SupervisionAuthority);
            Assert.Equal("800000005", statements.Psd2Type.AuthorizationId.AuthorizationNumber);
            Assert.Equal("838852D2F347686E152CA6A34CACAE17509DBC35", authoritykeyId);
            Assert.Equal("02D324A59192A2E6C6EED29E7AC69FB05073C745", keyId);
            //Assert.Equal("https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml", accessDescriptions[0].ToString());
        }
示例#8
0
        public void Constructor_ASN1()
        {
            AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension();

            ext.Identifier = new byte[] {
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00
            };
            AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension(ext.ASN1);

            Empty(aki);
        }
示例#9
0
        private string GetAuthorityKeyIdentifier(X509Extension ext)
        {
            if (ext == null)
            {
                return(string.Empty);
            }
            AuthorityKeyIdentifierExtension authorityKeyIdentifierExtension = new AuthorityKeyIdentifierExtension(ext);

            byte[] identifier = authorityKeyIdentifierExtension.Identifier;
            if (identifier == null)
            {
                return(string.Empty);
            }
            StringBuilder stringBuilder = new StringBuilder();

            foreach (byte b in identifier)
            {
                stringBuilder.Append(b.ToString("X02"));
            }
            return(stringBuilder.ToString());
        }
示例#10
0
        private string GetAuthorityKeyIdentifier(Mono.Security.X509.X509Extension ext)
        {
            if (ext == null)
            {
                return(string.Empty);
            }
            AuthorityKeyIdentifierExtension authorityKeyIdentifierExtension = new AuthorityKeyIdentifierExtension(ext);

            byte[] identifier = authorityKeyIdentifierExtension.Identifier;
            if (identifier == null)
            {
                return(string.Empty);
            }
            StringBuilder stringBuilder = new StringBuilder();

            byte[] array = identifier;
            for (int i = 0; i < array.Length; i++)
            {
                byte b = array[i];
                stringBuilder.Append(b.ToString("X02"));
            }
            return(stringBuilder.ToString());
        }
示例#11
0
        public void AuthorityKeyIdentifier_Critical()
        {
            AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension();

            aki.Critical   = true;
            aki.Identifier = new byte[] {
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00
            };
            Assert.AreEqual("30-22-06-03-55-1D-23-01-01-FF-04-18-30-16-80-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString(aki.GetBytes()), "GetBytes");

            AuthorityKeyIdentifierExtension aki2 = new AuthorityKeyIdentifierExtension(aki.ASN1);

            Assert.IsTrue(aki2.Critical, "Critical");
            Assert.AreEqual(new byte[] {
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00
            }, aki2.Identifier, "Identifier");
        }