|
|
@@ -0,0 +1,59 @@
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+. /lib/functions.sh
|
|
|
+. /lib/functions/system.sh
|
|
|
+. /usr/share/libubox/jshn.sh
|
|
|
+
|
|
|
+include /lib/upgrade
|
|
|
+
|
|
|
+VALID=1
|
|
|
+FORCEABLE=1
|
|
|
+
|
|
|
+# Mark image as invalid but still possible to install
|
|
|
+notify_firmware_invalid() {
|
|
|
+ VALID=0
|
|
|
+}
|
|
|
+
|
|
|
+# Mark image as broken (impossible to install)
|
|
|
+notify_firmware_broken() {
|
|
|
+ VALID=0
|
|
|
+ FORCEABLE=0
|
|
|
+}
|
|
|
+
|
|
|
+# Add result of validation test
|
|
|
+notify_firmware_test_result() {
|
|
|
+ local old_ns
|
|
|
+
|
|
|
+ json_set_namespace validate_firmware_image old_ns
|
|
|
+ json_add_boolean "$1" "$2"
|
|
|
+ json_set_namespace $old_ns
|
|
|
+}
|
|
|
+
|
|
|
+err_to_bool() {
|
|
|
+ [ "$1" -ne 0 ] && echo 0 || echo 1
|
|
|
+}
|
|
|
+
|
|
|
+fwtool_check_signature "$1" >&2
|
|
|
+FWTOOL_SIGNATURE=$?
|
|
|
+[ "$FWTOOL_SIGNATURE" -ne 0 ] && notify_firmware_invalid
|
|
|
+
|
|
|
+fwtool_check_image "$1" >&2
|
|
|
+FWTOOL_DEVICE_MATCH=$?
|
|
|
+[ "$FWTOOL_DEVICE_MATCH" -ne 0 ] && notify_firmware_invalid
|
|
|
+
|
|
|
+json_set_namespace validate_firmware_image old_ns
|
|
|
+json_init
|
|
|
+ json_add_object "tests"
|
|
|
+ json_add_boolean fwtool_signature "$(err_to_bool $FWTOOL_SIGNATURE)"
|
|
|
+ json_add_boolean fwtool_device_match "$(err_to_bool $FWTOOL_DEVICE_MATCH)"
|
|
|
+
|
|
|
+ # Call platform_check_image() here so it can add its test
|
|
|
+ # results and still mark image properly.
|
|
|
+ json_set_namespace $old_ns
|
|
|
+ platform_check_image "$1" >&2 || notify_firmware_invalid
|
|
|
+ json_set_namespace validate_firmware_image old_ns
|
|
|
+ json_close_object
|
|
|
+ json_add_boolean valid "$VALID"
|
|
|
+ json_add_boolean forceable "$FORCEABLE"
|
|
|
+json_dump -i
|
|
|
+json_set_namespace $old_ns
|