Beispiel #1
0
        /// <summary>
        /// Certificate Policies Extension.
        /// This extension lists certificate policies, recognized by the issuing CA, that apply to the certificate,
        /// together with optional qualifier information pertaining to these certificate policies.
        /// Typically, different certificate policies will relate to different applications which may use the certified key.
        /// </summary>
        /// <param name="cert"></param>
        /// <returns></returns>
        public static PolicyInformation[] GetCertificatePolicies(this X509Certificate2 cert)
        {
            var policies  = default(PolicyInformation[]);
            var extension = cert.Extensions[CertificatePoliciesExtension.Oid_CertificatePolicies];

            if (extension != null)
            {
                policies = new CertificatePoliciesExtension(extension, extension.Critical).Policies;
            }
            return(policies);
        }
Beispiel #2
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());
        }