using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; namespace ConsoleApp1.CertificateTest { static class CertificateRequestTest { public static void Test2() { string arrCert = "MIIFzTCCA7WgAwIBAgIINR2tEPf7qlowDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVFcxDzANBgNVBAgMBlRhaXBlaTETMBEGA1UECgwKemVyb3ZhdGVjaDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI0MDExMDAyMjM1NVoXDTI1MDEwOTAyMjM1NVowSDELMAkGA1UEBhMCVFcxDzANBgNVBAgMBlRhaXBlaTEMMAoGA1UECgwDT04xMRowGAYDVQQDDBFQSFNpbXVsYXRvcjAwNjUwMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMsvklQMDo3saUiNb22QFHWRt8lQmiouqGpcu0ECRDo4dfoRE7Z3YqH8qi9JfqawAfOYGLz0ePm8nzN5jmQEADBnwrrunSL601wJJ9/BZ0MtXdYAMUu7rSAWm8tQaxB+bkyTiJOnFRO7xAmUIa9YQbBpFUSP/K95EVuwY3WeogtAdx6fGLbZAosum6I+8JogMd+H5yNCjW1FdvZRN9wxyIo9PjsNXuuAsOMO+G1/R4LGs0HyS3TKME5Kk4ZxC2rXkte7JGftw0wi6k7ebpKVg4JPfedEc96vySipO55nkmmrH1wWX6I5KPwIljs3F2Mj6DqR2KjvklTkjf65tSe2dUJqILR8GYs162QdB43trQyNKp1cGfx9EtsSOlImiaEcCwkp/yK02EQHSXbpAiTif/VZVgFDyb/y0w/lkLIN2ddaoQwf9APWFVEI4efwe9LHGhnvo8BK9tZL5caS0QPZGLnp+fPeEPcHnmB+knhFglb0eEnm8z/rXSC/TShkc4IOJLOkVSwq8nss2/88WGWxJFyw8e6IuPvIYdAAfgHbEGLIT/k8uARo4DdNrgAKw2+pEEG7fNJBFKG0zyL75Jsbfc6F/5uUirf9pDJjaWviFKZ5zOaFrqPP+9eljDi9LtmERBzIxs3Oi3gsQ14JWWD6NdbzLtW/vHygS7Xu8lGF8sjVAgMBAAGjgbswgbgwCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCB4AwMwYJYIZIAYb4QgENBCYWJE9wZW5TU0wgR2VuZXJhdGVkIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUJKJKEZ5u6+0eTODFSGzu55tAuTswHwYDVR0jBBgwFoAUDV+p9KwtnxxjUOHkxUxdXIm1udkwDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4ICAQCG389eF81g7kCX3D1eBTqtq4WqIqc8MW4UZ4MF7L3VPmVeQUl+3kk58ZffXQFn8fstVgs8AGYA9hRNRcA3X6F3esgyGXE4M3H5VHtYm9rsbYfXPg5EgAECzvWBS2KHzYyABHDybOlMPrey60hww0WUWJnTOt6oJRaIwdoM1Wcr0KqmfXkAe6TUeuLqzu7mrkJnhgLpMCY7pYr5NqkUOIau2RPXq0BAo/HE3fjeJatg6kNakO8iODF9HaWxOF72XKV50tiDENc5BI5wDHIMmUoQrwb5KXIYIVD4uRnezrJNzkRk31PlvDw4tW0NvPJ9St87W9sBGBy2kNHluiOm3qzh27ZztgSqFjkHIabJ3xwQ6Rwcn8XeIDIsUvQoGcCHwW+Jqobn/YmlqTlpPyRfb6aWZ9ChNkJSIbTvL2R5VBiHfNoyH1MQ/EKl/EwyI50O5QK9mhdBG7+cckLqOTtS03Tqq7JJ0uPwA5eZARUqKZvg4IV7cAUFJLRtN+LVp5vZrEqt04zm1XqhU9vZ85+ng7/thmIdk9qQN+SOTLmCtAwba3XGXiP/xrJZCsO908ZCl9UxY80GJlNLY+l/sHP1B9OZRCpRtXfq2b+NFuacjiKH3pANQ9Yyiru8JmMuU6bi5PWq9khno47Nyz0J6zyIsPOVQrNgYwH9U596jP6++iUTXQ=="; byte[] bytes = Encoding.ASCII.GetBytes(arrCert); var clientCertificate = new X509Certificate2(bytes); clientCertificate.Verify(); } public static void Test() { string csrString = """ -----BEGIN CERTIFICATE REQUEST----- MIIEhTCCAm0CAQAwQDELMAkGA1UEBhMCVFcxDzANBgNVBAgMBlRhaXBlaTEMMAoG A1UECgwDT04xMRIwEAYDVQQDDAlDaGFyZ2VyMDEwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQCvYJxEPtcjU0dAT1o1P9me9UFGfn2DlsVi3unVsuX04y3g hE3dewfMd7EcVAZKMDPKDMzfN0OH0UOgY9kC6jAwTqxRxlkEdp/dsVKqrG/rxb2l 6j71z1H/m1K57DOxvkq7fJlbgHeKs5c/VEQqGGN4f1ucouoSLJXpumxbxQ76DXJY Qpmd8o5+Nw5Q2VVMr2yJOPWcWQHUZrrLpqXVdKt014VOODFD5OyRmyjJKq0lT7Yo K2k6JjOTGlnUHte/ANHZziz+5nA8yHfuvtX5D7Uug6SDZASs+UV3oh6LfGYuevPh cf+mXkj8ob+QoXvSLJR87MAZeV5WbXBT8jUNMtyfXu3abP4uRapPcOXGPrzsvfjL nqN0yVpjmcl8HAbEtOiFDUBrA0cxd63Ky9moSXNpG+5DbwCdwM0NVtaPkIZcIqO4 TAMEW/4R4qLA4zf/kWvcbGAVQpYjK+dyueT9wRwiUFxnWFPVj7T7OZviP4910O2P McgECNw2LVfT0ESnmT6ZbA4uBXOXBnCSZ3JO85kktK9ajqT6gVAWM1semv9UPgYN GeM6+jno3fdvAPVXqR+VqS1JkMAMsui/xK25etaGluaYpAGUgGDmrOSqqSfU99ay WiNMEldPyfVr7ybAdz057KE8wh8MmwRpeEXRpM1uGRyPlfr6R0TslMBt2NlPpwID AQABoAAwDQYJKoZIhvcNAQENBQADggIBAExk+qp528PuarzCDNOaN5Aid6IDqnIz 47PdjAksBxZQqnoHs4SzJlS+9LGIPAe0DZCAyAHJMs/xGSRaGGRc6nkz0itA5j/5 WWib71Q3ONWS8wKDKJwKw7ISwZ0tBlIc9HbJpIFD6+e0rmvW6U1flHsdMgYgGPBH 43dAVa06QpOxlfR4u/8OOIEuLcz4MClzR6LHqpVDlNn6/KqcbrYkOYWyYELM9fEw gc6fbkW6uZ7NihH3iwhAVP0AetDXgCsz/Fhrr7FLbfEkfpjXgOX4GqJF0GhAs0Mg lWtIL7ud2f/kRB5nbddFfsb3L08OCPqBbqBdVPGy/qi6FmW7MLgfa3XmLhU3hgv6 dI3krgNL0JtWINyZ6UiOVSrt9XkMe5gVWN+bsyspVuNMl0Bm78dtygcujFeOuM1K q3KV3sd2iS/62AClRF4lol+QUwF53LmXWKGj4RUdIaaZKcwguIJnbceWGI++ieOK nIo3TFME8ZlLMihDQsWoFjjW4/1Kwcw8P7f5H3B/Wk0wE3bSEtkWBy9xVA54fxlc 09BTRAKb4pACwLj6jpXOupAW19WSRMqSy33J11GxpgQvAerHpK5Lf5B0Z5lmFuzV fBJSAqvgV+62LbbR8NuOoJvq1bZk2QzqQWbhhgXYpHogsTUTW4wGWV0Ab6l3HSRm Y5a9FOWZk2pL -----END CERTIFICATE REQUEST----- """; string crtString = """ -----BEGIN CERTIFICATE----- MIIFZTCCA02gAwIBAgIILv/AJHx6nkIwDQYJKoZIhvcNAQENBQAwRzELMAkGA1UE BhMCVFcxDzANBgNVBAgMBlRhaXBlaTETMBEGA1UECgwKemVyb3ZhdGVjaDESMBAG A1UEAwwJbG9jYWxob3N0MCAXDTI0MDEwNTA4MTIyNVoYDzIxMjMxMjEyMDgxMjI1 WjBHMQswCQYDVQQGEwJUVzEPMA0GA1UECAwGVGFpcGVpMRMwEQYDVQQKDAp6ZXJv dmF0ZWNoMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDtEPdz7NECvxadr+MfOkdYBgzqa5ME37nx4UiRXSddjmBua7mX dnJUpeOvhxDdvwdGYrMwp7JR1K+re7MSk27cOO00j+YYpxmclZwynxqlHIU6ZrBn +dRdTMUjHWPxSJowpOdpH2Scw1NUsd0dEvkWb/HKvpILTK0YfwKL1qnAmSQtBQx0 kDRtoDXngkAvKJ6WhXRoQOhb8AG1vamlI+/BRqXeKKS2VN8JVYs5CIn9nXvg5Q4k d8OtGlZPSrriNT0alNFFPSTwwqTknYheyKZS1zophagGglzcDddgLGEbVbDSrHhx 6/NPgWcRV+S7/sOeb4m1p9tKdldmdSsHsYkwe5sJBx0m9D9Q7t4xMHEf54kLjmBx au7Vc7i7ZIxbn0wAMgEmj67z5m9NcB8v1P2Ual2SW5/ECxSIlkQQ9r5fFIMW9UlH EIZnLCNrUq56yWY6ZhfIdxXK/LKfrciekPKNwCBnd7EMq/GjPmRzxc/zD73IvNA1 lSZ44D9p+yJIivVK7wTkPSSUlZnBOv1WD202IW8Nl5vqcAKzp8sdrpJBFTKTJ05p P2/1b3S1dPJ+inWC8Y2Zk9yfC33d+of6Wv2MB9ixvB06KoK5uBfMkFTklEF4Liw+ c23XaFNny/GLPyl0KcP5K4peXxfRFJB2eyuLyaf/G5ntOELIu+pAiV+jRwIDAQAB o1MwUTAdBgNVHQ4EFgQUerFfxYRrFlqn+D92lMmpXZXR4dYwHwYDVR0jBBgwFoAU erFfxYRrFlqn+D92lMmpXZXR4dYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B AQ0FAAOCAgEALu0jNIdEvnFGr4kW1QqnkRLj8/N9UFupIkcz1Ao1dl0Txf0u8JGP i9bMdNV/2uylEcr4dAubP0gnUPqwdI8AXEwg0dfSI6QGGhwP5feneIS8484Iruy7 sXZw37RUAdL+z9KOJAxxQhBnnSw/fggtiW1Zn+qBxZg/VHHOfPCEzulGTxgtVN0A qecIvvKCY66ONGea3XVa9Dw5uWg1ZJQIpihxLrli89BCj3E718TkSQ/vpWQ4TBvh LQA8LotnnBlDOzE2Wl+4ycVrW6ctAuawsCY8jk7+XazyxwaFpZn4qpi8iZW168DS GRTx9UlTRhuZvfJfCgdPFJ3etg+DSzdbJnJXlooQLBg6FmD6aqKss+5hJuE3Bupt AFQHDexnBeYkPiA1pi6mwq5mVmJ/DeQdbNcdS0L2zKpYs0yICcUspWSbFm3bjwO1 Ta8M5ABiPgPmLwdrq7LXAjrfmyX5gVKkCqogitvujV2OPFPP/12nM8Ye4THrtsFu IqamiFmQK7IZv6HjWb5DGmtMW8kE92XuTqpq1v8MNQbdNy0DX52bzmZiPy2j2Lka SOoXZ3OHS9jIF2byYkD1C4EtC0ot+jV6U1taKV+Zd5cdr63QTJOD3TlAShAn6I8e PLW4JypQCmNu3D4DZpVP0r6bx1rk0HxUux0dyRAhJWMc9yoWr4gnLsU= -----END CERTIFICATE----- """; var values = UnpackCertificateRequest(csrString); if (values["CN"] != "Charger01") { } var values2 = UnpackCertificate(crtString); if (values["CN"] != "Charger01") { } } public static Dictionary UnpackCertificateRequest(string csrString) { try { var csr = CertificateRequest.LoadSigningRequestPem(csrString, HashAlgorithmName.SHA512); var test = csr.SubjectName.Name; MatchCollection regexResult = Regex.Matches(test, "([a-zA-Z]*)=([a-zA-Z0-9]*)"); if (regexResult.Count == 0) { return null; } return regexResult.Where(x => x.Success == true && x.Groups.Count == 3).ToDictionary(x => x.Groups[1].Value, x => x.Groups[2].Value); } catch (Exception e) { return null; } } public static Dictionary UnpackCertificate(string crt) { try { byte[] bytes = Encoding.ASCII.GetBytes(crt); var clientCertificate = new X509Certificate2(bytes); var test = clientCertificate.Subject; MatchCollection regexResult = Regex.Matches(test, "([a-zA-Z]*)=([a-zA-Z0-9]*)"); if (regexResult.Count == 0) { return null; } return regexResult.Where(x => x.Success == true && x.Groups.Count == 3).ToDictionary(x => x.Groups[1].Value, x => x.Groups[2].Value); } catch (Exception e) { return null; } } } }