2013-11-29 2 views
0

Я создаю сертификат с самописцем с помощью openssl.Как создать идентификатор AuthorityKeyIdentifier из открытого ключа в C?

Я создал пару ключей, используя функцию OpenSSL RSA_generate_key():

key = RSA_generate_key(1024, 65537, null, 0); 

Теперь я хочу, чтобы генерировать Authority Key Identifier для самоподписывающихся сертификата.

RFC, говорит:

Значение поля KeyIdentifier должен быть получен из открытого ключа используется для проверки подписи сертификата или метод, который создает уникальные значения. Два общих метода для генерации ключей идентификаторов открытого ключа описаны в разделе 4.2.1.2.

Хорошо. Давайте посмотрим. В упомянутом разделе 4.2.1.2, описание говорит:

(1) KeyIdentifier состоит из 160-битного SHA-1 хэш значения битовой строки subjectPublicKey (исключая тег, длина , и количество неиспользуемых битов).

(2) KeyIdentifier состоит из поля типа четырех-битового с значение 0100 с последующим наименее значимых 60 бит Ша-1 хэш-значения битовой строки subjectPublicKey (исключая тег , длина и число неиспользуемых битов).

Если я хочу использовать версию (1): как я могу получить данные для хэширования, чтобы создать действительный идентификатор Authority Key?

ответ

0

Сначала вам нужно создать свой сертификат. Затем добавьте Авторитет ключ расширения идентификатора имеет следующие:

add_ext(YourX509SelfSignedCert, NID_authority_key_identifier, "keyid,issuer"); 

можно также использовать только идентификатор ключа, Существует хорошая статья о том, какой из них использовать here

Смежные вопросы