Создание сертификата X509 в C с использованием постквантового алгоритма открытого ключа?
Я пытаюсь реализовать самозаверяющий сертификат x509, который использует постквантовый (PQ) алгоритм открытого ключа в качестве алгоритма открытого ключа. Я посмотрел на библиотеку openssl в c, и как это делается с использованием RSA. По сути, я пытаюсь повторить тот же формат. Из того, что я видел в библиотеке openssl, RSA и несколько других поддерживаемых алгоритмов интегрированы в крипто-EVP-уровень (ключ хранится как EVP_PKEY). Функции в библиотеке openssl, которые я пытаюсь использовать: X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey) и некоторые другие функции, которые имеют очень похожие входные данные. Есть ли способ, которым я могу интегрировать алгоритм PQ в уровень EVP? Если нет, то есть ли способ использовать слой EVP, который бы достиг той же цели?
Я попытался заглянуть в исходный код evp в библиотеке openssl. Кажется, он поддерживает только определенные алгоритмы, такие как RSA, EC... Я не уверен, возможно ли включить алгоритм PQ в уровень EVP. Я следую примеру в этой ссылке: ( https://www.codepool.biz/how-to-use-openssl-to-generate-x-509-certificate-request.html) для создания сертификата. Вместо ключа RSA я просто подключаю ключ алгоритма PQ. Пока я создаю свой сертификат, он всегда выводится в неправильном формате.
Я использую эту команду: openssl x509 -in x509Req.pem -text -noout для чтения генерации сертификата. Всегда отображается сообщение об ошибке "невозможно загрузить сертификат \n 140688586052032: ошибка:0906D06C: процедуры PEM:PEM_read_bio: нет начальной строки:../crypto/pem/pem_lib.c:691: ожидание: TRUSTED CERTIFICATE".
1 ответ
EVP API использует "ДВИГАТЕЛЬ" для реализации всех симметричных алгоритмов (шифров), дайджестов и асимметричных алгоритмов (алгоритмов с открытым ключом). Модуль ДВИГАТЕЛЯ может быть добавлен / заменен. Смотрите команду двигателя openssl.
Я думаю, что это та область, в которую вы хотите посмотреть. Я не думаю, что есть много документации вокруг этой области (которую я мог бы найти), но есть примеры движков, которые вы можете посмотреть.
Если вы загружаете исходный код openssl, вы можете посмотреть в папке движков примеры движков, которые вы можете использовать, чтобы начать реализацию своих собственных алгоритмов.
Удачи!