Форум для тех, кто программирует под Android
Anonymous
Cipher.init () с допустимым ключом из Android -магазина клавиш, бросает ошибку сохранения.
Сообщение
Anonymous » 18 июн 2025, 05:55
В моем Kivy 2.3.1, Buildozer 1.5.0, P4A 2024.01.21, Python 3.11.16 На macOS есть кусок кода для безопасного сохранения локально. Генерация ключей продолжает отбрасывать следующую ошибку: < /p>
Код: Выделить всё
06-16 23:04:22.981 10822 10973 I python : Save failed: Invalid instance of 'javax/crypto/SecretKey' passed for a 'java/security/cert/Certificate'
< /code>
вот полный код: < /p>
android_secure_store.py
from jnius import autoclass, cast
import base64
import json
from kivy.storage.jsonstore import JsonStore
# Android & Java classes
KeyStore = autoclass("java.security.KeyStore")
KeyGenerator = autoclass("javax.crypto.KeyGenerator")
Cipher = autoclass("javax.crypto.Cipher")
GCMParameterSpec = autoclass("javax.crypto.spec.GCMParameterSpec")
KeyGenParameterSpecBuilder = autoclass("android.security.keystore.KeyGenParameterSpec$Builder")
KeyProperties = autoclass("android.security.keystore.KeyProperties")
PythonActivity = autoclass("org.kivy.android.PythonActivity")
# Constants
KEY_ALIAS = "KivyAppSecretKey"
TRANSFORMATION = "AES/GCM/NoPadding"
STORE_FILE = "secure_store.json"
class AndroidSecureStore:
def __init__(self):
self.context = PythonActivity.mActivity
self.store = JsonStore(STORE_FILE)
self.keystore = KeyStore.getInstance("AndroidKeyStore")
self.keystore.load(None)
if not self.keystore.containsAlias(KEY_ALIAS):
self._generate_key()
def _generate_key(self): ##
Подробнее здесь: [url]https://stackoverflow.com/questions/79668564/cipher-init-with-a-valid-key-from-android-keystore-throws-error-of-save-failed[/url]
1750215311
Anonymous
В моем Kivy 2.3.1, Buildozer 1.5.0, P4A 2024.01.21, Python 3.11.16 На macOS есть кусок кода для безопасного сохранения локально. Генерация ключей продолжает отбрасывать следующую ошибку: < /p> [code]06-16 23:04:22.981 10822 10973 I python : Save failed: Invalid instance of 'javax/crypto/SecretKey' passed for a 'java/security/cert/Certificate' < /code> вот полный код: < /p> android_secure_store.py from jnius import autoclass, cast import base64 import json from kivy.storage.jsonstore import JsonStore # Android & Java classes KeyStore = autoclass("java.security.KeyStore") KeyGenerator = autoclass("javax.crypto.KeyGenerator") Cipher = autoclass("javax.crypto.Cipher") GCMParameterSpec = autoclass("javax.crypto.spec.GCMParameterSpec") KeyGenParameterSpecBuilder = autoclass("android.security.keystore.KeyGenParameterSpec$Builder") KeyProperties = autoclass("android.security.keystore.KeyProperties") PythonActivity = autoclass("org.kivy.android.PythonActivity") # Constants KEY_ALIAS = "KivyAppSecretKey" TRANSFORMATION = "AES/GCM/NoPadding" STORE_FILE = "secure_store.json" class AndroidSecureStore: def __init__(self): self.context = PythonActivity.mActivity self.store = JsonStore(STORE_FILE) self.keystore = KeyStore.getInstance("AndroidKeyStore") self.keystore.load(None) if not self.keystore.containsAlias(KEY_ALIAS): self._generate_key() def _generate_key(self): ## Подробнее здесь: [url]https://stackoverflow.com/questions/79668564/cipher-init-with-a-valid-key-from-android-keystore-throws-error-of-save-failed[/url]