Сообщение
  • Пожалуйста, прежде пройдите авторизацию

KalkanCrypt не работает верификация на .NET
(0 чел.) 
  • Страница:
  • 1
  • 2

ТЕМА: KalkanCrypt не работает верификация на .NET

KalkanCrypt не работает верификация на .NET 2 года, 3 мес. назад #3082

  • VitaliyL
  • Новый участник
  • Постов: 6
  • Репутация: 0
Пытаюсь проверить верность подписи через 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 зарегистрировал в системе, как указано в закрепленной теме форума
Изменено: 2 года, 3 мес. назад от VitaliyL.

Re: KalkanCrypt не работает верификация на .NET 2 года, 2 мес. назад #3083

  • stogzhan
  • Новый участник
  • Постов: 16
  • Репутация: 0
kalkan.VerifyData("", (int)flagsVerify, 0, inData, inSign, out outData, out outVerifyInfo, out outCert);

Здравствуйте!
Вы передаете переменную inSign пустой и не инициализировали. Или передайте в функцию VerifyData вашу переменную signedDataStr.
Если у Вас входные данные в base64, то собственноручно его конвертировать не надо, просто укажите нужный флаг.

Re: KalkanCrypt не работает верификация на .NET 2 года, 2 мес. назад #3084

  • VitaliyL
  • Новый участник
  • Постов: 6
  • Репутация: 0
У меня просто эта функция на две была разбита, поэтому имя переменной не то.
Вот переделал, результат тот же самый:

