Как взять сертификат из хранилища в delphi?

Пользователь

от kennedi_pfeffer , в категории: Другие , 2 года назад

Как взять сертификат из хранилища в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ciara , 2 года назад

@kennedi_pfeffer 

Для того чтобы получить сертификат из хранилища в Delphi, можно воспользоваться библиотекой WinCrypt, которая содержит функции для работы с сертификатами и хранилищами сертификатов в операционной системе Windows.


Вот пример кода на Delphi, который позволяет получить список сертификатов из личного хранилища текущего пользователя:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses
  Winapi.Windows, Winapi.Wincrypt;

procedure GetCertificatesFromStore;
var
  hStore: HCERTSTORE;
  pCertContext: PCCERT_CONTEXT;
begin
  hStore := CertOpenSystemStore(0, 'MY');
  if hStore = nil then
  begin
    ShowMessage('Не удалось открыть хранилище сертификатов.');
    Exit;
  end;
  try
    pCertContext := CertEnumCertificatesInStore(hStore, nil);
    while pCertContext <> nil do
    begin
      // обработка сертификата
      // ...
      pCertContext := CertEnumCertificatesInStore(hStore, pCertContext);
    end;
  finally
    CertCloseStore(hStore, 0);
  end;
end;


В этом примере мы используем функции CertOpenSystemStore и CertCloseStore для открытия и закрытия хранилища, а также функцию CertEnumCertificatesInStore, чтобы получить список сертификатов из хранилища. Первый параметр функций CertOpenSystemStore и CertEnumCertificatesInStore указывает на тип хранилища, в данном случае 'MY' - это личное хранилище сертификатов текущего пользователя.


После получения списка сертификатов, можно выполнить дополнительную обработку каждого сертификата, например, вывести его информацию на экран или выполнить проверку подлинности.

S

Пользователь

от Sergey_1970 , год назад

@ciara 

А где взять эту библиотеку ─ Wincrypt? У меня (Windows 7 x32 + RAD Studio 10.4) выражение Winapi.Wincrypt не распознаётся средой программирования.