Как вычислить отпечаток SHA-1 сертификата X.509 в C/C++/Objective-C?

Исходная информация:

Я пишу клиентскую утилиту, которая способна подключаться к удаленному серверу с помощью SSL/TLS. Клиент использует OpenSSL для выполнения транзакций SSL/TLS, и я хотел бы разрешить пользователям указывать авторизованные сертификаты ЦС (в случае самозаверяющих сертификатов или частных настроек ЦС), используемые для подписи сертификата сервера. Я планирую использовать отпечаток сертификата, общее имя и даты действия, чтобы пользователь мог быстро просматривать сертификаты, которые клиент использует для проверки серверов.

Вопрос:

Как с помощью C/C++/Objective-C вычислить хэш/отпечаток SHA1 сертификата X509, хранящегося в файле PEM?

После нескольких дней поисков и экспериментов я нашел решение и опубликую его как ответ, однако я приветствую лучшие или более правильные решения.

6
задан David M. Syzdek 17 March 2012 в 11:17
поделиться