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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Dart_Chiker  
#1 Оставлено : 6 февраля 2019 г. 11:28:31(UTC)
Dart_Chiker

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

Группы: Участники
Зарегистрирован: 23.07.2018(UTC)
Сообщений: 1

Здравствуйте!

Пытаюсь на Ubuntu найти сертификат по издателю (Чтобы в идеале искать по CERT_ID), но поиск почему-то не отрабатывает. Код прилагаю.
Если же искать таким же образом сертификат по Subject, он его находит. С чем это может быть связано?

Да, аналогичный код на Windows отрабатывает без проблем. В хранилище TrustedPeople на Unix используется самый обычный тестовый сертификат выданный вашим УЦ.

Заранее благодарю.
Код:
int main(){

    HCERTSTORE          hFileStore;
	PCCERT_CONTEXT      pCertCtx;
    
    DWORD cbSize;
    LPCWSTR pszString = L"E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2";
    CERT_NAME_BLOB blobEncodedIssuerName;        

    if ((hFileStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0,
		CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG |
		CERT_SYSTEM_STORE_CURRENT_USER, L"TrustedPeople")))
	{
		printf("The file store was created successfully.\n");
	}
	else
	{
		MyHandleError((char *)"An error occurred during creation of the file store!");
	}	

    if (!(CertStrToNameW(
		MY_ENCODING_TYPE,
		pszString,
		CERT_X500_NAME_STR,
		NULL,
		NULL,
		&cbSize,
		NULL)))
	{
		MyHandleError((char*)"Could not get the length of the BLOB.");
	}

	if (!(blobEncodedIssuerName.pbData = (LPBYTE)malloc(cbSize)))
	{
		MyHandleError((char*)"Memory Allocation for the BLOB failed.");
	}
	blobEncodedIssuerName.cbData = cbSize;

	if (!(CertStrToNameW(
		MY_ENCODING_TYPE | CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG,
		pszString,
		CERT_X500_NAME_STR,
		NULL,
		blobEncodedIssuerName.pbData,
		&blobEncodedIssuerName.cbData,
		NULL)))
		{
			MyHandleError((char*)"Could not write the blob.");
		}

	pCertCtx = NULL;
	
	pCertCtx = CertFindCertificateInStore(hFileStore,
		X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_ISSUER_NAME,
		&blobEncodedIssuerName, NULL);
	if (pCertCtx == NULL)
	{
		MyHandleError((char*)"There is no such a certificate in the store\n");
	}
	else
	{
		printf("Certificate was found succesfully");
	}
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.