Отображение структуры PolarSSL x509_cert на объект PKCS#11 X.509

Я хочу написать программу на C++ для анализа файла сертификата, совместимого с X.509, с PolarSSL, извлечения всех его атрибутов и сопоставления их с шаблоном объекта PKCS#11 для хранения на криптографическом токене. Мне также нужно иметь возможность извлекать атрибуты сохраненных объектов и заново создавать исходный файл, используя их, но я точно не знаю, как отобразить поля структуры PolarSSL x509_cert и атрибуты объекта PKCS#11 X.509.
Я знаю часть этого отображения (т.е. crt.valid_from карты для CKA_START_DATE или же crt.valid_to карты для CKA_END_DATE) и нужны эти атрибуты для создания моего объекта сертификата на токене (все эти значения должны быть установлены в соответствии со спецификациями PKCS#11):

CKA_CERTIFICATE_CATEGORY
CKA_CHECK_VALUE
CKA_SUBJECT
CKA_ID
CKA_ISSUER
CKA_SERIAL_NUMBER
CKA_VALUE
CKA_URL
CKA_HASH_OF_SUBJECT_PUBLIC_KEY
CKA_HASH_OF_ISSUER_PUBLIC_KEY
CKA_JAVA_MIDP_SECURITY_DOMAIN

Кто-нибудь может мне помочь, пожалуйста?

1 ответ

Вам необходимо понять две спецификации: X509 (RFC 5280) и PKCS#11. Сертификат является криптографически "целым" объектом, тогда как многие необязательные "вспомогательные атрибуты" в PKCS#11 не имеют криптографического значения. Например, я считаю, что CKA_JAVA_MIDP_SECURITY_DOMAIN - это то, что приближает к нулю точку в реальной жизни в 2013 году. Если вы берете сертификат в качестве большого двоичного объекта, вам нужно заботиться только о необработанных данных сертификата (AKA CKA_VALUE) и предмете сертификата (CKA_SUBJECT). Если вы не объясните, почему вы хотите "все атрибуты", я думаю, вы хотите сделать что-то, что вы на самом деле не должны делать.

Другие вопросы по тегам