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

Method get

valdi/src/valdi/android/AndroidKeychain.cpp:60–85  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58}
59
60Valdi::BytesView AndroidKeychain::get(const Valdi::StringBox& key) {
61 auto keyJava = toJavaObject(JavaEnv(), key);
62 auto dataJava = _getMethod.call(_keychainJava.toObject(), keyJava);
63
64 if (dataJava.isNull()) {
65 return Valdi::BytesView();
66 }
67
68 auto dataBase64 = toInternedString(ValdiAndroid::JavaEnv(), dataJava);
69 auto data = snap::utils::encoding::base64ToBinary(dataBase64.toStringView());
70 auto output = Valdi::makeShared<Valdi::ByteBuffer>();
71
72 auto secretKey = getSecretKey();
73
74 if (secretKey) {
75 Valdi::DataEncryptor encryptor(*secretKey);
76
77 if (!encryptor.decrypt(data.data(), data.size(), *output)) {
78 return Valdi::BytesView();
79 }
80 } else {
81 output->append(data.data(), data.data() + data.size());
82 }
83
84 return output->toBytesView();
85}
86
87bool AndroidKeychain::erase(const Valdi::StringBox& key) {
88 auto keyJava = toJavaObject(JavaEnv(), key);

Callers

nothing calls this directly

Calls 14

toJavaObjectFunction · 0.85
toInternedStringFunction · 0.85
base64ToBinaryFunction · 0.85
toObjectMethod · 0.80
callMethod · 0.65
appendMethod · 0.65
JavaEnvClass · 0.50
BytesViewClass · 0.50
isNullMethod · 0.45
toStringViewMethod · 0.45
decryptMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected