У вас есть два варианта:
(1) Время выполнения
Вы всегда можете создать компоненты во время выполнения. На веб-сайте есть пример того, как это сделать, и я копирую фрагмент этого примера ниже. Просто замените функции ShowMessage() тем, что подходит...
procedure EncryptAStream( Plaintext, Ciphertext: TStream);
var
Codec1: TCodec;
CryptographicLibrary1: TCryptographicLibrary;
begin
ShowMessage( 'Demonstration of How to Encrypt a Stream with TurboPower LockBox 3.');
Codec1 := TCodec.Create( nil);
CryptographicLibrary1 := TCryptographicLibrary.Create( nil);
Codec1.CryptoLibrary := CryptographicLibrary1;
Codec1.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId;
Codec1.BlockCipherId := 'native.AES-256';
Codec1.ChainModeId := uTPLb_Constants.CBC_ProgId;
Codec1.Password := 'my utf-16le password';
// Codec1.Reset; Reset if you are continuing from a previous encryption operation.
Codec1.EncryptStream( Plaintext, Ciphertext);
// Codec1.Burn; Burn if you need to purge memory of sensitive data.
Ciphertext.Position := 0;
ShowMessageFmt(
'The ciphertext for AES-256 with CBC chaining'#13#10 +
' of plaintext ''banana'' (UTF-8 encoding),'#13#10 +
' and password ''my utf-16le password'' (UTF-16LE encoding),'#13#10 +
' prepended by 64 bit nonce, (being the IV),'#13#10 +
' and rendered for display in base64 is ...'#13#10 +
'%s', [Stream_to_Base64( Ciphertext)]);
Codec1.Free;
CryptographicLibrary1.Free;
end;
(2) Время разработки
Требуется небольшая настройка, чтобы добавить компоненты в палитру для Android. Это будет сделано для вас в следующей версии TPLockbox 3, которая будет выпущена, а пока вот процедура...
- Удалите
vcl
, vclimg
и dbrtl
из требований времени выполнения TPLB3.
- Для пакета времени выполнения добавьте целевую платформу Android и сделайте ее активной. Но, конечно, не добавляйте эту платформу в пакет времени разработки.
- Бинарный продукт для среды выполнения должен называться
libTP_LockBox3_XE7.so
, где XE7
— это метка вашей версии компилятора.
Перед объявлениями двух компонентов (TCodec и TCryptographicLibrary) следует указать
[ComponentPlatformsAttribute( pidWin32 or pidWin64 or pidOSX32 or pidiOSSimulator or pidiOSDevice or pidAndroid)]
TCodec = class( TTPLb_BaseNonVisualComponent, ICryptographicLibraryWatcher,
{ etc. }
Это ключ ко всему. ComponentPlatformsAttribute
атрибут определяет, для каких платформ должен отображаться компонент, на палитре. Если не объявлено, я считаю, что по умолчанию используется pidWin32 or pidWin64
, но я не могу указать на какую-либо официальную документацию, подтверждающую это.
- Перекомпилируйте пакет времени выполнения. Помните, что если вы компилируете с помощью MS-BUILD, в некоторых версиях компилятора вам нужно
save-all
, прежде чем вы сможете успешно скомпилировать.
Перейдите в Инструменты IDE | Options и откройте путь к библиотеке для платформы Android. Убедитесь, что этот путь включает расположение файлов dcu для корпуса Android. Например, в моей установке это...
C:\Dev\TPLB\work-products\ephemeral\dcu\XE6\Android
Вы должны физически проверить этот каталог. Например, у него должен быть файл с именем TPLB3.AES.dcu
и еще один с именем TPLB3.AES.so
.
- Перекомпилируйте и переустановите пакет времени разработки
- Откройте свой мобильный проект. Добавьте компоненты времени разработки для TCodec и TCryptographicLibrary в свои формы Android. Действуйте так же, как для приложения Windows.
person
Sean B. Durkin
schedule
13.01.2015