]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
common: avb_verify: add str_avb_io_error/str_avb_slot_error
authorIgor Opaniuk <igor.opaniuk@gmail.com>
Fri, 9 Feb 2024 19:20:43 +0000 (20:20 +0100)
committerMattijs Korpershoek <mkorpershoek@baylibre.com>
Thu, 15 Feb 2024 09:38:34 +0000 (10:38 +0100)
Introduce str_avb_io_error() and str_avb_slot_error() functions,
that provide a pointer to AVB runtime error message.

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Signed-off-by: Igor Opaniuk <igor.opaniuk@gmail.com>
Link: https://lore.kernel.org/r/20240209192045.3961832-6-igor.opaniuk@foundries.io
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
common/avb_verify.c
include/avb_verify.h

index ed58239cf8ace7e75f33228764a6684821829cb5..cff9117d92f1c1d8a74e24a6625d79f03454ab96 100644 (file)
@@ -119,6 +119,55 @@ static const unsigned char avb_root_pub[1032] = {
        0xd8, 0x7e,
 };
 
+const char *str_avb_io_error(AvbIOResult res)
+{
+       switch (res) {
+       case AVB_IO_RESULT_OK:
+               return "Requested operation was successful";
+       case AVB_IO_RESULT_ERROR_IO:
+               return "Underlying hardware encountered an I/O error";
+       case AVB_IO_RESULT_ERROR_OOM:
+               return "Unable to allocate memory";
+       case AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION:
+               return "Requested partition does not exist";
+       case AVB_IO_RESULT_ERROR_RANGE_OUTSIDE_PARTITION:
+               return "Bytes requested is outside the range of partition";
+       case AVB_IO_RESULT_ERROR_NO_SUCH_VALUE:
+               return "Named persistent value does not exist";
+       case AVB_IO_RESULT_ERROR_INVALID_VALUE_SIZE:
+               return "Named persistent value size is not supported";
+       case AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE:
+               return "Buffer is too small for the requested operation";
+       default:
+               return "Unknown AVB error";
+       }
+}
+
+const char *str_avb_slot_error(AvbSlotVerifyResult res)
+{
+       switch (res) {
+       case AVB_SLOT_VERIFY_RESULT_OK:
+               return "Verification passed successfully";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_OOM:
+               return "Allocation of memory failed";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_IO:
+               return "I/O error occurred while trying to load data";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_VERIFICATION:
+               return "Digest didn't match or signature checks failed";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_ROLLBACK_INDEX:
+               return "Rollback index is less than its stored value";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_PUBLIC_KEY_REJECTED:
+               return "Public keys are not accepted";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_INVALID_METADATA:
+               return "Metadata is invalid or inconsistent";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_UNSUPPORTED_VERSION:
+               return "Metadata requires a newer version of libavb";
+       case AVB_SLOT_VERIFY_RESULT_ERROR_INVALID_ARGUMENT:
+               return "Invalid arguments are used";
+       default:
+               return "Unknown AVB slot verification error";
+       }
+}
 /**
  * ============================================================================
  * Boot states support (GREEN, YELLOW, ORANGE, RED) and dm_verity
index 2fb850044d952195a50f07295035dd51b6d5e4a3..5d998b5a30272781436c9d30d9686c441ad3d688 100644 (file)
@@ -52,7 +52,8 @@ char *avb_set_enforce_verity(const char *cmdline);
 char *avb_set_ignore_corruption(const char *cmdline);
 
 char *append_cmd_line(char *cmdline_orig, char *cmdline_new);
-
+const char *str_avb_io_error(AvbIOResult res);
+const char *str_avb_slot_error(AvbSlotVerifyResult res);
 /**
  * ============================================================================
  * I/O helper inline functions