| 28 | AndroidKeychain::~AndroidKeychain() = default; |
| 29 | |
| 30 | Valdi::PlatformResult AndroidKeychain::store(const Valdi::StringBox& key, const Valdi::BytesView& value) { |
| 31 | auto keyJava = toJavaObject(JavaEnv(), key); |
| 32 | auto secretKey = getSecretKey(); |
| 33 | |
| 34 | std::string base64Data; |
| 35 | |
| 36 | if (secretKey) { |
| 37 | Valdi::DataEncryptor encryptor(*secretKey); |
| 38 | |
| 39 | Valdi::ByteBuffer buffer; |
| 40 | if (!encryptor.encrypt(value.data(), value.size(), buffer)) { |
| 41 | return Valdi::Error("Failed to encrypt data"); |
| 42 | } |
| 43 | |
| 44 | base64Data = snap::utils::encoding::binaryToBase64(buffer.data(), buffer.size()); |
| 45 | } else { |
| 46 | base64Data = snap::utils::encoding::binaryToBase64(value.data(), value.size()); |
| 47 | } |
| 48 | |
| 49 | auto base64DataJava = toJavaObject(JavaEnv(), base64Data); |
| 50 | |
| 51 | auto errorMessage = _setMethod.call(_keychainJava.toObject(), keyJava, base64DataJava); |
| 52 | |
| 53 | if (!errorMessage.isNull()) { |
| 54 | return Valdi::Error(toInternedString(JavaEnv(), errorMessage)); |
| 55 | } |
| 56 | |
| 57 | return Valdi::Value(); |
| 58 | } |
| 59 | |
| 60 | Valdi::BytesView AndroidKeychain::get(const Valdi::StringBox& key) { |
| 61 | auto keyJava = toJavaObject(JavaEnv(), key); |
nothing calls this directly
no test coverage detected