Сообщение
  • Пожалуйста, прежде пройдите авторизацию

Проверка номер политики
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Проверка номер политики

Проверка номер политики 1 год, 4 мес. назад #3912

  • urmnurbo
  • Осваиваюсь на форуме
  • Постов: 26
  • Репутация: 0
Проверка номера политики регистрационного свидетельства и разрешенных способах его использования. Если политика проверяемого регистрационного свидетельства предусматривает ограничение его использования (только в одной системе), то данное регистрационное свидетельство и соответствующий закрытый ключ не использоваться в других системах;

Нужно проверка этой стадии, соответственно есть вопрос правильно ли я проверяю:

1.
X500Principal pol4 = certToCheck.getSubjectX500Principal(); // беру информацию по Principal

Есть два варианта, что там внутри:

  • CN=ТЕСТТОВ ТЕСТТ,SURNAME=ТЕСТТОВ,SERIALNUMBER=IIN123456789012,C=KZ,L=АСТАНА,S=АСТАНА,O=АО \"ТЕСТ\",OU=BIN123456789021,G=ТЕСТТОВИЧ,E=INFO@PKI.GOV.KZ,DC=ROLE00,BusinessCategory=KS0001
    Это сертификат казначейства
  • SubjectDN: CN=ТЕСТОВ ТЕСТ,SURNAME=ТЕСТОВ,SERIALNUMBER=IIN123456789011,C=KZ,L=АСТАНА,S=АСТАНА,O=АО \"ТЕСТ\",OU=BIN123456789021,G=ТЕСТОВИЧ,E=INFO@PKI.GOV.KZ сертификат юр лица


Как я понял нужно проверить BusinessCategory?
То есть:
String oidMap = pol4.getName("RFC1779");
where oidMap [OID.2.5.4.15=KS0001, OID.0.9.2342.19200300.100.1.25=ROLE00, OID.1.2.840.113549.1.9.1=INFO@PKI.GOV.KZ, OID.2.5.4.42=ТЕСТТОВИЧ, OU=BIN123456789021, O="АО \"ТЕСТ\"", ST=АСТАНА, L=АСТАНА, C=KZ, OID.2.5.4.5=IIN123456789012, OID.2.5.4.4=ТЕСТТОВ, CN=ТЕСТТОВ ТЕСТТ]


И именно нужно проверить OID.2.5.4.15.

Если роль KS0001, то не даем подписывать. Есть ли еще другие роли?
Если да, то мне проверять если нету информации по OID.2.5.4.15 (тоесть NULL), то данным сертификатом можно подписывать ? в рамках именного этой проверки?

С уважением, Нурболат.

Re: Проверка номер политики 1 год, 4 мес. назад #3918

  • margulan
  • Модератор
  • Постов: 166
  • Репутация: 12
Если вы хотите исключить сертификаты на основе политики, вам нужно извлечь OID политики из соответствующего расширения сертификата. Пример:

byte[] extvalue = x509Certificate.getExtensionValue(X509Extensions.CertificatePolicies.getId());

        //проверьте extvalue на null

        try (ASN1InputStream stream = new ASN1InputStream(new ByteArrayInputStream(extvalue))) {
            DEROctetString oct = (DEROctetString) stream.readObject();
            try (ASN1InputStream inStream = new ASN1InputStream(new ByteArrayInputStream(oct.getOctets()))) {
                ASN1Sequence aSN1Sequence = (ASN1Sequence) inStream.readObject();
                List<String> result = new ArrayList<>();
                for (int i = 0; i < aSN1Sequence.size(); i++) {
                    PolicyInformation pi = new PolicyInformation((ASN1Sequence) aSN1Sequence.getObjectAt(i));
                    result.add(pi.getPolicyIdentifier().getId());
                }
                return result;
            }
        }


OID-ы политик казначейства помимо других можно посмотреть здесь root.gov.kz/oid.html (1.2.398.5.19.1.2.2.1.3, 1.2.398.5.19.1.2.2.1.2)
Спасибо сказали: urmnurbo
  • Страница:
  • 1
FaLang translation system by Faboba