Move json util code to common
So that it can be shared by CE CDM extraction tool later. Test: m wv_factory_extraction_tool Bug: 414642286 Change-Id: I6dba70227ce2789dd3686ebbf6ed3a0dbf68dc00
This commit is contained in:
@@ -35,6 +35,7 @@ cc_binary {
|
|||||||
"aosp/src/properties_android.cpp",
|
"aosp/src/properties_android.cpp",
|
||||||
"aosp/src/BccParser.cpp",
|
"aosp/src/BccParser.cpp",
|
||||||
"aosp/src/WidevineProvisioner.cpp",
|
"aosp/src/WidevineProvisioner.cpp",
|
||||||
|
"common/src/json_utils.cpp",
|
||||||
"common/src/WidevineOemcryptoInterface.cpp",
|
"common/src/WidevineOemcryptoInterface.cpp",
|
||||||
],
|
],
|
||||||
include_dirs: [
|
include_dirs: [
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "WidevineOemcryptoInterface.h"
|
#include "WidevineOemcryptoInterface.h"
|
||||||
|
#include "json_utils.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "properties.h"
|
#include "properties.h"
|
||||||
#include "string_conversions.h"
|
#include "string_conversions.h"
|
||||||
@@ -32,51 +33,6 @@ const std::vector<std::vector<uint8_t>> kAuthorizedEekRoots = {
|
|||||||
0x62, 0xDC, 0x3E, 0x61, 0xAB, 0x57, 0x48, 0x7D, 0x75, 0x37, 0x29,
|
0x62, 0xDC, 0x3E, 0x61, 0xAB, 0x57, 0x48, 0x7D, 0x75, 0x37, 0x29,
|
||||||
0xAD, 0x76, 0x80, 0x32, 0xD2, 0xB3, 0xCB, 0x63, 0x58, 0xD9},
|
0xAD, 0x76, 0x80, 0x32, 0xD2, 0xB3, 0xCB, 0x63, 0x58, 0xD9},
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string EscapeJson(const std::string& input) {
|
|
||||||
std::string result;
|
|
||||||
for (std::string::const_iterator c = input.begin(); c != input.end(); ++c) {
|
|
||||||
switch (*c) {
|
|
||||||
case '\"':
|
|
||||||
result += "\\\"";
|
|
||||||
break;
|
|
||||||
case '\\':
|
|
||||||
result += "\\\\";
|
|
||||||
break;
|
|
||||||
case '\b':
|
|
||||||
result += "\\b";
|
|
||||||
break;
|
|
||||||
case '\f':
|
|
||||||
result += "\\f";
|
|
||||||
break;
|
|
||||||
case '\n':
|
|
||||||
result += "\\n";
|
|
||||||
break;
|
|
||||||
case '\r':
|
|
||||||
result += "\\r";
|
|
||||||
break;
|
|
||||||
case '\t':
|
|
||||||
result += "\\t";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
result += *c;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string StringMapToJson(
|
|
||||||
const std::map<std::string, std::string>& string_map) {
|
|
||||||
std::string json = "{";
|
|
||||||
for (const auto& value_pair : string_map) {
|
|
||||||
json.append("\"" + value_pair.first + "\": " + "\"" + value_pair.second +
|
|
||||||
"\",");
|
|
||||||
}
|
|
||||||
json.resize(json.size() - 1); // Remove the last comma.
|
|
||||||
json.append("}");
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
WidevineProvisioner::WidevineProvisioner() {
|
WidevineProvisioner::WidevineProvisioner() {
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// Copyright 2025 Google LLC. All Rights Reserved. This file and proprietary
|
||||||
|
// source code may only be used and distributed under the Widevine License
|
||||||
|
// Agreement.
|
||||||
|
|
||||||
|
#ifndef WIDEVINE_JSON_UTILS_H_
|
||||||
|
#define WIDEVINE_JSON_UTILS_H_
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace widevine {
|
||||||
|
|
||||||
|
std::string EscapeJson(const std::string& input);
|
||||||
|
std::string StringMapToJson(
|
||||||
|
const std::map<std::string, std::string>& string_map);
|
||||||
|
|
||||||
|
} // namespace widevine
|
||||||
|
|
||||||
|
#endif // WIDEVINE_JSON_UTILS_H_
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
// Copyright 2025 Google LLC. All Rights Reserved. This file and proprietary
|
||||||
|
// source code may only be used and distributed under the Widevine License
|
||||||
|
// Agreement.
|
||||||
|
|
||||||
|
#include "json_utils.h"
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
namespace widevine {
|
||||||
|
|
||||||
|
std::string EscapeJson(const std::string& input) {
|
||||||
|
std::string result;
|
||||||
|
for (const char& c : input) {
|
||||||
|
switch (c) {
|
||||||
|
case '\"':
|
||||||
|
result += "\\\"";
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
result += "\\\\";
|
||||||
|
break;
|
||||||
|
case '\b':
|
||||||
|
result += "\\b";
|
||||||
|
break;
|
||||||
|
case '\f':
|
||||||
|
result += "\\f";
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
result += "\\n";
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
result += "\\r";
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
|
result += "\\t";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
result += c;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string StringMapToJson(
|
||||||
|
const std::map<std::string, std::string>& string_map) {
|
||||||
|
if (string_map.empty()) {
|
||||||
|
return "{}";
|
||||||
|
}
|
||||||
|
std::ostringstream json_stream;
|
||||||
|
json_stream << "{";
|
||||||
|
bool is_first_element = true;
|
||||||
|
for (const auto& pair : string_map) {
|
||||||
|
if (!is_first_element) {
|
||||||
|
json_stream << ",";
|
||||||
|
}
|
||||||
|
json_stream << "\"" << pair.first << "\": \"" << pair.second << "\"";
|
||||||
|
is_first_element = false;
|
||||||
|
}
|
||||||
|
json_stream << "}";
|
||||||
|
return json_stream.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace widevine
|
||||||
Reference in New Issue
Block a user