string inDataStr = "11112222";
string signedDataStr = "MIIJ7wYJKoZIhvcNAQcCoIIJ4DCCCdwCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGgggc1MIIHMTCCBRmgAwIBAgIUL7FLnYNIERB/Hc+JYgUfHfm+BGEwDQYJKoZIhvcNAQELBQAwgc4xCzAJBgNVBAYTAktaMRUwEwYDVQQHDAzQkNCh0KLQkNCd0JAxFTATBgNVBAgMDNCQ0KHQotCQ0J3QkDFMMEoGA1UECgxD0KDQnNCaIMKr0JzQldCc0JvQldCa0JXQotCi0IbQmiDQotCV0KXQndCY0JrQkNCb0KvSmiDSmtCr0JfQnNCV0KLCuzFDMEEGA1UEAww60rDQm9Ci0KLQq9KaINCa0KPTmNCb0JDQndCU0KvQoNCj0KjQqyDQntCg0KLQkNCb0KvSmiAoUlNBKTAeFw0xNzAzMzEwODE1MDVaFw0xODAzMzEwODE1MDVaMIIBBTEmMCQGA1UEAwwd0JvQldCR0JXQlNCV0JIg0JLQmNCi0JDQm9CY0JkxFzAVBgNVBAQMDtCb0JXQkdCV0JTQldCSMRgwFgYDVQQFEw9JSU45NjAzMjEzNTAxNjUxCzAJBgNVBAYTAktaMRswGQYDVQQHDBLQmtCQ0KDQkNCT0JDQndCU0JAxNDAyBgNVBAgMK9Ca0JDQoNCQ0JPQkNCd0JTQmNCd0KHQmtCQ0K8g0J7QkdCb0JDQodCi0KwxIzAhBgNVBCoMGtCQ0JvQldCa0KHQkNCd0JTQoNCe0JLQmNCnMSMwIQYJKoZIhvcNAQkBFhRWLkxFQkVERVZASU5HRU5JTy5LWjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKbuor6Hh1VVz9P4flHSow5TbfMTucIJ+FPp/pruo5hQi/OVESKQ4pNXk7uGmyJdH2aEiqXdAT2KbBy/9oTh1Fj5bxUwZ5/7umol/2hB6HJ2oNtBmTS9+yl4lORFPI+gN1AfQO+24T0E7vgoEk5e9LrR2MUqzRTmTIck75KHGolO7pAWWsseEzH3JZAOuDNivb+E7yo4otTdmbDCOFZr33NXwCz1fRsBFFkTVeP2FP1p/554E2zgavKnGKapcVgmOHWmi15PssBx48Sd6FrgKk6eEkeJSNxipWQDobcVqLiR+G0SvRnyJ8TZUPDExU9sESrZkQgmsVlu28GMYjkoEUCAwEAAaOCAcswggHHMA4GA1UdDwEB/wQEAwIGwDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKoMOAwMEAQEwDwYDVR0jBAgwBoAEVbW04jAdBgNVHQ4EFgQU3t0DSP61Rvr7SBKKSeMNnLnvSowwXgYDVR0gBFcwVTBTBgcqgw4DAwIDMEgwIQYIKwYBBQUHAgEWFWh0dHA6Ly9wa2kuZ292Lmt6L2NwczAjBggrBgEFBQcCAjAXDBVodHRwOi8vcGtpLmdvdi5rei9jcHMwTgYDVR0fBEcwRTBDoEGgP4YdaHR0cDovL2NybC5wa2kuZ292Lmt6L3JzYS5jcmyGHmh0dHA6Ly9jcmwxLnBraS5nb3Yua3ovcnNhLmNybDBSBgNVHS4ESzBJMEegRaBDhh9odHRwOi8vY3JsLnBraS5nb3Yua3ovZF9yc2EuY3JshiBodHRwOi8vY3JsMS5wa2kuZ292Lmt6L2RfcnNhLmNybDBiBggrBgEFBQcBAQRWMFQwLgYIKwYBBQUHMAKGImh0dHA6Ly9wa2kuZ292Lmt6L2NlcnQvcGtpX3JzYS5jZXIwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5nb3Yua3owDQYJKoZIhvcNAQELBQADggIBAB+enSKKPBLoZ9ZFNXfX1EGpU07+e5eP4Kv0ErJvqIITPSnr/iOwqxrEEBYE+zV9dr5BgcWRLXmtLyHLy+ocxn3y67Woe5kMiroQ/Dd7SHFl6paaB+fhSS4FQ2GmraswPaRqW0jqkKeBLTtNJJbbdClONxZ5xGdytw4mOilAiP7quItEsptRD7PWBSuc5JLZnqbOkMRHAPV9n+kwwxZ35GI8nmog47SsO+8UaBYKlGxwNprGMKbgaabujP1yrmwDDaR+qA1LHg4JRbownWUrf4u4GMhvLfLyL77hYnLuukFjAt0lw/5qOuFDyuNd1Vm7oiWz77kBJm7f421Vk+h2mpoeE0ftkNJMYzSWNMgoqrhfKUuo6uyYHpj3Xcnnog+jBU0lUk3obJy+/8Bb4RS/n7gLJKqWKa0UYCq8AR4gop6+bxxAut2zQctRdzOuhe0bBFPUOppPHY2Ty9NG2olK0+7t+5Ryld0buvMck9HTHWwL9RQQkPb8l92+I3gJ+xOVBg0mvHyDMmjWqn+V+F17PxMAHluDNPmYCDSPqa3kh9TU1u125QgODKdpva3LDpb0Ij6JqlTLAtBazljrrxuC5baF5/6w+LhGhoV23zqO6KYYZcWmRVChPUWd+d4dejo5bOQ7kQZy7uiURDgE3jhbmWlmFz6LUu1Cpbldx56zO8aEMYICfjCCAnoCAQEwgecwgc4xCzAJBgNVBAYTAktaMRUwEwYDVQQHDAzQkNCh0KLQkNCd0JAxFTATBgNVBAgMDNCQ0KHQotCQ0J3QkDFMMEoGA1UECgxD0KDQnNCaIMKr0JzQldCc0JvQldCa0JXQotCi0IbQmiDQotCV0KXQndCY0JrQkNCb0KvSmiDSmtCr0JfQnNCV0KLCuzFDMEEGA1UEAww60rDQm9Ci0KLQq9KaINCa0KPTmNCb0JDQndCU0KvQoNCj0KjQqyDQntCg0KLQkNCb0KvSmiAoUlNBKQIUL7FLnYNIERB/Hc+JYgUfHfm+BGEwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNzA1MjIwNTQ0MzBaMC8GCSqGSIb3DQEJBDEiBCAFVKXfAu4S8a42pRyq7zSjHeuUWKSLYp2lVKKzIkZvSjANBgkqhkiG9w0BAQsFAASCAQCOrNuUuGfu6+SvRmBgLguUpKuVk/lzP9UuNbRzJFDGqaH55Xh6zLbCSblAAyMJv4t3S2DycsNE5KQsWuFhl84kQr/stq3tWBl6ZRqXVbsblPw9rEM3yE0fhVA+KELrlSxalDKmvo11KT6j1qKYoD5hWQ9BSegrFjz32QGD/CRQhCkPMXFU5Hyk7DYyOYPARmKvBWrq0pvxmwCl7zA8kRv3uudGnrhTG/1st5hBLPMBK1CaDivdKEHx3xBv4ubPc2cxf8N4hpk+ouABfql3x5k44meqRbXZRfiP2jiPHxcPd0iSrgxYHfZ8I75nKYY5YvYHyZtANlqPTwP4d4KLgHce";//"MIIHTQYJKoZIhvcNAQcCoIIHPjCCBzoCAQExDjAMBggqgw4DCgEDAQUAMAsGCSqGSIb3DQEHAaCCBVYwggVSMIIE/KADAgECAhRxRZ6jIpgjZGsvfOt9SGA4z9+bdDANBgkqgw4DCgEBAQIFADCBzzELMAkGA1UEBhMCS1oxFTATBgNVBAcMDNCQ0KHQotCQ0J3QkDEVMBMGA1UECAwM0JDQodCi0JDQndCQMUwwSgYDVQQKDEPQoNCc0JogwqvQnNCV0JzQm9CV0JrQldCi0KLQhtCaINCi0JXQpdCd0JjQmtCQ0JvQq9KaINKa0KvQl9Cc0JXQosK7MUQwQgYDVQQDDDvSsNCb0KLQotCr0pog0JrQo9OY0JvQkNCd0JTQq9Cg0KPQqNCrINCe0KDQotCQ0JvQq9KaIChHT1NUKTAeFw0xNzA1MTgwOTQ1MjVaFw0xODA1MTgwOTQ1MjVaMIIBjzEmMCQGA1UEAwwd0JvQldCR0JXQlNCV0JIg0JLQmNCi0JDQm9CY0JkxFzAVBgNVBAQMDtCb0JXQkdCV0JTQldCSMRgwFgYDVQQFEw9JSU45NjAzMjEzNTAxNjUxCzAJBgNVBAYTAktaMRswGQYDVQQHDBLQmtCQ0KDQkNCT0JDQndCU0JAxNDAyBgNVBAgMK9Ca0JDQoNCQ0JPQkNCd0JTQmNCd0KHQmtCQ0K8g0J7QkdCb0JDQodCi0KwxaDBmBgNVBAoMX9Ci0J7QktCQ0KDQmNCp0JXQodCi0JLQniDQoSDQntCT0KDQkNCd0JjQp9CV0J3QndCe0Jkg0J7QotCS0JXQotCh0KLQktCV0J3QndCe0KHQotCs0K4gIklOR0VOSU8iMRgwFgYDVQQLDA9CSU4xMDA5NDAwMDM5NjkxIzAhBgNVBCoMGtCQ0JvQldCa0KHQkNCd0JTQoNCe0JLQmNCnMSkwJwYJKoZIhvcNAQkBFhpWSVRBTElZLkxFQkVERVY3QEdNQUlMLkNPTTBsMCUGCSqDDgMKAQEBATAYBgoqgw4DCgEBAQEBBgoqgw4DCgEDAQEAA0MABEBsUVsDzqo3k6ifyCvR6byJwEuXn3REGCIwWZEIRGQ6vPzEW2TArOVA2yv2A5nw4Grxyr0cEVCX7NWW5b8CJvoDo4IB2zCCAdcwDgYDVR0PAQH/BAQDAgbAMCgGA1UdJQQhMB8GCCsGAQUFBwMEBggqgw4DAwQBAgYJKoMOAwMEAQICMA8GA1UdIwQIMAaABFW1tK4wHQYDVR0OBBYEFKpcFJxB2VbFYP9snqlkJTIpZ8qCMF4GA1UdIARXMFUwUwYHKoMOAwMCATBIMCEGCCsGAQUFBwIBFhVodHRwOi8vcGtpLmdvdi5rei9jcHMwIwYIKwYBBQUHAgIwFwwVaHR0cDovL3BraS5nb3Yua3ovY3BzMFAGA1UdHwRJMEcwRaBDoEGGHmh0dHA6Ly9jcmwucGtpLmdvdi5rei9nb3N0LmNybIYfaHR0cDovL2NybDEucGtpLmdvdi5rei9nb3N0LmNybDBUBgNVHS4ETTBLMEmgR6BFhiBodHRwOi8vY3JsLnBraS5nb3Yua3ovZF9nb3N0LmNybIYhaHR0cDovL2NybDEucGtpLmdvdi5rei9kX2dvc3QuY3JsMGMGCCsGAQUFBwEBBFcwVTAvBggrBgEFBQcwAoYjaHR0cDovL3BraS5nb3Yua3ovY2VydC9wa2lfZ29zdC5jZXIwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5nb3Yua3owDQYJKoMOAwoBAQECBQADQQCfuk5L8SKF4Z54MK6fBHIf/46a07lYYwB8dQnsBduOJRP7hNYeBCYDtLELpNetU4dozwET59raWGgUPEfdsucHMYIBvDCCAbgCAQEwgegwgc8xCzAJBgNVBAYTAktaMRUwEwYDVQQHDAzQkNCh0KLQkNCd0JAxFTATBgNVBAgMDNCQ0KHQotCQ0J3QkDFMMEoGA1UECgxD0KDQnNCaIMKr0JzQldCc0JvQldCa0JXQotCi0IbQmiDQotCV0KXQndCY0JrQkNCb0KvSmiDSmtCr0JfQnNCV0KLCuzFEMEIGA1UEAww70rDQm9Ci0KLQq9KaINCa0KPTmNCb0JDQndCU0KvQoNCj0KjQqyDQntCg0KLQkNCb0KvSmiAoR09TVCkCFHFFnqMimCNkay98631IYDjP35t0MAwGCCqDDgMKAQMBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNzA1MTgxMTAwMzNaMC8GCSqGSIb3DQEJBDEiBCCFXMoq8JTAgMXM9/Sy37Zi0sQHoaL/EeIFeDdCGtMHcTANBgkqgw4DCgEBAQIFAARAIevFaZpf3/qv6zkpVrgX8frjWZ5kA0r0RftxBiAnAwS525RgZslV3lF1vRYHw/sA+scX1AZTnqJxO8H9/3Pe1Q==";

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();
kalkan.Init();
if (kalkan.GetLastError() > 0)
throw new CryptographicException("KalkanCrypt не инициализирован.");

