test_app_desc.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include <string.h>
  7. #include "esp_ota_ops.h"
  8. #include "unity.h"
  9. TEST_CASE("esp_ota_get_app_elf_sha256 test", "[esp_app_desc]")
  10. {
  11. const int sha256_hex_len = CONFIG_APP_RETRIEVE_LEN_ELF_SHA;
  12. char dst[sha256_hex_len + 2];
  13. const char fill = 0xcc;
  14. int res;
  15. size_t len;
  16. char ref_sha256[sha256_hex_len + 1];
  17. const esp_app_desc_t* desc = esp_ota_get_app_description();
  18. for (int i = 0; i < sizeof(ref_sha256) / 2; ++i) {
  19. snprintf(ref_sha256 + 2*i, 3, "%02x", desc->app_elf_sha256[i]);
  20. }
  21. ref_sha256[sha256_hex_len] = 0;
  22. printf("Ref: %s\n", ref_sha256);
  23. memset(dst, fill, sizeof(dst));
  24. len = sizeof(dst);
  25. res = esp_ota_get_app_elf_sha256(dst, len);
  26. printf("%d: %s (%d)\n", len, dst, res);
  27. TEST_ASSERT_EQUAL(sha256_hex_len + 1, res);
  28. TEST_ASSERT_EQUAL(0, memcmp(dst, ref_sha256, res - 1));
  29. TEST_ASSERT_EQUAL_HEX(0, dst[sha256_hex_len]);
  30. TEST_ASSERT_EQUAL_HEX(fill, dst[sha256_hex_len + 1]);
  31. memset(dst, fill, sizeof(dst));
  32. len = 9;
  33. res = esp_ota_get_app_elf_sha256(dst, len);
  34. printf("%d: %s (%d)\n", len, dst, res);
  35. TEST_ASSERT_EQUAL(9, res);
  36. TEST_ASSERT_EQUAL(0, memcmp(dst, ref_sha256, res - 1));
  37. TEST_ASSERT_EQUAL_HEX(0, dst[8]);
  38. TEST_ASSERT_EQUAL_HEX(fill, dst[9]);
  39. memset(dst, fill, sizeof(dst));
  40. len = 8;
  41. res = esp_ota_get_app_elf_sha256(dst, len);
  42. printf("%d: %s (%d)\n", len, dst, res);
  43. // should output even number of characters plus '\0'
  44. TEST_ASSERT_EQUAL(7, res);
  45. TEST_ASSERT_EQUAL(0, memcmp(dst, ref_sha256, res - 1));
  46. TEST_ASSERT_EQUAL_HEX(0, dst[6]);
  47. TEST_ASSERT_EQUAL_HEX(fill, dst[7]);
  48. TEST_ASSERT_EQUAL_HEX(fill, dst[8]);
  49. }