123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- 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<string,string> 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<string, string> 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;
- }
- }
- }
- }
|