package fuzion24.device.vulnerability.vulnerabilities;
import com.nowsecure.android.vts.BuildConfig;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
import fuzion24.device.vulnerability.test.VulnerabilityTestResult;
import fuzion24.device.vulnerability.util.DeviceInfo;
/**
* Created by fuzion24 on 11/25/15.
*/
public class VulnerabilityResultSerialzier {
private VulnerabilityResultSerialzier() {
}
public static JSONObject serializeResultsToJson(List<VulnerabilityTestResult> results, DeviceInfo devInfo) throws JSONException {
// not sure if this is too intense to do on the main thread...
JSONArray testResults = new JSONArray();
JSONObject buildInfo = new JSONObject();
JSONObject combinedResults = new JSONObject();
buildInfo.put("fingerprint", devInfo.getBuildFingerPrint());
buildInfo.put("kernelVersion", devInfo.getKernelVersion());
buildInfo.put("brand", devInfo.getBuildBrand());
buildInfo.put("manufacturer", devInfo.getBuildManufacturer());
buildInfo.put("model", devInfo.getBuildModel());
buildInfo.put("release", devInfo.getBuildRelease());
buildInfo.put("sdk", devInfo.getBuildSDK());
buildInfo.put("builddate", devInfo.getBuildDateUTC());
buildInfo.put("id", devInfo.getBuildID());
buildInfo.put("cpuABI", devInfo.getBuildCpuABI());
buildInfo.put("cpuABI2", devInfo.getBuildCpuABI2());
JSONArray supportedABIs = new JSONArray();
for(String abi : devInfo.getSupportedABIS()){
supportedABIs.put(abi);
}
buildInfo.put("supportedABIs", supportedABIs);
buildInfo.put("versionCode", BuildConfig.VERSION_CODE);
buildInfo.put("versionName", BuildConfig.VERSION_NAME);
for (VulnerabilityTestResult s : results) {
JSONObject res = new JSONObject();
res.put("name", s.getCVEorID());
res.put("isVulnerable", s.isVulnerable());
res.put("exception", s.getException());
testResults.put(res);
}
combinedResults.put("buildInfo", buildInfo);
combinedResults.put("results", testResults);
return combinedResults;
}
}