string errorStr = "";
uint rv;
kalkan.VerifyData("", (int)flagsVerify, 0, inDataStr, signedDataStr, out outData, out outVerifyInfo, out outCert);

kalkan.GetLastErrorString(out errorStr, out rv);
if (rv > 0) {
throw new CryptographicException("" + rv + errorStr);
}
Изменено: 2 года, 2 мес. назад от VitaliyL.

Re: KalkanCrypt не работает верификация на .NET 2 года, 2 мес. назад #3085

  • stogzhan
  • Новый участник
  • Постов: 16
  • Репутация: 0
Неверны указаны флаги. Вы указали все возможные и конфликтующие между собой флаги.

При подписи данных в формате CMS указываются флаги OUT PEM или OUT DER и соответственно флаг CMS. При верификации указываете флаг IN PEM или IN DER соответственно и опять же флаг CMS.

При подписи данных в формате draft sign указывается флаг OUT BASE64 и флаг draft sign. При верификации указываете флаг IN2 BASE64 И флаг draft sign.

При верификации флаг IN BASE64 означает, что ваша переменная inDataStr должна быть в формате base64. Если она таковой не является, соответственно вы не ставите этот флаг.

Re: KalkanCrypt не работает верификация на .NET 2 года, 2 мес. назад #3086

  • VitaliyL
  • Новый участник
  • Постов: 6
  • Репутация: 0
Теперь VerifyData не выбрасывает ошибку, но в outVerifyInfo все равно выходит ошибка.

Для флагов KALKANCRYPTCOM_FLAGS.KC_SIGN_CMS | KALKANCRYPTCOM_FLAGS.KC_IN_PEM:
outVerifyInfo: error:0906D06C:PEM routines:func(109):reason(108)

Для флагов KALKANCRYPTCOM_FLAGS.KC_SIGN_CMS | KALKANCRYPTCOM_FLAGS.KC_IN_DER:
outVerifyInfo: error:0D0680A8:asn1 encoding routines:func(104):reason(168)

Подпись создаю в веб-интерфейсе из SDK функцией createCMSSignature. Пробовал использовать ключ RSA физ.лица и GOSTKNCA юр.лица.

Re: KalkanCrypt не работает верификация на .NET 2 года, 2 мес. назад #3087

  • stogzhan
  • Новый участник
  • Постов: 16
  • Репутация: 0
При подписи CMS должны быть начальные символы "-----BEGIN CMS-----" и конечные символы "-----END CMS-----".

Подписывайте функцией из KalkanCryptCOM SignData.
  • Страница:
  • 1
  • 2
FaLang translation system by Faboba