powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение открытого ключа из сертификата.
5 сообщений из 5, страница 1 из 1
Получение открытого ключа из сертификата.
    #39498981
bzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-нибудь может подсказать, как получить открытый ключ из сертификата установленного в системе?
Сейчас алгоритм такой: получаю контекст сертфиката в pCert и надо оттуда я так понимаю вытащить этот ключ, код примерно такой:
Код: pascal
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.
27.
28.
29.
30.
31.
32.
var
  hProv: HCRYPTPROV;
  hStore: HCERTSTORE;
  hPublicKey: HCRYPTKEY;
  pCert: PCCERT_CONTEXT;
  dwCertEncType, dwKeySpec: DWORD;
  KeyStream: TBytesStream;
begin
  dwCertEncType := X509_ASN_ENCODING;
  KeyStream := TBytesStream.Create;
  try
    hStore := CertOpenSystemStore(0, 'ADDRESSBOOK');
    try
      pCert := CertFindCertificateInStore(hStore, dwCertEncType, 0, CERT_FIND_SUBJECT_STR, @Certificate[1], nil);
    finally
      CertCloseStore(hStore, 0);
    end;

    if Assigned(pCert) then
    begin
      CryptAcquireContext(hProv, null, @Provider[1], PROV_GOST_2001_DH, 0);
      try
        CryptImportKey(hProv, ?, ?, hKey, 0, hPublicKey);
      finally
        CryptDestroyKey(hPublicKey);
        CertFreeCertificateContext(pCert);
        CryptReleaseContext(hProv, 0);
      end;
    end;
  finally
    KeyStream.Free;
  end;


CryptImportKey принимает на вход блоб содержащий собственно открытый ключ, но откуда его взять, непонятно.
...
Рейтинг: 0 / 0
Получение открытого ключа из сертификата.
    #39499058
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри тут
...
Рейтинг: 0 / 0
Получение открытого ключа из сертификата.
    #39499084
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bzzzz,

Конечная цель какая?
Зашифровать файл?

Если Да - то почему выбран такой "путь", вместо поточных или высокоуровневых функций?
...
Рейтинг: 0 / 0
Получение открытого ключа из сертификата.
    #39499131
bzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__,
Спасибо, CryptImportPublicKeyInfoEx вроде бы то, что мне и нужно.

sql2012,
Да, нужно зашифровать файл. А какие способы лучше есть? Если знаете, то предлагайте. Я только CryptEncrypt смог найти. Есть ещё CryptEncryptMessage, но откуда там брать ключ обмена, которым будет шифроваться файл - непонятно.
...
Рейтинг: 0 / 0
Получение открытого ключа из сертификата.
    #39499683
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bzzzz,

CryptEncryptMessage - высокоуровневая функция, работает с сертификатами.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение открытого ключа из сертификата.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]