Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 36 Откуда: Zel
Сказал(а) «Спасибо»: 4 раз
|
Подскажите пожалуйста как это реализовать на c++ ? куда копать что смотреть? Смотрел что то про "msxml4.dll" и "mssoap30.dll" так и не понял ни чего... а Так надо чтоб на выходе был файл name.p10 который в последующее в базу будет вносится.при добавлении пользователя
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
|
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 36 Откуда: Zel
Сказал(а) «Спасибо»: 4 раз
|
Кстати подскажите какие ключи надо сделать чтоб сертификат был со свойствами Цитата:Подписывание документа Пользователь Центра Регистрации, HTTP, TLS клиент Проверка подлинности клиента ПЫ использую CertEnroll Отредактировано пользователем 27 ноября 2012 г. 12:49:40(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 03.04.2008(UTC) Сообщений: 380  Откуда: Россия, г. Белгород Сказал «Спасибо»: 11 раз Поблагодарили: 9 раз в 9 постах
|
Al_25 написал:Кстати подскажите какие ключи надо сделать чтоб сертификат был со свойствами Цитата:Подписывание документа Пользователь Центра Регистрации, HTTP, TLS клиент Проверка подлинности клиента ПЫ использую CertEnroll может это поможет
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 36 Откуда: Zel
Сказал(а) «Спасибо»: 4 раз
|
нашел вот это: ссыль там как раз про то что мне надо это: обмен внутри организации и эл.подпись флаги, но что тоне могу понять как реализовать, может кто нибудь объяснит "на пальцах"?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 36 Откуда: Zel
Сказал(а) «Спасибо»: 4 раз
|
Код:
IEnroll* CertEnroll = NULL;
CLSID CLSID_CCertEnroll;
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CoCreateInstance(CLSID_CEnroll,NULL,CLSCTX_INPROC_SERVER,IID_IEnroll,(void **)&CertEnroll );
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CertEnroll->put_ProviderNameWStr(L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider");
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CertEnroll->put_ProviderType(75);
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
} // AT_KEYEXCHANGE XCN_AT_SIGNATURE
hr = CertEnroll->put_KeySpec(AT_KEYEXCHANGE|AT_SIGNATURE); // пытался тут сделать но не вышло
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CertEnroll->put_MyStoreFlags(CERT_SYSTEM_STORE_LOCAL_MACHINE);
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
// HCRYPTPROV hProv = 0;
//1.3.6.1.4.1.311.10.3.12 подписание документа AT_SIGNATURE (цифровая подпись)
//1.2.643.3.31415.1 обмен док. в нутри организации AT_KEYEXCHANGE
// HCRYPTKEY hKey = 0;
// if(!CryptGenKey(hProv, CALG_SHA1, AT_KEYEXCHANGE, &hKey)) {
// ShowMessage("FAIL CryptGenKey");
// }
// unsigned long u;
String zap="";
String zapr="";
if (Edit1->Text == "") {
zapr = "C:\\zapros.p10";
}
else {
zapr = Edit1->Text;
}
wchar_t* w = new wchar_t[2];
w[0] = '\'';
w[1] = '\0';
if (mail!= "")
zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU,E=" + mail;
else
zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU";
ShowMessage(zap);
hr = CertEnroll->createFilePKCS10WStr(zap.w_str(),L"",zapr.w_str());
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
ну вот собственно как у меня...
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Al_25 написал:Код:
IEnroll* CertEnroll = NULL;
CLSID CLSID_CCertEnroll;
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CoCreateInstance(CLSID_CEnroll,NULL,CLSCTX_INPROC_SERVER,IID_IEnroll,(void **)&CertEnroll );
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CertEnroll->put_ProviderNameWStr(L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider");
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CertEnroll->put_ProviderType(75);
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
} // AT_KEYEXCHANGE XCN_AT_SIGNATURE
hr = CertEnroll->put_KeySpec(AT_KEYEXCHANGE|AT_SIGNATURE); // пытался тут сделать но не вышло
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
hr = CertEnroll->put_MyStoreFlags(CERT_SYSTEM_STORE_LOCAL_MACHINE);
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
// HCRYPTPROV hProv = 0;
//1.3.6.1.4.1.311.10.3.12 подписание документа AT_SIGNATURE (цифровая подпись)
//1.2.643.3.31415.1 обмен док. в нутри организации AT_KEYEXCHANGE
// HCRYPTKEY hKey = 0;
// if(!CryptGenKey(hProv, CALG_SHA1, AT_KEYEXCHANGE, &hKey)) {
// ShowMessage("FAIL CryptGenKey");
// }
// unsigned long u;
String zap="";
String zapr="";
if (Edit1->Text == "") {
zapr = "C:\\zapros.p10";
}
else {
zapr = Edit1->Text;
}
wchar_t* w = new wchar_t[2];
w[0] = '\'';
w[1] = '\0';
if (mail!= "")
zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU,E=" + mail;
else
zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU";
ShowMessage(zap);
hr = CertEnroll->createFilePKCS10WStr(zap.w_str(),L"",zapr.w_str());
if (FAILED(hr))
{
ShowMessage(GetLastError());
Close();
}
ну вот собственно как у меня... Как работает?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 36 Откуда: Zel
Сказал(а) «Спасибо»: 4 раз
|
создает файл запроса. *.p10 потом в АРМ администратора ЦР создаю пользователя подкидываю файл. поля нужные заполнены. далее далее.. потом сам запрос на сертификат, там создать новый. так же далее далее. все создал но в св-вах сертификата а точнее в "Этот сертификат предназначен для:" там нет того что я хочу увидеть - подпись документа вместо этого там "Защита сообщений эл. почты".:(
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:в св-вах сертификата а точнее в "Этот сертификат предназначен для:" там нет того что я хочу увидеть - подпись документа вместо этого там "Защита сообщений эл. почты".:( А в запросе есть то, что Вы хотите увидеть в сертификате? |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close