Как я могу извлечь атрибуты x509 из CSR (расширенное использование ключа) c # - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь разобрать файл CSR, чтобы сравнить его с шаблоном.С полем Subject (DN) все хорошо, но я не могу разобрать поле CertExtensions с Bouncy Castle.

Я разбираю certInfo следующим образом:

public static Pkcs10CertificationRequest Request (string request) 
{ 
string selectedPath = Loader.requestDirectory.FullName + request; 
string csr = File.ReadAllText(selectedPath);

    char[] characters =
        csr.Replace("-----BEGIN NEW CERTIFICATE REQUEST-----", "")
        .Replace("-----END NEW CERTIFICATE REQUEST-----", "")
        .ToCharArray();

    byte[] csrEncode = Convert.FromBase64CharArray(characters, 0, characters.Length);
    Pkcs10CertificationRequest decodedCsr = new Pkcs10CertificationRequest(csrEncode);
    return decodedCsr;
}

Pkcs10CertificationRequest decodedCsr = Request(*selected request file*);
CertificationRequestInfo requestInfo = decodedCsr.GetCertificationRequestInfo();

И после того, как я могу получить requestInfo.Subject поле.Но если я пытаюсь получить атрибут, подобный requestInfo.Attribute, я получаю что-то вроде этого:

[1.3.6.1.4.1.311.2.1.14, 
    [[[2.5.29.15, TRUE, #030204f0], 
    [2.5.29.37, #303906072a85030306010606082b0601050507030206082b0601050507030406072a85030202220606082a8503030603030506072a85030306000c]

Вместо этого:

Расширения сертификатов (1.3.6.1.4.1.311.2.1.14)
     Использование ключа (2.5.29.15) Критическое
          Цифровая подпись; Неотрекаемость; Шифрование ключей; Шифрование данных
     Улучшенный ключ (2.5.29.37) Не критическое
          Неизвестное использование ключа (1.2.643.3.6.1.6)
          Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)
          Защищенная электронная почта (1.3.6.1.5.5.7.3.4)
          Пользователь Центра Регистрации, HTTP, TLS клиент (1.2.643.2.2.34.6)
          Неизвестное использование ключа (1.2.643.3.6.3.3.5)
          Срок действия сертификата 12 месяцев (1.2.643.3.6.0.12)

Как я могу получить значение (Расширенное использование ключа)из Улучшенный ключ (2.5.29.37) подано

Я пробую разные варианты с

        Asn1Set attributesAsn1Set = requestInfo.Attributes;
        AttributeX509 attribute = new AttributeX509(PkcsObjectIdentifiers.Pkcs9AtExtensionRequest, attributesAsn1Set);

Но получаю тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...