x509_test.c 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* LibTomCrypt, modular cryptographic library -- Tom St Denis */
  2. /* SPDX-License-Identifier: Unlicense */
  3. #include <tomcrypt_test.h>
  4. #if defined(LTC_PEM) && defined(LTC_TEST_READDIR) && !defined(LTC_EASY)
  5. static int s_x509_decode(const void *in, unsigned long inlen, void *cert)
  6. {
  7. return x509_import_pem(in, &inlen, cert);
  8. }
  9. static int s_x509_decode_f(FILE *f, void *cert)
  10. {
  11. int err = x509_import_pem_filehandle(f, cert);
  12. if (err == CRYPT_UNKNOWN_PEM)
  13. err = CRYPT_NOP;
  14. return err;
  15. }
  16. static int s_x509_decode_bad(const void *in, unsigned long inlen, void *cert)
  17. {
  18. SHOULD_FAIL(x509_import_pem(in, &inlen, cert));
  19. return CRYPT_OK;
  20. }
  21. static int s_x509_decode_bad_f(FILE *f, void *cert)
  22. {
  23. SHOULD_FAIL(x509_import_pem_filehandle(f, cert));
  24. return CRYPT_OK;
  25. }
  26. int x509_test(void)
  27. {
  28. const ltc_x509_certificate *cert;
  29. if (ltc_mp.name == NULL) return CRYPT_NOP;
  30. DO(test_process_dir("tests/x509", &cert, (dir_iter_cb)s_x509_decode, NULL, (dir_cleanup_cb)x509_free, "x509_test"));
  31. DO(test_process_dir("tests/x509", &cert, NULL, (dir_fiter_cb)s_x509_decode_f, (dir_cleanup_cb)x509_free, "x509_test_filehandle"));
  32. DO(test_process_dir("tests/x509/openssl", &cert, (dir_iter_cb)s_x509_decode, NULL, (dir_cleanup_cb)x509_free, "x509_test_openssl"));
  33. DO(test_process_dir("tests/x509/openssl", &cert, NULL, (dir_fiter_cb)s_x509_decode_f, (dir_cleanup_cb)x509_free, "x509_test_openssl_filehandle"));
  34. DO(test_process_dir("tests/x509/openssl/bad", &cert, (dir_iter_cb)s_x509_decode_bad, NULL, NULL, "x509_test_openssl_bad"));
  35. DO(test_process_dir("tests/x509/openssl/bad", &cert, NULL, (dir_fiter_cb)s_x509_decode_bad_f, NULL, "x509_test_openssl_bad_filehandle"));
  36. DO(test_process_dir("tests/x509/gnutls", &cert, (dir_iter_cb)s_x509_decode, NULL, (dir_cleanup_cb)x509_free, "x509_test_gnutls"));
  37. DO(test_process_dir("tests/x509/gnutls", &cert, NULL, (dir_fiter_cb)s_x509_decode_f, (dir_cleanup_cb)x509_free, "x509_test_gnutls_filehandle"));
  38. DO(test_process_dir("tests/x509/gnutls/bad", &cert, (dir_iter_cb)s_x509_decode_bad, NULL, NULL, "x509_test_gnutls_bad"));
  39. DO(test_process_dir("tests/x509/gnutls/bad", &cert, NULL, (dir_fiter_cb)s_x509_decode_bad_f, NULL, "x509_test_gnutls_bad_filehandle"));
  40. if (strcmp(ltc_mp.name, "TomsFastMath") == 0)
  41. return 0;
  42. DO(test_process_dir("tests/x509/openssl/non-tfm", &cert, (dir_iter_cb)s_x509_decode, NULL, (dir_cleanup_cb)x509_free, "x509_test_openssl_non_tfm"));
  43. DO(test_process_dir("tests/x509/openssl/non-tfm", &cert, NULL, (dir_fiter_cb)s_x509_decode_f, (dir_cleanup_cb)x509_free, "x509_test_openssl_filehandle_non_tfm"));
  44. DO(test_process_dir("tests/x509/gnutls/non-tfm", &cert, (dir_iter_cb)s_x509_decode, NULL, (dir_cleanup_cb)x509_free, "x509_test_gnutls_non_tfm"));
  45. DO(test_process_dir("tests/x509/gnutls/non-tfm", &cert, NULL, (dir_fiter_cb)s_x509_decode_f, (dir_cleanup_cb)x509_free, "x509_test_gnutls_filehandle_non_tfm"));
  46. return 0;
  47. }
  48. #else
  49. int x509_test(void)
  50. {
  51. return CRYPT_NOP;
  52. }
  53. #endif