Пытаюсь проверить верность подписи через KalkanCryptCOM.dll в C# таким кодом:
string inDataStr = "11112222";
string signedDataStr = /* Здесь длинная строка подписи */
byte[] inData = Convert.FromBase64String(inDataStr);
byte[] signedData = Convert.FromBase64String(signedDataStr);
string outData, outVerifyInfo, outCert;
const KALKANCRYPTCOM_FLAGS flagsVerify =
KALKANCRYPTCOM_FLAGS.KC_WITH_CERT | KALKANCRYPTCOM_FLAGS.KC_IN2_BASE64 |
KALKANCRYPTCOM_FLAGS.KC_IN_BASE64 | KALKANCRYPTCOM_FLAGS.KC_DETACHED_DATA |
KALKANCRYPTCOM_FLAGS.KC_SIGN_CMS | KALKANCRYPTCOM_FLAGS.KC_WITH_CERT | KALKANCRYPTCOM_FLAGS.KC_SIGN_DRAFT |
KALKANCRYPTCOM_FLAGS.KC_IN_DER;
IKalkanCryptCOM kalkan = new KalkanCryptCOMLib.KalkanCryptCOM();
string errorStr = "";
uint rv;
kalkan.Init();
if (kalkan.GetLastError() > 0)
throw new CryptographicException("KalkanCrypt не инициализирован.");
kalkan.VerifyData("", (int)flagsVerify, 0, inData, inSign, out outData, out outVerifyInfo, out outCert);
kalkan.GetLastErrorString(out errorStr, out rv);
if (rv > 0) {
throw new CryptographicException("" + rv + errorStr);
}
Выдаёт ошибку 149946395: Verify Data - failed to load certificate.
Сертификаты с главной страницы pki.gov.kz установил. Гост сертификаты писали, что у них некорректный алгоритм, пока не установил TumarCSP. Устанавливал сертификаты на Local Machine в Trusted Root Certification Authorities и Intermediate Certification Authorities
KalkanCryptCOM.dll зарегистрировал в системе, как указано в закрепленной теме форума