BouncyCastle - конвертировать X509CrlEntry.SerialNumber в шестнадцатеричную строку в стиле CAPI - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь использовать Org.BouncyCastle.X509 для вывода содержимого списков отзыва сертификатов (CRL). В этом случае мне нужно получить список серийных номеров сертификатов в их строковом представлении «шестнадцатеричное», как они отображаются в оснастке MM C сертификатов (примерное значение будет 16a03c2c000000000594 ).

Я могу добраться до точки, где у меня есть коллекция объектов X509CRLEntry для итерации, но свойство SerialNumber имеет тип Org.BouncyCastle.Math. BigInteger . Этот тип имеет реализацию ToString () , однако возвращенное значение мне не пригодно:

public CRLProc(string CRLFile)
        {
            X509CrlParser Parser = new X509CrlParser();
            X509Crl CRL = Parser.ReadCrl(File.ReadAllBytes(CRLFile));
            NextUpdate = CRL.NextUpdate.Value;
            var RevokedCerts = CRL.GetRevokedCertificates();

            foreach(X509CrlEntry entry in RevokedCerts)
            {
                //Target value (first SN in CRL): 16a03c2c000000000594

                string serialNumber = entry.SerialNumber.ToString();
                //serialNumber = "106847877515466973906324" (Nope)

                string serialFromBytes = Encoding.Default.GetString(entry.SerialNumber.ToByteArray());
                //serialFromBytes = "\u0016 <,\0\0\0\0\u0005”" (That's a hard NO)

                string serialFromBigInt = entry.SerialNumber.LongValue.ToString("X");
                //serialFromBigInt = "3C2C000000000594" (OK, now we're getting somewhere!!)
            }

Итак, похоже, LongValue.ToString FTW, но последний кусочек головоломки - как получить первые 2 октета серийного номера («16 a0»). Нужны советы по этому поводу!

1 Ответ

1 голос
/ 27 февраля 2020

Если вы просто хотите, чтобы серийный номер был шестнадцатеричной строкой, BigInteger имеет перегрузку ToString, которая принимает ось, например:

string serialFromBigInt = entry.SerialNumber.ToString(16);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...