我如何从CSR(增强密钥用法)中提取x509属性c#

时间:2019-05-16 12:23:31

标签: c# .net bouncycastle

我尝试解析CSR文件以将其与模板进行比较。主题字段(DN)一切都很好,但是我无法用Bouncy Castle解析CertExtensions字段。

我这样解析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);

但是得到相同的结果。

0 个答案:

没有答案