| 202 | // |
| 203 | // |
| 204 | Variant decryptJsonValue(const Json::Value& data) |
| 205 | { |
| 206 | if (data.isNull()) |
| 207 | return {}; |
| 208 | if (!data.isObject() || !data.isMember(c_sEncryptedFieldName)) |
| 209 | error::InvalidFormat(SL, "Data is not encrypted").throwException(); |
| 210 | |
| 211 | auto encryptedData = data[c_sEncryptedFieldName]; |
| 212 | if (encryptedData.empty()) |
| 213 | return {}; |
| 214 | |
| 215 | auto sData = encryptedData.asCString(); |
| 216 | auto pDataStream = io::createMemoryStream(sData, strlen(sData)); |
| 217 | auto pBase64Stream = queryInterface<io::IRawReadableStream>(createObject(CLSID_Base64Decoder, |
| 218 | Dictionary({ {"stream", pDataStream} }))); |
| 219 | return variant::deserialize(pBase64Stream); |
| 220 | } |
| 221 | |
| 222 | } // namespace ipc |
| 223 | } // namespace cmd |
no test coverage detected