Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline s-pro  
#1 Оставлено : 15 февраля 2013 г. 8:45:22(UTC)
s-pro

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.02.2013(UTC)
Сообщений: 7
Мужчина
Российская Федерация

Сказал «Спасибо»: 1 раз
Windows XP
Подпись CAdES-BES
Крипто Про 3.6.6497 (КС2 3.6.5359).
Используем высокоуровневую функцию CadesSignMessage.

Требуется с помощью одного открытого контекста сертификата в цикле подписать блок из N сообщений и, соответственно, получить N подписей; при этом окно с вводом пароля должно появляться один раз. При подписи следующего блока из M сообщений снова должен запрашиваться пароль один раз. Использование CryptSetProvParam(… PP_SIGNATURE_PIN…) для указания пароля с провайдером Crypto-Pro GOST не проходит:
пароль без ошибок принимается CryptSetProvParam(PP_SIGNATURE_PIN), но окошко с вводом пароля всё равно всплывает при каждом обращении к CadesSignMessage.

С другими криптопровайдерами CryptSetProvParam(PP_SIGNATURE_PIN) + CadesSignMessage работает.
Так же нормально работает CryptSetProvParam(PP_SIGNATURE_PIN) + CryptCreateHash, CryptHashData, CryptSignHash с провайдером Crypto-Pro GOST.


