test_suite_pem.function 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* BEGIN_HEADER */
  2. #include "mbedtls/base64.h"
  3. #include "mbedtls/pem.h"
  4. #include "mbedtls/des.h"
  5. #include "mbedtls/aes.h"
  6. #include "mbedtls/legacy_or_psa.h"
  7. /* END_HEADER */
  8. /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */
  9. void mbedtls_pem_write_buffer(char *start, char *end, data_t *buf,
  10. char *result_str)
  11. {
  12. unsigned char *check_buf = NULL;
  13. int ret;
  14. size_t olen = 0, olen2 = 0;
  15. ret = mbedtls_pem_write_buffer(start, end, buf->x, buf->len, NULL, 0, &olen);
  16. TEST_ASSERT(ret == MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL);
  17. check_buf = (unsigned char *) mbedtls_calloc(1, olen);
  18. TEST_ASSERT(check_buf != NULL);
  19. ret = mbedtls_pem_write_buffer(start, end, buf->x, buf->len, check_buf, olen, &olen2);
  20. TEST_ASSERT(olen2 <= olen);
  21. TEST_ASSERT(olen > strlen((char *) result_str));
  22. TEST_ASSERT(ret == 0);
  23. TEST_ASSERT(strncmp((char *) check_buf, (char *) result_str, olen) == 0);
  24. exit:
  25. mbedtls_free(check_buf);
  26. }
  27. /* END_CASE */
  28. /* BEGIN_CASE depends_on:MBEDTLS_PEM_PARSE_C */
  29. void mbedtls_pem_read_buffer(char *header, char *footer, char *data,
  30. char *pwd, int res, data_t *out)
  31. {
  32. mbedtls_pem_context ctx;
  33. int ret;
  34. size_t use_len = 0;
  35. size_t pwd_len = strlen(pwd);
  36. const unsigned char *buf;
  37. mbedtls_pem_init(&ctx);
  38. ret = mbedtls_pem_read_buffer(&ctx, header, footer, (unsigned char *) data,
  39. (unsigned char *) pwd, pwd_len, &use_len);
  40. TEST_ASSERT(ret == res);
  41. if (ret != 0) {
  42. goto exit;
  43. }
  44. use_len = 0;
  45. buf = mbedtls_pem_get_buffer(&ctx, &use_len);
  46. TEST_EQUAL(use_len, out->len);
  47. TEST_ASSERT(memcmp(out->x, buf, out->len) == 0);
  48. exit:
  49. mbedtls_pem_free(&ctx);
  50. }
  51. /* END_CASE */