FileIO.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // Created by miti on 21/07/19.
  3. //
  4. #include "UntrustedInclude/FileIO.h"
  5. namespace FileIO {
  6. int write_to_fd(int fd, uint8_t* msg, size_t* expected_msg_length)
  7. {
  8. ssize_t bytes_written;
  9. lseek(fd, 0, SEEK_SET);
  10. bytes_written = write(fd, msg, *expected_msg_length);
  11. if(bytes_written == -1)
  12. return -1;
  13. fsync(fd);
  14. *expected_msg_length = bytes_written;
  15. return 0;
  16. }
  17. int read_from_fd(int fd, uint8_t* msg, size_t* expected_msg_length)
  18. {
  19. ssize_t bytes_read;
  20. lseek(fd, 0, SEEK_SET);
  21. bytes_read = read(fd, msg, *expected_msg_length);
  22. if(bytes_read == -1)
  23. return -1;
  24. *expected_msg_length = bytes_read;
  25. return 0;
  26. }
  27. int write_to_filename(char* filename, uint8_t* msg, size_t* expected_msg_length)
  28. {
  29. ssize_t bytes_written;
  30. FILE* file;
  31. file = fopen(filename, "w");
  32. if(file == NULL)
  33. return 2;
  34. bytes_written = fwrite(msg, 1, *expected_msg_length, file);
  35. if(bytes_written == -1)
  36. return -1;
  37. fsync(fileno(file));
  38. *expected_msg_length = bytes_written;
  39. fclose(file);
  40. return 0;
  41. }
  42. int read_from_filename(char* filename, uint8_t* msg, size_t* expected_msg_length)
  43. {
  44. ssize_t bytes_read;
  45. FILE* file;
  46. file = fopen(filename, "r");
  47. if(file == NULL)
  48. return 2;
  49. int fd = fileno(file);
  50. bytes_read = fread(msg, 1, *expected_msg_length, file);
  51. if(bytes_read == -1)
  52. return -1;
  53. *expected_msg_length = bytes_read;
  54. fclose(file);
  55. return 0;
  56. }
  57. size_t check_if_file_exists_return_size(char* filename)
  58. {
  59. int fd, ret_status;
  60. FILE* file;
  61. struct stat st;
  62. file = fopen(filename, "r");
  63. if(file == NULL)
  64. return 0;
  65. fd = fileno(file);
  66. if(fd == -1)
  67. return 0;
  68. printf("\nSuccessfully opened a file to seal the signing key pair for the client.\n");
  69. fflush(stdout);
  70. ret_status = fstat(fd, &st);
  71. if(ret_status != 0)
  72. {
  73. perror("error in finding the file size. - ");
  74. fflush(stderr);
  75. return 0;
  76. }
  77. fclose(file);
  78. return st.st_size;
  79. }
  80. };