00000001 0.00000000 [1696] cades.dll: {3516} /CadesSignMessage/ cades.cpp(2108) : (pSignPara=0x01F3D63C, fDetachedSignature=-1, cToBeSigned=1, rgpbToBeSigned=0x0012FCFC, rgcbToBeSigned=0x0012FCF8, ppSignedBlob=0x0012FD00)
00000002 0.64526051 [1696] cades.dll: {3516} /CadesSignMessageImpl/ cades.cpp(1990) : Signer updating start
00000003 0.64528650 [1696] cades.dll: {3516} /CadesSignMessageImpl/ cades.cpp(1993) : Hash algorithm deduced
00000004 0.64531416 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(185) : (pAttr=0)
00000005 0.64534152 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(381) : Signer does not have any of signing-certificate attributes
00000006 0.64537227 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(387) : Attributes copied
00000007 0.64637375 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(390) : signing-certificate(-v2) attribute assembled
00000008 0.64640117 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(393) : Signer is updated successfully
00000009 0.64643270 [1696] cades.dll: {3516} /CadesMsgOpenToEncode/ cades.cpp(495) : (dwMsgEncodingType=0x00010001, dwFlags=0x00000004, pvMsgEncodeInfo=0x0012F794, pszInnerContentObjID=0, pStreamInfo=0x00000000)
00000010 0.64646035 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(443) : Start
00000011 0.64648664 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(447) : Input parameters checked
00000012 0.64651346 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(456) : Copy of input structures is ready
00000013 0.64653969 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(462) : Signers updating start
00000014 0.64656484 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(467) : Signer #0
00000015 2.20279813 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::CheckAlgorithms/ cades.cpp(411) : Public key info is exported successfully
00000016 2.20283818 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::CheckAlgorithms/ cades.cpp(418) : Signature algoritm OID info is found: 1.2.643.2.2.3
00000017 2.20318079 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(474) : Certificates equality checked
00000018 2.20320916 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::DeduceHashAlgorithm/ cades.cpp(161) : (szHashAlgorithm=1.2.643.2.2.9)
00000019 2.20323467 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(476) : Hash algorithm deduced
00000020 2.20326447 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(180) : (pAttr->pszObjId=1.2.840.113549.1.9.16.2.47)
00000021 2.20328975 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(483) : Calling CryptMsgOpenToEncode()
00000022 2.20343399 [1696] cades.dll: {3516} /CadesMsgOpenToEncode/ cades.cpp(526) : (hMsg=0x001ECE60, GetLastError=0x00000000)
00000023 8.68261337 [1696] cades.dll: {3516} /CadesMsgEnhanceSignature/ cades.cpp(1180) : (hCryptMsg=0x001ECE60, dwSignatureIndex=0, pCadesSignPara=0x0012F7AC)
00000024 8.68264008 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1035) : Input parameters checked
00000025 8.68294048 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1039) : Signer certificate ID found
00000026 8.68296719 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1054) : pSignerCert=0x001EB788
00000027 8.68363953 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1063) : Only CAdES-BES is required.
00000028 8.68367195 [1696] cades.dll: {3516} /CadesMsgEnhanceSignature/ cades.cpp(1209) : (res=1, GetLastError=0x00000000
00000029 8.68403625 [1696] cades.dll: {3516} /CadesSignMessage/ cades.cpp(2140) : (res=1, GetLastError=0x00000000
00000030 8.68406963 [1696] cades.dll: {3516} /CadesFreeBlob/ cades.cpp(2578) : (pBlob=0x027879F8)
00000031 8.68409729 [1696] cades.dll: {3516} /CadesFreeBlob/ cades.cpp(2606) : (res=1, GetLastError=0x00000000
00000032 8.71871567 [1696] cades.dll: {3516} /CadesSignMessage/ cades.cpp(2108) : (pSignPara=0x01F3D63C, fDetachedSignature=-1, cToBeSigned=1, rgpbToBeSigned=0x0012FCFC, rgcbToBeSigned=0x0012FCF8, ppSignedBlob=0x0012FD00)
00000033 9.36423683 [1696] cades.dll: {3516} /CadesSignMessageImpl/ cades.cpp(1990) : Signer updating start
00000034 9.36426449 [1696] cades.dll: {3516} /CadesSignMessageImpl/ cades.cpp(1993) : Hash algorithm deduced
00000035 9.36429024 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(185) : (pAttr=0)
00000036 9.36431885 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(381) : Signer does not have any of signing-certificate attributes
00000037 9.36434937 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(387) : Attributes copied
00000038 9.36525249 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(390) : signing-certificate(-v2) attribute assembled
00000039 9.36527824 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(393) : Signer is updated successfully
00000040 9.36531067 [1696] cades.dll: {3516} /CadesMsgOpenToEncode/ cades.cpp(495) : (dwMsgEncodingType=0x00010001, dwFlags=0x00000004, pvMsgEncodeInfo=0x0012F794, pszInnerContentObjID=0, pStreamInfo=0x00000000)
00000041 9.36533642 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(443) : Start
00000042 9.36536217 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(447) : Input parameters checked
00000043 9.36538982 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(456) : Copy of input structures is ready
00000044 9.36541748 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(462) : Signers updating start
00000045 9.36544228 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(467) : Signer #0
00000046 10.92185974 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::CheckAlgorithms/ cades.cpp(411) : Public key info is exported successfully
00000047 10.92189693 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::CheckAlgorithms/ cades.cpp(418) : Signature algoritm OID info is found: 1.2.643.2.2.3
00000048 10.92208672 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(474) : Certificates equality checked
00000049 10.92211342 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::DeduceHashAlgorithm/ cades.cpp(161) : (szHashAlgorithm=1.2.643.2.2.9)
00000050 10.92213821 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(476) : Hash algorithm deduced
00000051 10.92216587 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(180) : (pAttr->pszObjId=1.2.840.113549.1.9.16.2.47)
00000052 10.92219257 [1696] cades.dll: {3516} /CadesMsgOpenToEncodeImpl/ cades.cpp(483) : Calling CryptMsgOpenToEncode()
00000053 10.92273998 [1696] cades.dll: {3516} /CadesMsgOpenToEncode/ cades.cpp(526) : (hMsg=0x001ECE60, GetLastError=0x00000000)
00000054 18.55548096 [1696] cades.dll: {3516} /CadesMsgEnhanceSignature/ cades.cpp(1180) : (hCryptMsg=0x001ECE60, dwSignatureIndex=0, pCadesSignPara=0x0012F7AC)
00000055 18.55550957 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1035) : Input parameters checked
00000056 18.55580902 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1039) : Signer certificate ID found
00000057 18.55583763 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1054) : pSignerCert=0x001EB788
00000058 18.55651474 [1696] cades.dll: {3516} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1063) : Only CAdES-BES is required.
00000059 18.55654526 [1696] cades.dll: {3516} /CadesMsgEnhanceSignature/ cades.cpp(1209) : (res=1, GetLastError=0x00000000
00000060 18.55690193 [1696] cades.dll: {3516} /CadesSignMessage/ cades.cpp(2140) : (res=1, GetLastError=0x00000000
00000061 18.55693817 [1696] cades.dll: {3516} /CadesFreeBlob/ cades.cpp(2578) : (pBlob=0x027878C0)
00000062 18.55696487 [1696] cades.dll: {3516} /CadesFreeBlob/ cades.cpp(2606) : (res=1, GetLastError=0x00000000

Offline Максим Коллегин  
#2 Оставлено : 15 февраля 2013 г. 19:52:32(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
Можно кусочек кода?
Знания в базе знаний, поддержка в техподдержке
Offline s-pro  
#3 Оставлено : 18 февраля 2013 г. 8:23:36(UTC)
s-pro

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.02.2013(UTC)
Сообщений: 7
Мужчина
Российская Федерация

Сказал «Спасибо»: 1 раз
Автор: maxdm Перейти к цитате
Можно кусочек кода?


// Код на Delphi, но архитуктура, я думаю, ясно.
var
hStore: HCERTSTORE;
pCert: PCCERT_CONTEXT;
RefCert: CERT_INFO;
pProvKey: PCRYPT_KEY_PROV_INFO;
dwProvKeyInfoSize: DWORD;
hProvider: HCRYPTPROV;
CadesSignPara: CADES_SIGN_PARA;
CryptSignMessagePara: CRYPT_SIGN_MESSAGE_PARA;
CadesSignMessagePara: CADES_SIGN_MESSAGE_PARA;
rgpbToBeSigned: PBYTE;
rgcbToBeSigned: DWORD;
pSignedMessage: PCRYPT_DATA_BLOB;
Pin: PAnsiChar;

const
SN: array [0..9] of byte = ($15, $b8, $fb, $e9, $00, $02, $00, $03, $15, $b1);
Issuer: PAnsiChar = 'CN = Test Center CRYPTO-PRO O = CRYPTO-PRO C = RU E = info@cryptopro.ru';

begin
// Ищем определённый сертификат в хранилище
hStore := CertOpenSystemStore(0, 'MY');
if hStore = nil then Exit;
FillMemory(@RefCert, SizeOf(RefCert), 0);
RefCert.Issuer.cbData := Length(Issuer);
RefCert.Issuer.pbData := Pointer(Issuer);
RefCert.SerialNumber.cbData := 9;
RefCert.SerialNumber.pbData := @SN;
pCert := CertGetSubjectCertificateFromStore(hStore, X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, ACert.FCertContext^.pCertInfo);
if pCert = nil then Exit;
// Залезаем в контейнер
pProvKey := nil;
dwProvKeyInfoSize := 0;
CertGetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, pProvKey, @dwProvKeyInfoSize);
GetMem(pProvKey, dwProvKeyInfoSize);
if not CertGetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, pProvKey, @dwProvKeyInfoSize) then Exit;
if not CryptAcquireContextW(@hProvider, pProvKey^.pwszContainerName, pProvKey^.pwszProvName, pProvKey^.dwProvType, CRYPT_MACHINE_KEYSET) then Exit;
// Передаём пароль провайдеру
Pin := 'eToken1*';
if not CryptSetProvParam(hProvider, PP_SIGNATURE_PIN, PBYTE(Pin), 0) then Exit;
// Создаём подпись.
// Среди параметров CadesSignMessage нет hProvider. Но другие криптопровайдеры, очевидно, при вызове CryptSetProvParam
// взводят свои внутренние глобальные переменные и запоминают пароль к контейнеру.
FillMemory(@CadesSignPara, SizeOf(CadesSignPara), 0);
CadesSignPara.dwSize := SizeOf(CadesSignPara);
CadesSignPara.dwCadesType := CADES_BES;
FillMemory(@CryptSignMessagePara, SizeOf(CryptSignMessagePara), 0);
CryptSignMessagePara.cbSize := SizeOf(CryptSignMessagePara);
CryptSignMessagePara.dwMsgEncodingType := X509_ASN_ENCODING or PKCS_7_ASN_ENCODING;
CryptSignMessagePara.pSigningCert := pCert;
CryptSignMessagePara.HashAlgorithm.pszObjId := '1.2.643.2.2.9';
FillMemory(@CadesSignMessagePara, SizeOf(CadesSignMessagePara), 0);
CadesSignMessagePara.dwSize := SizeOf(CryptSignMessagePara);
CadesSignMessagePara.pSignMessagePara := @CryptSignMessagePara;
CadesSignMessagePara.pCadesSignPara := @CadesSignPara;
pSignedMessage := nil;
rgpbToBeSigned := @SN;
rgcbToBeSigned := 5;
if not CadesSignMessage(@CadesSignMessagePara, True, 1, @rgpbToBeSigned, @rgcbToBeSigned, pSignedMessage) then Exit;
ShowMessage('OK');
Offline Максим Коллегин  
#4 Оставлено : 18 февраля 2013 г. 9:33:20(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
Цитата:
Среди параметров CadesSignMessage нет hProvider
- ключевая фраза)
Используйте функцию CryptAcquireCertificatePrivateKey c флагом CRYPT_ACQUIRE_CACHE_FLAG и не закрывайте контекст криптопровайдера до вызова подписи.

