Message ID | 20240206223153.3060433-6-igor.opaniuk@foundries.io |
---|---|
State | Superseded |
Delegated to: | Mattijs Korpershoek |
Headers | show |
Series | AVB: cosmetic adjustments/improvements | expand |
Hi Igor, Thank you for the patch. On mar., févr. 06, 2024 at 23:31, Igor Opaniuk <igor.opaniuk@foundries.io> wrote: > From: Igor Opaniuk <igor.opaniuk@gmail.com> > > Introduce str_avb_io_error() and str_avb_slot_error() functions, > that provide a pointer to AVB runtime error message. > > Signed-off-by: Igor Opaniuk <igor.opaniuk@gmail.com> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> > --- > > common/avb_verify.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ > include/avb_verify.h | 3 ++- > 2 files changed, 51 insertions(+), 1 deletion(-) > > diff --git a/common/avb_verify.c b/common/avb_verify.c > index ed58239cf8a..cff9117d92f 100644 > --- a/common/avb_verify.c > +++ b/common/avb_verify.c > @@ -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 > diff --git a/include/avb_verify.h b/include/avb_verify.h > index 2fb850044d9..5d998b5a302 100644 > --- a/include/avb_verify.h > +++ b/include/avb_verify.h > @@ -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 > -- > 2.34.1
diff --git a/common/avb_verify.c b/common/avb_verify.c index ed58239cf8a..cff9117d92f 100644 --- a/common/avb_verify.c +++ b/common/avb_verify.c @@ -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 diff --git a/include/avb_verify.h b/include/avb_verify.h index 2fb850044d9..5d998b5a302 100644 --- a/include/avb_verify.h +++ b/include/avb_verify.h @@ -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