MCPcopy Create free account
hub / github.com/Snapchat/Valdi / store

Method store

valdi/src/valdi/android/AndroidKeychain.cpp:30–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28AndroidKeychain::~AndroidKeychain() = default;
29
30Valdi::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
60Valdi::BytesView AndroidKeychain::get(const Valdi::StringBox& key) {
61 auto keyJava = toJavaObject(JavaEnv(), key);

Callers

nothing calls this directly

Calls 12

toJavaObjectFunction · 0.85
binaryToBase64Function · 0.85
toInternedStringFunction · 0.85
toObjectMethod · 0.80
callMethod · 0.65
JavaEnvClass · 0.50
ErrorInterface · 0.50
ValueClass · 0.50
encryptMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
isNullMethod · 0.45

Tested by

no test coverage detected