Отредактировано пользователем 18 февраля 2013 г. 9:34:48(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline s-pro  
#5 Оставлено : 18 февраля 2013 г. 10:54:15(UTC)
s-pro

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.02.2013(UTC)
Сообщений: 7
Мужчина
Российская Федерация

Сказал «Спасибо»: 1 раз
Автор: maxdm Перейти к цитате
Цитата:
Используйте функцию CryptAcquireCertificatePrivateKey c флагом CRYPT_ACQUIRE_CACHE_FLAG


Спасибо. Вариант с кэшированием работает.
А вот если всё-таки вместо красивых, но разномастных окошек с вводом пароля от разных криптопровайдеров вывести своё самое-самое красивое универсальное окошко, прочитать пароль и КАК-ТО передать его в CSP перед вызовом CadesSignMessage (при этом запретить поднятие интерфейса CSP). Такой вариант никак не пройдёт?
Или это вообще вредный вариант с точки зрения защищённости приложения и вы такое не одобряете?

Кстати, в продолжение темы "одобрения": с кем и как можно начать процедуру получения заключения о корректности встраивания средств КриптоПро в прикладное ПО? Может быть есть какой-то ФАК (я не нашёл)?

Offline Максим Коллегин  
#6 Оставлено : 18 февраля 2013 г. 11:26:16(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
Так вы же и передаете PP_SIGNATURE_PIN.
ФАК нет - обращайтесь в ФСБ, они порекомендуют сертификационную лабораторию.
Знания в базе знаний, поддержка в техподдержке
Offline rav1610  
#7 Оставлено : 25 августа 2015 г. 6:51:24(UTC)
rav1610

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.06.2015(UTC)
Сообщений: 5
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Добрый день!
На туже тему, у меня не работает функция установки пароля под Linux или что-то не так делаю...
Подскажите, пожалуйста, что не так? Под Windows все работает.
Crypto-Pro GOST R 34.10-2001 KC1 CSP x86_64 3.9.0-4

1. Получаю дескриптор провайдела:
DWORD dwFlags = CRYPT_ACQUIRE_SILENT_FLAG | CRYPT_ACQUIRE_CACHE_FLAG;
if (!CryptAcquireCertificatePrivateKey(pCertContext, dwFlags, NULL, &hCryptProv, &dwKeySpec, &bCryptProv)) {...}

2. Передаю пароль как параметр (ASCII Z-terminated):
DWORD dwParam = 0;
switch (dwKeySpec) {
case AT_KEYEXCHANGE: dwParam = PP_KEYEXCHANGE_PIN; break;
case AT_SIGNATURE : dwParam = PP_SIGNATURE_PIN; break;
}
if (!CryptSetProvParam(hCryptProv, dwParam, (BYTE*)pszPassword, 0)) {...}

3. Проверяю...
if (!CryptGetUserKey(hCryptProv, dwKeySpec, &hCryptKey)) {...}
if (!CryptExportKey(hCryptKey, 0, PRIVATEKEYBLOB, 0, NULL, &dwBlobLen)) {...}

4. Выдает ошибку:
<CryptExportKey> failed with error (0x8010006B): The card cannot be accessed because the wrong PIN was presented.

Offline Максим Коллегин  
#8 Оставлено : 25 августа 2015 г. 9:21:08(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
Интересный способ проверки пина.
Постараемся сегодя посмотреть на проблему. С виду всё верно. Где расположен контейнер? Что происходит без флага SILENT?
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
rav1610 оставлено 25.08.2015(UTC)
Offline rav1610  
#9 Оставлено : 25 августа 2015 г. 10:03:05(UTC)
rav1610

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.06.2015(UTC)
Сообщений: 5
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Да, дело в том, что подписываю сразу несколькими сертификатами, контейнеры всех ключей закрыты паролями.
До вызова функции формирования CMS мне нужно убедиться что пароли всех контейнеров приняты (на момент вызова все дескрипторы хранятся в памяти)...

Контейнер расположен на диске (//.//HDIMAGE//...), без флага SILENT выскакивает стандартное приглашение для ввода пароля online.
При ручном вводе, кстати, функция CryptExportKey() тоже возвращает ошибку...

Offline Русев Андрей  
#10 Оставлено : 25 августа 2015 г. 10:24:01(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,431

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 574 раз в 400 постах
Ошибку предъявления PIN-а воспроизвести не удалось. Первое, что приходит в голову - PIN не в той кодировке.
При правильном предъявлении PIN-а экспорт ключа может быть запрещён, если при создании ключевой пары не был добавлен флаг CRYPT_EXPORTABLE.
Убедиться в этом можно, получив KP_PERMISSIONS, или по выдаче csptest-а (строка CRYPT_EXPORT):
Код:
root@test-x64-ub14:~# ./csptest -keys -cont '\\.\hdimage\ttt' -info
CSP (Type:75) v3.9.8002 KC1 Debug Ver:3.9.8332 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 27527107
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP
Container name: "ttt"
Exchange key is available. HCRYPTKEY: 0x1a689b3
...

Key pair info:
  HCRYPTKEY:  0x1a689b3
  AlgID:      CALG_DH_EL_SF = 0x0000aa24 (00043556):
    AlgClass: ALG_CLASS_KEY_EXCHANGE
    AlgType:  ALG_TYPE_DH
    AlgSID:   36
  Permissions:
    CRYPT_EXPORT
    CRYPT_READ
    CRYPT_WRITE
    CRYPT_IMPORT_KEY
    CRYPT_ARCHIVE
    0x800
KP_CERTIFICATE:
  Not set.

Keys in container:
  exchange key
Extensions (maxLength: 1):
  none
Total:
[ErrorCode: 0x00000000]

Отредактировано пользователем 25 августа 2015 г. 10:24:45(UTC)  | Причина: Не указана

Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Русев Андрей за этот пост.
rav1610 оставлено 25.08.2015(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.