Перейти к содержанию
Fire Monkey от А до Я
  • 0

Использование Windows.Security.Cryptography (WinRT)


magicxor

Вопрос

Добрый день.

Как использовать API WindowsRT для шифрования? (https://msdn.microsoft.com/en-us/library/windows/apps/windows.security.cryptography.core.aspx)

Конкретно - интересует RSA, генерация пары ключей, импорт/экспорт в файл, шифрование и дешифрование строки.

Для начала я пытаюсь просто получить названия алгоритмов шифрования, чтоб потом их использовать. Даже не возвращаю их пока из функции, просто получаю:

 

uses 
  System.Threading,
  System.Types,
  System.Win.ComObj,
  Winapi.Security.Cryptography,
  Winapi.Foundation,
  Winapi.Foundation.Collections,
  Winapi.Storage.Streams,
  Winapi.CommonTypes,
  Winapi.Foundation.Types,
  Winapi.Winrt,
  System.Win.Winrt;

procedure TForm1.Button1Click(Sender: TObject);
var
  AsymmetricAlgoNames: Core_IAsymmetricAlgorithmNamesStatics;
  AsymmetricAlgoNamesInsp: IInspectable;
  GetAlgoNames: IFuture<boolean>;
begin
  GetAlgoNames := TTask.Future<boolean>(
    function: boolean
    begin
      OleCheck(RoInitialize(RO_INIT_MULTITHREADED));
      try
        OleCheck(RoGetActivationFactory(TWindowsString(SCore_AsymmetricAlgorithmNames),
          Core_IAsymmetricAlgorithmNamesStatics, AsymmetricAlgoNamesInsp));
        AsymmetricAlgoNames := AsymmetricAlgoNamesInsp as Core_IAsymmetricAlgorithmNamesStatics;
      finally
        RoUninitialize;
      end;
      Result := true;
    end);
  GetAlgoNames.Start;
end;

 

После нажатия на кнопку:

Цитата

First chance exception at $7532DAD8. Exception class EOleSysError with message 'Параметр задан неверно'. Process Project1.exe (6616)

И сразу:

Цитата

First chance exception at $7532DAD8. Exception class EAggregateException with message 'One or more errors occurred'. Process Project1.exe (6616)

Но иногда (рандомно) вместо первого исключения получаю:

Цитата

First chance exception at $76E8F2C3. Exception class $C0000005 with message 'access violation at 0x76e8f2c3: read of address 0xabababab'. Process Project1.exe (16300)

 

IFuture использую потому что если это делать в потоке гуя, при вызове RoInitialize ругается, что поток уже запущен и нельзя изменить его состояние.

Delphi 10 Seattle, Windows 10 x64.

Изменено пользователем magicxor
добавил про IFuture, убрал про VCL
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
13 минуты назад, Vitaldj сказал:

Данный форум по FMX, вы не получите ответ по VCL.

Ок, скопипастил в Multi-Device Application. Код не менял.

При нажатии на кнопку в первый раз:

Цитата

First chance exception at $7532DAD8. Exception class EOleSysError with message 'Параметр задан неверно'. Process Project1.exe (17216)

Во второй раз:

Цитата

First chance exception at $7532DAD8. Exception class EOleSysError with message 'OLE error 80070057'. Process Project1.exe (17216)

После закрытия формы:

Цитата

First chance exception at $7782CBCA. Exception class $C0000005 with message 'access violation at 0x7782cbca: read of address 0x00000000'. Process Project1.exe (17216)

 

Ссылка на комментарий
  • 0
15 минут назад, Vitaldj сказал:

в FMX нет class EOleSysError. То есть нет понятия OLE объектов. Т.к. это разработка только платформенно зависима от Windows.

Так и мой вопрос тоже платформенно зависим, потому и размещён в разделе Windows.

Ссылка на комментарий
  • 0

Насколько я понимаю в FMX это не реализовать, только VCL, так что читайте мое первое сообщение. Хотя, может кто и попробует....

PS FMX не содержит платформо-привязанные вещи. Иначе бы не был кросс платформенным))

Ссылка на комментарий
  • 0

Ну FMX-то не содержит, а вот приложения на нём - вполне могут. В соседних разделах вон обсуждают использование Android API, используют такие некроссплатформенные неймспейсы, как Androidapi.JNI.GraphicsContentViewText и Androidapi.Helpers. Так чем UWP/WinRT хуже?

Ссылка на комментарий
  • 0

Но с OLE тут какой то особый случай, может кто подскажет, я точнее не скажу, особо не разбирался. Просто на просторах этого форума уже пытались обсуждать его и насколько я помню ничего не получилось.

И все равно, OLE и windows зависимые штучки напрямую к FMX отношения не имеют, поэтому такое тут не обсуждают. Прошерстите другие тематические форумы.

Изменено пользователем Vitaldj
Ссылка на комментарий
  • 0
  • Модераторы
30 минут назад, Vitaldj сказал:

Но с OLE тут какой то особый случай, может кто подскажет, я точнее не скажу, особо не разбирался. Просто на просторах этого форума уже пытались обсуждать его и насколько я помню ничего не получилось.

И все равно, OLE и windows зависимые штучки напрямую к FMX отношения не имеют, поэтому такое тут не обсуждают. Прошерстите другие тематические форумы.

не верно, на FMX можно работать с OLE также как и в VCL. просто работает это только для Windows. Подключаем uses'ы и пользуемся

Ссылка на комментарий
  • 0
Только что, ZuBy сказал:

не верно, на FMX можно работать с OLE также как и в VCL. просто работает это только для Windows. Подключаем uses'ы и пользуемся

Возможно, но у меня в свое время, все равно что то не получалось (уж не помню что), я и закрыл в FMX тему OLE.

Ссылка на комментарий
  • 0
  • Модераторы
26 минут назад, Vitaldj сказал:

Возможно, но у меня в свое время, все равно что то не получалось (уж не помню что), я и закрыл в FMX тему OLE.

не работает OLE в TWebBrowser(FMX), а Word/Excel/WMI и прочее работает

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...