Я пытаюсь программно создать CSR. Я читал об ASN.1, RFC 2986, X.509.
Я также вручную проанализировал несколько файлов CSR с кодировкой DER, которые были созданы с использованием OpenSSL
.
Все выглядит ясным, за исключением пары вещей:
Часть открытого ключа содержит следующие байты
8D 00 30 81 89 02 81 81
перед содержимым BIT STRING (и после03 81
). Что это? Я заметил, что все файлы CSR, закодированные с помощью DER, содержат их. Я ничего о них не нашел в RFC.Часть подписи содержит следующие нечеткие байты перед содержимым подписи, но после
03 81
. Насколько я понимаю, эта часть содержит информацию о последнем октете в BIT STRING (сколько битов в последнем байте на самом деле должно быть принято). Но я не понимаю, как расшифровать эти байты. Например, подпись может выглядеть следующим образом:03 81 81 00 64 12 ... 24 B1 28
где03h
- это формат BIT STRING,81h
длина битовой строки,64 12 ... 24 B1 28
- подпись (но она имеет длину 80h). Я не понимаю часть81 00
.
Заранее спасибо.