Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Как с помощью CryptoAPI получить из сертификата имя криптопровайдера, для которого этот сертификат предназначен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 18:09 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Что-то в этом духе: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 13:51 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Хотелось бы получить ответ на такой вопрос: какими функциями CryptoAPI можно пользоваться, чтобы не происходил конфликт между несколькими российскими криптопровайдерами? Например, Base Cryptography Functions нормально работают, когда на одном компьютере стоит несколько CSP. А Simplified Message Functions не работают. Будут ли работать функции Low-level Message Function? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:11 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Я работаю низкоуровневыми функциями CryptoAPI. Мне необходимо собрать сообщение в формате PKCS #7, чтобы его можно было дешифровать, проверить подпись высокоуровневыми функциями. Посметрел описание этого формата на сайте rsa.com, но, честно говоря, мало что понял. Кто-нибудь пробовал делать что-то подобное (самому формировать этот формат)? Буду благодарен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:11 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Maksim UMЧто-то в этом духе: Код: plaintext 1. 2. А если это сертификат открытого ключа, то при вызове этой функции вылетает ошибка - объект не найден. В этом слчае можно как-то узнать имя или тип криптопровайдера, к которому принадлежит этот сертификат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 07:33 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Maksim UMЧто-то в этом духе: Код: plaintext 1. 2. такой вопрос, откуда берет информацию выше указанная функция: - из контекста сертификата ?! - из других источников ?! спасибо_ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 11:38 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
а кто знает ответ на этот вопрос: -как сериализированный контекст сертификата опять восстановить в PCCERT_CONTEXT ?! спасибо_ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 12:56 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
DmSK Maksim UMЧто-то в этом духе: Код: plaintext 1. 2. такой вопрос, откуда берет информацию выше указанная функция: - из контекста сертификата ?! - из других источников ?! спасибо_ Эта функция берет информацию из контекста сертификата. Правильнее ее вот так написать: CertGetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, cntx, &si). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 13:15 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Dmitry Skrypkaа кто знает ответ на этот вопрос: -как сериализированный контекст сертификата опять восстановить в PCCERT_CONTEXT ?! спасибо_ Простите, а что такое сериализованный контекст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 13:15 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Возможно я не учел проф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 15:13 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Возможно, я не так выразился.... ?! -- The CertSerializeCertificateStoreElement function serializes a certificate context's encoded certificate and its encoded properties. -- задача следующая, преобразовать контекст сертификата в последовательность байт для последующего сохранения допустим на диске. И по мере необходимости данный вектор байт обратно в контекст, то что у меня и не получается. как эта задача решается ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 15:41 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно для чего. Но решение есть. Экспорт (можно в файл или еще куда): Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. cbData - длина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 18:41 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Уважаемые программисты, пожалуйста, скажите мне по какому принципу работают функции CryptDecryptMessage, CryptVerifyMessageSignature. Как в этих функциях происходит выбор криптопровайдера для дешифрирования, проверки подписи? Есть вариант открывать сообщение формта PKCS#7 дефолтным криптопровайдером, считывать, например, OID и по нему выбирать нужный криптопровайдер для дешифрирования или проверки подписи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 09:32 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Проходя мимо.... На всякий случай, скажу, вдруг что.... Сабж линейкой 9х не поддерживается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 11:27 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
siebentearbeitПроходя мимо.... На всякий случай, скажу, вдруг что.... Сабж линейкой 9х не поддерживается. Не в этом суть :) Решений все-равно не ищется ... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 18:49 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Про выбор криптопровайдера в CryptAPI написано в MSDN, точно помню, видел, когда читал и собирался её использовать... Но из-за 9х взялся за CryptoPP 5.21 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2005, 12:35 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
А что это за пакет? Он мне поможет в работе с PKCS#7-форматом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2005, 12:55 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
А вы не подскажите, почему такой текст (простите за Делфи) if CryptEnumProvidersU(ProvNumPublic, nil, 0,@dwprovtypePublic, @provnamePublic, @cbnamePublic) then begin if length(ContainerEdit.Text) = 0 then cont := nil; // if not cryptacquirecontext(@hprovPublic, cont , provnamePublic, dwprovtypePublic,CRYPT_NEWKEYSET)// (ïðîâàéäåð, êîíòåéíåð, èìÿ, òèï, ôëàãè)} if not CryptAcquireContext(@hprovpublic, cont, provnamePublic, dwprovtypePublic, CRYPT_NEWKEYSET) then begin case int64(GetLastError) of ERROR_INVALID_PARAMETER: err := 'ERROR_INVALID_PARAMETER'; ERROR_NOT_ENOUGH_MEMORY: err := 'ERROR_NOT_ENOUGH_MEMORY'; NTE_BAD_FLAGS: err := 'NTE_BAD_FLAGS'; NTE_BAD_KEYSET: err := 'NTE_BAD_KEYSET'; NTE_BAD_KEYSET_PARAM: err := 'NTE_BAD_KEYSET_PARAM'; NTE_BAD_PROV_TYPE: err := 'NTE_BAD_PROV_TYPE'; NTE_BAD_SIGNATURE: err := 'NTE_BAD_SIGNATURE'; NTE_EXISTS: err := 'NTE_EXISTS'; NTE_KEYSET_ENTRY_BAD: err := 'NTE_KEYSET_ENTRY_BAD'; NTE_KEYSET_NOT_DEF: err := 'NTE_KEYSET_NOT_DEF'; NTE_NO_MEMORY: err := 'NTE_NO_MEMORY'; NTE_PROV_DLL_NOT_FOUND: err := 'NTE_PROV_DLL_NOT_FOUND'; NTE_PROV_TYPE_ENTRY_BAD: err := 'NTE_PROV_TYPE_ENTRY_BAD'; NTE_PROV_TYPE_NO_MATCH: err := 'NTE_PROV_TYPE_NO_MATCH'; NTE_PROV_TYPE_NOT_DEF: err := 'NTE_PROV_TYPE_NOT_DEF'; NTE_PROVIDER_DLL_FAIL: err := 'NTE_PROVIDER_DLL_FAIL'; NTE_SIGNATURE_FILE_BAD: err := 'NTE_SIGNATURE_FILE_BAD'; else err := 'Unknown error'; end; MessageDlg('Îøèáêà ñîçäàíèÿ êîíòåéíåðà: ' + err, mtError, [mbOK], 0); exit; end else MessageDlg('Ñîçäàí êîíòåéíåð ñ èìåíåì ' + err, mtInformation, [mbOK], 0); //ContainersForm.Show; end; выдает ошибку NTE_KEYSET_NOT_DEF Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 19:14 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Уважаемые программисты, пожалуйста, скажите мне по какому принципу работают функции CryptDecryptMessage, CryptVerifyMessageSignature. Как в этих функциях происходит выбор криптопровайдера для дешифрирования, проверки подписи? См. диаграмму здесь: http://msdn2.microsoft.com/en-us/library/aa382376.aspx. Обратите внимание на CryptAcquireContext функцию. Она открывает существующий CSP контейнер и возвращет хендл на него. Вот когда тот CSP контейнер на который Вы ссылаетесь создавался (кстати той же самой функцией CryptAcquireContext), то тот, кто это сделал (подозреваю что это были не Вы раз задаёте этот вопрос), определил какой именно CSP использовать. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 20:06 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Вопрос как передать ключ по сети или сохранить в файл и потом им воспользоваться. если вот на стороне сервера можно так // Получение хэндл криптопровайдера g=CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL,0); /*g=GetLastError(); ShowMessage(IntToStr(g)); */ if (!g) {ShowMessage(IntToStr(g)); return; } // генерация сессионного ключа g=CryptGenKey(hProv,CALG_RC4,CRYPT_EXPORTABLE|CRYPT_ENCRYPT, &hSessionKey); //ShowMessage(IntToStr(g)); if (!g) { ShowMessage("Error_CryptGenKey"); ShowMessage(IntToStr(g)); return; } // получение ключа для экспорта ключа шифрования if (!CryptGetUserKey(hProv, AT_KEYEXCHANGE, &hPublicKey)){ ShowMessage("error_CryptGetUserKey"); return; } countbk = 0; if (!CryptExportKey(hSessionKey, hPublicKey,SIMPLEBLOB, 0, NULL, &countbk)){ ShowMessage(IntToStr(GetLastError())); ShowMessage("error_CryptExportKey1"); return; } /*BYTE* */data = static_cast<BYTE*>(malloc(countbk)); //ZeroMemory(data, count); // экспорт ключа шифрования if (!CryptExportKey(hSessionKey, hPublicKey,SIMPLEBLOB, 0, data, &countbk)){ ShowMessage("error_CryptExportKey"); return;} а на стороне клиента что писать? просто : if(!CryptImportKey(hProv, data, countbk, hPublicKey, 0, &hNewKey)){ ShowMessage(GetLastError()); ShowMessage("serverError_Key's import"); return;} ясен перец не катит. Помогите советом?пжалуйсто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 23:13 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
Maksim UMНе совсем понятно для чего. Но решение есть. Экспорт (можно в файл или еще куда): Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. cbData - длина а чтобы сертификат выглядил как обычный сертификат в файле, я так понимаю его надо расшифровать прежде чем записывать? Я правильно понимаю? Не подскажете какими функциями при этом надо пользоваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2009, 18:24 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
А, все, спасибо, разобрался:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2009, 08:32 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
AlexeyStafsiebentearbeitПроходя мимо.... На всякий случай, скажу, вдруг что.... Сабж линейкой 9х не поддерживается. Не в этом суть :) Решений все-равно не ищется ... :( На самом деле можно выдернуть из реестра: OOL WINAPI MyCryptEnumProviders(DWORD dwIndex LPDWORD Res DWORD dwFlags LPDWORD pdwProvType LPTSTR szProvName LPDWORD pcbProvName){ static LPTSTR szKeyPath = TEXT("SOFTWARE\\Microsoft\\Cryptography\\Defaults\\Provider"); BOOL bResult = TRUE; DWORD dwNumKeys; HKEY hKey = NULL; HKEY hSubKey = NULL; LONG lResult; FILETIME ft; dwFlags Res; __try { /* Open registry provider registry key*/ lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE szKeyPath 0 KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS &hKey); if (lResult != ERROR_SUCCESS) { bResult = FALSE; __leave; } if (szProvName == NULL) { /* Query for Number of Keys and Size maximum size of*/ /* provider*/ lResult = RegQueryInfoKey(hKey NULL NULL NULL &dwNumKeys pcbProvName NULL NULL NULL NULL NULL NULL); if (lResult != ERROR_SUCCESS) { bResult = FALSE; __leave; } /* return Size of Provider Name*/ *pcbProvName = (*pcbProvName + 1) * sizeof(TCHAR); if (dwIndex >= dwNumKeys) return FALSE; } else { DWORD dwSize; DWORD dwType; /* Get Provider by Index*/ dwSize = *pcbProvName/sizeof(TCHAR); lResult = RegEnumKeyEx(hKey dwIndex szProvName &dwSize NULL NULL NULL &ft); if (lResult != ERROR_SUCCESS) { bResult = FALSE; __leave; } *pcbProvName = (dwSize + 1) * sizeof(TCHAR); /* Open the Provider Registry Key*/ lResult = RegOpenKeyEx(hKey szProvName 0 KEY_QUERY_VALUE &hSubKey); if (lResult != ERROR_SUCCESS) { bResult = FALSE; __leave; } /* Get Provider Type*/ dwSize = sizeof(DWORD); lResult = RegQueryValueEx(hSubKey TEXT("Type") NULL &dwType (LPBYTE)pdwProvType &dwSize); if (lResult != ERROR_SUCCESS) { bResult = FALSE; __leave; } } } __finally { /* Clean up*/ if (hKey != NULL) RegCloseKey(hKey); if (hSubKey != NULL) RegCloseKey(hSubKey); } return bResult;} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2009, 18:37 |
|
||
|
CryptoAPI
|
|||
|---|---|---|---|
|
#18+
кто может дать точный ответ каким образом виндовс в окошке свойств сертификата получает данное значение: то есть сертификаты бывают двух типов - которые, как на картинке, имеют все политики применения, а есть у которых четко выставлены только некоторые из этих политик - например только "защищает сообщения электронной почты", или "идентификация сервера". вот эти самые конкретные политики я нашел как прочитать это команда CertGetEnhancedKeyUsage. а вот с первым вариантом наличия "всех политик" застрял :) будьте любезны подскажите как можно получить это значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33220556&tid=2019989]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 286ms |
| total: | 425ms |

| 0 / 0 |
