Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.6
»
API: Получение списка сертификатов с локального компьютера
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.05.2012(UTC) Сообщений: 50
|
Кусок кода взят из примера Код:HCERTSTORE hStore = NULL; // Дескритор хранилища сертификатов
//------------------------------------------------------------------------------
// Открытие хранилища сертификатов "MY" текущего пользователя.
hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0,
CERT_STORE_OPEN_EXISTING_FLAG |CERT_STORE_READONLY_FLAG |
CERT_SYSTEM_STORE_CURRENT_USER, L"MY");
if(!hStore)
{
HandleError("The store could not be opened!\n");
}
else
{
printf("The store is open!\n");
}
При компиляции получаю ошибку Цитата:Ошибка 11 error LNK2028: ссылка на неразрешенную лексему (0A0003B4) "extern "C" void * __stdcall CertOpenStore(char const *,unsigned long,unsigned long,unsigned long,void const *)" (?CertOpenStore@@$$J220YGPAXPBDKKKPBX@Z) в функции "extern "C" wchar_t * __stdcall GetSignatureValue(char *,int,char *,int)" (?GetSignatureValue@@$$J216YGQA_WPADH0H@Z)
Ошибка 12 error LNK2019: ссылка на неразрешенный внешний символ "extern "C" void * __stdcall CertOpenStore(char const *,unsigned long,unsigned long,unsigned long,void const *)" (?CertOpenStore@@$$J220YGPAXPBDKKKPBX@Z) в функции "extern "C" wchar_t * __stdcall GetSignatureValue(char *,int,char *,int)" (?GetSignatureValue@@$$J216YGQA_WPADH0H@Z) Подключенные заголовки Код:#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <wincrypt.h>
#include <wincryptex.h>
#include <stdlib.h>
Сигнатура функции думаю не должна быть принципиальна, но все же Код:extern "C" __declspec(dllexport) const BSTR __stdcall GetSignatureValue(char* certName, int certNameLength, char* str, int arrayLength)
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 03.04.2008(UTC) Сообщений: 380  Откуда: Россия, г. Белгород Сказал «Спасибо»: 11 раз Поблагодарили: 9 раз в 9 постах
|
попробуйте добавить
#pragma comment(lib, "crypt32.lib")
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.05.2012(UTC) Сообщений: 50
|
Спасибо! Скомпиировалось.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.05.2012(UTC) Сообщений: 50
|
Попутно вопрос касаемо этой же темы Код: // Получение сертификата с заданным именем из хранилища сертификатов.
PCCERT_CONTEXT pContext = NULL ; // Контекст сертификата
pContext = CertFindCertificateInStore(hStore,
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR_W,
certName, NULL);
if(pContext == NULL)
{
HandleError("There is no such a certificate in the store\n");
}
5ый аргумент в функции CertFindCertificateInStore - имя сертификата. Какое поле подразумевается из объекта X509Certificate2 (C#)?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 03.04.2008(UTC) Сообщений: 380  Откуда: Россия, г. Белгород Сказал «Спасибо»: 11 раз Поблагодарили: 9 раз в 9 постах
|
ikozlov написал:Попутно вопрос касаемо этой же темы Код: // Получение сертификата с заданным именем из хранилища сертификатов.
PCCERT_CONTEXT pContext = NULL ; // Контекст сертификата
pContext = CertFindCertificateInStore(hStore,
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR_W,
certName, NULL);
if(pContext == NULL)
{
HandleError("There is no such a certificate in the store\n");
}
5ый аргумент в функции CertFindCertificateInStore - имя сертификата. Какое поле подразумевается из объекта X509Certificate2 (C#)? Subject
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.05.2012(UTC) Сообщений: 50
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.05.2012(UTC) Сообщений: 50
|
Столкнулся с проблемой, с которой видимо не я один сталкивался Пытаюсь получить сертификат по Subject из хранилища (код опять же из примера упомянутого выше) Код:// Получение сертификата с заданным именем из хранилища сертификатов.
PCCERT_CONTEXT pContext = NULL ; // Контекст сертификата
pContext = CertFindCertificateInStore(hStore,
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR_W,
certName, NULL);
if(pContext == NULL)
{
HandleError("There is no such a certificate in the store\n");
}
Subject содержит кириллические символы Цитата:C=RU, S=Тест, L=Тест, O=ООО Тест, OU=Тест, CN=Иванов Иван Иванович, E=ivanov@mail.ru Пробовал то, что описано по ссылке, но продолжаю вылетать на том же. Подскажите, пожалуйста, как решить проблему. Вылитаю с Цитата:There is no such a certificate in the store
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,523   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 03.04.2008(UTC) Сообщений: 380  Откуда: Россия, г. Белгород Сказал «Спасибо»: 11 раз Поблагодарили: 9 раз в 9 постах
|
попробуйте на вход в certName подать к примеру "ООО Тест" или "Иванов Иван Иванович", что получится? т.е. подавать не весь subject а отдельные значения его полей Отредактировано пользователем 18 мая 2012 г. 18:46:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.05.2012(UTC) Сообщений: 50
|
dedov написал:попробуйте на вход в certName подать к примеру "ООО Тест" или "Иванов Иван Иванович", что получится? т.е. подавать не весь subject а отдельные значения его полей Не дало результатов.
|
|
|
|
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.6
»
API: Получение списка сертификатов с локального компьютера
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close