Я работаю над обновлением версии 1.0 TLS до версии 1.2 для существующих приложений Windows / Win CE. Прямо сейчас мое приложение использует Openssl 0.9.8k (поддерживает TLS 1.0). Для обновления версии TLS я использую Openssl-1.0.2p (поддерживает TLS 1.2). Я подписывал данные, используя MD5-SHA1, аналогично шагам, выполняемым в MD5-SHA1, используя CryptoAPI (мое требование было таким же, как это)
- Создан хэш с использованием поставщика дескриптора ключа сертификата и использует алгоритм CALG_SSL3_SHAMD5.
- Используя CryptSetHashParam, я установил начальное значение хеша
- Подписал хеш с помощью CryptSignHash.
- После этого поменяйте порядок следования байтов (поскольку подпись OpenSSL упоминается как Big endian.
Но TLS 1.2 должен подписывать хеш с использованием RSA-SHA256. Как я могу достичь с помощью Crypto API?
Я попытался создать хэш с помощью поставщика дескриптора ключа сертификата и использовать алгоритм CALG_SHA_256 вместо CALG_SSL3_SHAMD5. Но проверка сертификата на сервере завершилась неудачно с ошибкой «Bad Signature».
Я занимался серфингом на страницах MSDN, и я предполагаю, что API CNG могут выполнять мою работу для ОС Windows 7. Если это правда, как я могу достичь? Кроме того, я не вижу API-интерфейсы, эквивалентные CNG, в Windows CE. Как этого добиться в Windows CE?
Спасибо.