check_tagged.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /** check_tagged.c
  2. *
  3. * Test the tag-check functionality of Slitheen
  4. */
  5. #include <check.h>
  6. #include <stdlib.h>
  7. #include "../flow.h"
  8. #include "../crypto.h"
  9. #include "../cryptothread.h"
  10. #include "../packet.h"
  11. #include "../util.h"
  12. #include "test_util.h"
  13. START_TEST(test_recognize_notag){
  14. struct packet_info *info;
  15. uint8_t *packet;
  16. //populate packet_info with a tagged ClientHello message
  17. if(!read_file("data/packet_untagged.dat", &packet)){
  18. ck_abort();
  19. }
  20. info = smalloc(sizeof(struct packet_info));
  21. extract_packet_headers(packet, info);
  22. ck_assert_int_eq(check_handshake(info), 0);
  23. }
  24. END_TEST
  25. START_TEST(test_recognize_tag){
  26. struct packet_info *info;
  27. uint8_t *data;
  28. FILE *fp;
  29. uint64_t fsize;
  30. //populate packet_info with a tagged ClientHello message
  31. if(!read_file("data/packet_tagged.dat", &data)){
  32. ck_abort();
  33. }
  34. info = smalloc(sizeof(struct packet_info));
  35. extract_packet_headers(data, info);
  36. ck_assert_int_eq(check_handshake(info), 1);
  37. }
  38. END_TEST
  39. Suite *tag_suite(void) {
  40. Suite *s;
  41. TCase *tc_core;
  42. s = suite_create("Tag");
  43. tc_core = tcase_create("Core");
  44. tcase_add_test(tc_core, test_recognize_tag);
  45. tcase_add_test(tc_core, test_recognize_notag);
  46. suite_add_tcase(s, tc_core);
  47. return s;
  48. }
  49. int main(void){
  50. int number_failed;
  51. Suite *s;
  52. SRunner *sr;
  53. //initialize Slitheen structures
  54. if(init_tables()){
  55. exit(1);
  56. }
  57. if(init_session_cache()){
  58. exit(1);
  59. }
  60. init_crypto_locks();
  61. s = tag_suite();
  62. sr = srunner_create(s);
  63. srunner_set_fork_status(sr, CK_NOFORK);
  64. srunner_run_all(sr, CK_NORMAL);
  65. number_failed = srunner_ntests_failed(sr);
  66. srunner_free(sr);
  67. crypto_locks_cleanup();
  68. return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
  69. }