Einzelnen Beitrag anzeigen

max Bauermann

Registriert seit: 29. Mai 2020
3 Beiträge
 
#1

AndroidKeystore mithilfe des JNIs nutzen

  Alt 29. Mai 2020, 10:48
Hallo Delphi-Nutzer,

ich versuche gerade in einer Android-App SecretKeys mit dem "AndroidKeyStore" und in ihm zu speichern.
https://developer.android.com/refere...urity/KeyStore

Dazu musste ich noch einige JavaKlassen in dem JNI hinzufügen, unter anderem den "KeyGenParameterSpec.Builder", eine nested JavaClass, die ich dazu benötige einen KeyGenParameterSpec zu erstellen, welchen ich dann wiederum brauche um einen KeyGenerator zu initialisieren.
https://developer.android.com/refere...uilder#build()


JKeyGenParameterSpec_Builder = interface;//android.security.keystore.KeyGenParameterSpec.Builder
Delphi-Quellcode:
JKeyGenParameterSpec_BuilderClass = interface(JObjectClass)
    ['{330936BA-6D39-4EC5-9A7D-16D23DA8AEDB}']
    {class} function init(keystoreAlias: JString; purposes: Int64): JKeyGenParameterSpec_Builder; cdecl;
  end;

  [JavaSignature('android/security/keystore/KeyGenParameterSpec$Builder')]
  JKeyGenParameterSpec_Builder = interface(JObject)
    ['{1E8F50CA-6D72-49AB-A5B1-7E1C7590BA23}']
      procedure setKeySize(keysize: Int64); cdecl;
      function build: JKeyGenParameterSpec; cdecl;
  end;
  TJKeyGenParameterSpec_Builder = class(TJavaGenericImport<JKeyGenParameterSpec_BuilderClass, JKeyGenParameterSpec_Builder>) end;
TRegTypes.RegisterType('Androidapi.JNI.Java.Security.JKeyGenParameterSpec_Builder', TypeInfo(Androidapi.JNI.Java.Security.JKeyGenParameterSpec_Builder));

Nun bekomme ich jedoch immer beim .init() Aufruf (welcher immer die Java create function aufrufen sollte) eine Invoke-Exception dass diese Methode nicht existieren soll.

LJBuilder := TJKeyGenParameterSpec_Builder.JavaClass.init(StringToJString('Test'), 1);

Wie kann ich denn nun eine Instanz des JKeyGenParameterSpec_Builder erstellen?
  Mit Zitat antworten Zitat