Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение открытого ключа из сертификата. / 5 сообщений из 5, страница 1 из 1
02.08.2017, 13:27:13
    #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
02.08.2017, 14:52:32
    #39499058
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение открытого ключа из сертификата.
Посмотри тут
...
Рейтинг: 0 / 0
02.08.2017, 15:21:38
    #39499084
sql2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение открытого ключа из сертификата.
bzzzz,

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

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

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

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


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