Я пытаюсь портировать AquaticPrime framework от Mac до Windows.
На Mac, он использует библиотеку opensll, и я пытаюсь понять, как перенести ее в Windows, где, я полагаю, мне нужно использовать CryptoAPI.
Мне в основном нужен код для проверки сгенерированной подписи с заданным открытым ключом.
Вот как выполняется проверка с помощью openssl:
Итак, , как мне сделать это с помощью CryptoAPI? Я зашел так далеко:
На этом этапе я вызываю:
CryptVerifySignature (hashHdl, sig, sigLen, keyHdl, 0, 0)
Ошибка с кодом ERROR_INVALID_PARAMETER.
Странная вещь заключается в том, что когда я впервые случайно сохранил вдвое больший открытый ключ в структуре PUBLICKEYBLOB, вместо этого я получил ошибку NTE_BAD_SIGNATURE. Это может означать, что теперь открытый ключ, который я передаю, верен.
Почему тогда ошибка ERROR_INVALID_PARAMETER? Я проверил правильность хеш-значения, и ключ, похоже, тоже принят. А параметр «sig» - это просто указатель на 128 байтов подписи, а sigLen - 128.
Итак, что мне здесь не хватает?