Exemplo n.º 1
0
        /// <summary>
        /// Find the ETSI QualifiedExtensions extension and extract all information.
        /// </summary>
        /// <param name="cert"></param>
        /// <returns></returns>
        public static QualifiedCertificateStatements GetQualifiedCertificateStatements(this X509Certificate2 cert)
        {
            var statements = default(QualifiedCertificateStatements);
            var extension  = cert.Extensions[QualifiedCertificateStatementsExtension.Oid_QC_Statements];

            if (extension != null)
            {
                var qcStatements = new QualifiedCertificateStatementsExtension(extension, extension.Critical);
                statements = qcStatements.Statements;
            }
            return(statements);
        }
Exemplo n.º 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());
        }
Exemplo n.º 3
0
        public void ImportBase64Certificate()
        {
            var trustedRootCABase64 = "MIIFJDCCBAygAwIBAgIQHC/9ut45MxRLIscCQhfbaDANBgkqhkiG9w0BAQsFADCBpTELMAkGA1UEBhMCR1IxPjA8BgNVBAoTNUhlbGxlbmljIFB1YmxpYyBBZG1pbmlzdHJhdGlvbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzMQ8wDQYDVQQLEwZIUEFSQ0ExRTBDBgNVBAMTPEhlbGxlbmljIFB1YmxpYyBBZG1pbmlzdHJhdGlvbiBmb3IgTGVnYWwgRW50aXRpZXMgSXNzdWluZyBDQTAeFw0xNjA2MjMwMDAwMDBaFw0yMTAzMjIyMzU5NTlaMIGtMQswCQYDVQQGEwJFTDEPMA0GA1UEBxQGQXRoZW5zMT4wPAYDVQQKFDVIZWxsZW5pYyBUZWxlY29tbXVuaWNhdGlvbnMgYW5kIFBvc3QgQ29tbWlzc2lvbiwgRUVUVDENMAsGA1UECxQERUVUVDE+MDwGA1UEAxM1SGVsbGVuaWMgVGVsZWNvbW11bmljYXRpb25zIGFuZCBQb3N0IENvbW1pc3Npb24sIEVFVFQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZMJ5AkBRXgfSa0uinelv0RdAYvpgrFstUfegJLUymKIS95WTerluheJv3hHH3btz93JWcwLIAK+5SQlJXrYWidcM4IPsZiJzFUWyDfEOev8SVhLYS2/fpdODvla7PInop1sZ2eFtBOvOmnb1iywyrnIFdwFI2JgVFPf2vWL+KU/bPqoaO/syTJ8aTnSh/ZHK05o2xqwAeMVrSgA85BL7sroYGPE5JdCsId5fp0tlItkyBv/60FjKjtIxQHR/xlIDz0fzIhuPXt2q0aygO75PbWuZ/5GqF5pRuMubWqZsCRbcBk0F8QCFWG7dN4SQhfuG5F/2aiuZM/1F49u1HgiXfAgMBAAGjggFEMIIBQDAJBgNVHRMEAjAAMFEGA1UdIARKMEgwRgYMKoIsAIbbMQEHAQEHMDYwNAYIKwYBBQUHAgEWKGh0dHBzOi8vcGtpLmVybWlzLmdvdi5nci9yZXBvc2l0b3J5Lmh0bWwwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lcm1pcy5nb3YuZ3IvSFBBUkNBTGVnYWxFbnRpdGllcy9MYXRlc3RDUkwuY3JsMAsGA1UdDwQEAwIHgDAdBgNVHQ4EFgQUw4lWvFCzRzsC+rLxJ6NpYtWVIbUwHwYDVR0jBBgwFoAUhMvuIoCeLUg3UxsSB3MebzNyO80wEQYDVR0lBAowCAYGBACRNwMAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZXJtaXMuZ292LmdyMA0GCSqGSIb3DQEBCwUAA4IBAQDB8PFBlykkN3mvF6Bv0JBTsP4VnBkeix/VH0qS5omhMPhBLQCvmDS/LdW60miGCyNaSJIOZag2Nubnp4pAyeWNsTMy1HVraYPGYkty0oW4dPx6VQJdKRD2IUZMT7jaQZ1hbtLQItl0C4L5raQNoN3T3giDqlwnMjNAqbrR/mHaV+kui+vojiUQeeNK0FuhHM8zrEXwrt9uSGVTldR98fdGavQ5kfZo79I95jnJhvQLRrivV8kAQh6AOVaCVj7HLdWLKmhq/ecc2t+zS5iUlwWe73oxNPGIc8juzyVav2bHtoF1nJ+QYheDPy+O5U4OcWB6xzpNv4DiAmdI/FR6PZIk";
            var trustedRootCACert   = new X509Certificate2(Encoding.UTF8.GetBytes(trustedRootCABase64), "", X509KeyStorageFlags.Exportable);
            var qwacBase64          = "MIIEOzCCAyOgAwIBAgIVAK6MTxvwfxWX8i/nlayRzW6x76CXMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYDVQQGEwJHUjEPMA0GA1UECBMGQXR0aWtpMQ8wDQYDVQQHEwZBdGhlbnMxFTATBgNVBAoTDEF1dGhvcml0eSBDQTELMAkGA1UECxMCSVQxITAfBgNVBAMTGEF1dGhvcml0eSBDQSBEb21haW4gTmFtZTEZMBcGCSqGSIb3DQEJARYKY2FAdGVzdC5ncjAeFw0xOTA0MTAxMDUxNDlaFw0yMDA0MTAxMDUxNDlaMIGHMRYwFAYDVQQDEw13d3cuaW5kaWNlLmdyMRIwEAYDVQQKEwlJTkRJQ0UgT0UxDDAKBgNVBAsTA1dFQjELMAkGA1UEBhMCR1IxDzANBgNVBAgTBkF0dGlraTEPMA0GA1UEBxMGQXRoZW5zMRwwGgYDVQRhExNQU0RHUi1CT0ctODAwMDAwMDA1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyH+Ai81mfR3gZv17lorvU1Gxuyhpd7A1qoGPQmWAOklHz3UKoFuAC4QqR1ZWrkfA58CgbOb38ExD1I2YpO8TLDtpNzLdtry0yxvdZI7iB5XxBvqm6fORfOD8kHvQr58khdZsI50arL1utELf0PeDoOgVb5TSkVlXa5AVLOKCDYGrFxoGKLh87yc2BdhR1l0nl0ZwcBkVPyeRW894/I1AiH38I8NgotMxWrGZ17bZDc0p7DAZC1RpyXvCjfUQWtG2NftQP166gjnDVKhiPxS1oes85aEjeZWNyqjXa2416owDk/fjDUv9uz/3EM2fXoMJfTH/rY2pC/bBhWiWeiPVcQIDAQABo4GRMIGOMIGLBggrBgEFBQcBAwR/MH0GBgQAgZgnAjBzMEwwEQYHBACBmCcBAQwGUFNQX0FTMBEGBwQAgZgnAQIMBlBTUF9QSTARBgcEAIGYJwEDDAZQU1BfQUkwEQYHBACBmCcBBAwGUFNQX0lDDA5CYW5rIG9mIEdyZWVjZQwTUFNER1ItQk9HLTgwMDAwMDAwNTANBgkqhkiG9w0BAQsFAAOCAQEAujf3FxDieYXbfoeGauThzrXUzYz7RJ6NsIWWhiqM8u9ftFSrbE4rwoy57cUox/gH2Ga7ZFjwANLT0s+mfzbncHw5y8P6ex2NXnjJEo+a5OfKazlPTi7Y+rPNo8pme0NZ9eOqTxPA3bVyqdNDI2g+pDBPWTWiTXWzM79JbQKILvAaqvGPRQk+FFDi+qjYN6Mc2uXZXUuvBr7xhvPO2acQUSZ/F73KAlzb+vIeS3In75lZiBQYqVMFuF6VHv2mqSrP2zW0C7Xm4DY81PF30QY82h+krUIYI8uPzTHXQtkUZeNIksHM32SwQhuBjFENkDkp9pr/Mcfv/bSNcq8sbo0rMw==";
            var qwacCert            = new X509Certificate2(Encoding.UTF8.GetBytes(qwacBase64), "", X509KeyStorageFlags.Exportable);
            var type = default(Psd2CertificateAttributes);

            foreach (var extension in qwacCert.Extensions)
            {
                if (extension.Oid.Value == QualifiedCertificateStatementsExtension.Oid_QC_Statements)
                {
                    var qcStatements = new QualifiedCertificateStatementsExtension(extension, extension.Critical);
                    type = qcStatements.Psd2Type;
                    break;
                }
            }
            Assert.Equal("GR", type.AuthorizationNumber.CountryCode);
            Assert.Equal("BOG", type.AuthorizationNumber.SupervisionAuthority);
            Assert.Equal("800000005", type.AuthorizationNumber.AuthorizationNumber);
        }