Создание сертификата X509 в C с использованием постквантового алгоритма открытого ключа? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь реализовать самоподписанный сертификат 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: Ожидается: ДОВЕРЕННЫЙ СЕРТИФИКАТ ".

1 Ответ

1 голос
/ 23 мая 2019

API EVP использует «ДВИГАТЕЛЬ» для реализации всех симметричных алгоритмов (шифров), дайджестов и асимметричных алгоритмов (алгоритмов с открытым ключом). Модуль ДВИГАТЕЛЯ может быть добавлен / заменен. См. Команду openssl engine .

Я думаю, что это та область, в которую вы хотите посмотреть. Я не думаю, что вокруг этой области есть много документации (которую я мог бы найти), но есть примеры движков, на которые вы можете посмотреть.

Если вы загрузите исходный код openssl , вы можете найти в папке движков примеры движков, которые вы можете использовать для запуска реализации собственных алгоритмов.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...