test_pcr.c 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* SPDX-License-Identifier: BSD-3-Clause */
  2. #include <stdarg.h>
  3. #include <stdbool.h>
  4. #include <stddef.h>
  5. #include <setjmp.h>
  6. #include <cmocka.h>
  7. #include "pcr.h"
  8. #include "tpm2_util.h"
  9. static void test_pcr_alg_nice_names(void **state) {
  10. (void) state;
  11. TPML_PCR_SELECTION friendly_pcr_selections =
  12. TPML_PCR_SELECTION_EMPTY_INIT;
  13. bool result = pcr_parse_selections("sha256:16,17,18+0x0b:16,17,18",
  14. &friendly_pcr_selections);
  15. assert_true(result);
  16. TPML_PCR_SELECTION raw_pcr_selections =
  17. TPML_PCR_SELECTION_EMPTY_INIT;
  18. result = pcr_parse_selections("0xb:16,17,18+0x0b:16,17,18",
  19. &raw_pcr_selections);
  20. assert_true(result);
  21. assert_memory_equal(&friendly_pcr_selections, &raw_pcr_selections,
  22. sizeof(raw_pcr_selections));
  23. // select from PCR bank sm3_256
  24. TPML_PCR_SELECTION friendly_pcr_selections_sm3 =
  25. TPML_PCR_SELECTION_EMPTY_INIT;
  26. bool result_sm3 = pcr_parse_selections("sm3_256:16,17,18+0x12:16,17,18",
  27. &friendly_pcr_selections_sm3);
  28. assert_true(result_sm3);
  29. TPML_PCR_SELECTION raw_pcr_selections_sm3 =
  30. TPML_PCR_SELECTION_EMPTY_INIT;
  31. result_sm3 = pcr_parse_selections("0x12:16,17,18+0x12:16,17,18",
  32. &raw_pcr_selections_sm3);
  33. assert_true(result_sm3);
  34. assert_memory_equal(&friendly_pcr_selections_sm3, &raw_pcr_selections_sm3,
  35. sizeof(raw_pcr_selections_sm3));
  36. // select from PCR bank sha3_256
  37. TPML_PCR_SELECTION friendly_pcr_selections_sha3_256 =
  38. TPML_PCR_SELECTION_EMPTY_INIT;
  39. bool result_sha3 = pcr_parse_selections("sha3_256:16,17,18+0x27:16,17,18",
  40. &friendly_pcr_selections_sha3_256);
  41. assert_true(result_sha3);
  42. TPML_PCR_SELECTION raw_pcr_selections_sha3_256 =
  43. TPML_PCR_SELECTION_EMPTY_INIT;
  44. result_sha3 = pcr_parse_selections("0x27:16,17,18+0x27:16,17,18",
  45. &raw_pcr_selections_sha3_256);
  46. assert_true(result_sha3);
  47. assert_memory_equal(&friendly_pcr_selections_sha3_256, &raw_pcr_selections_sha3_256,
  48. sizeof(raw_pcr_selections_sha3_256));
  49. }
  50. /* link required symbol, but tpm2_tool.c declares it AND main, which
  51. * we have a main below for cmocka tests.
  52. */
  53. bool output_enabled = true;
  54. int main(int argc, char* argv[]) {
  55. (void) argc;
  56. (void) argv;
  57. const struct CMUnitTest tests[] = {
  58. cmocka_unit_test(test_pcr_alg_nice_names)
  59. };
  60. return cmocka_run_group_tests(tests, NULL, NULL);
  61. }