// // Created by miti on 21/07/19. // #include "UntrustedInclude/FileIO.h" namespace FileIO { int write_to_fd(int fd, uint8_t* msg, size_t* expected_msg_length) { ssize_t bytes_written; lseek(fd, 0, SEEK_SET); bytes_written = write(fd, msg, *expected_msg_length); if(bytes_written == -1) return -1; fsync(fd); *expected_msg_length = bytes_written; return 0; } int read_from_fd(int fd, uint8_t* msg, size_t* expected_msg_length) { ssize_t bytes_read; lseek(fd, 0, SEEK_SET); bytes_read = read(fd, msg, *expected_msg_length); if(bytes_read == -1) return -1; *expected_msg_length = bytes_read; return 0; } int write_to_filename(char* filename, uint8_t* msg, size_t* expected_msg_length) { ssize_t bytes_written; FILE* file; file = fopen(filename, "w"); if(file == NULL) return 2; bytes_written = fwrite(msg, 1, *expected_msg_length, file); if(bytes_written == -1) return -1; fsync(fileno(file)); *expected_msg_length = bytes_written; fclose(file); return 0; } int read_from_filename(char* filename, uint8_t* msg, size_t* expected_msg_length) { ssize_t bytes_read; FILE* file; file = fopen(filename, "r"); if(file == NULL) return 2; bytes_read = fread(msg, 1, *expected_msg_length, file); if(bytes_read == -1) return -1; *expected_msg_length = bytes_read; fclose(file); return 0; } size_t check_if_file_exists_return_size(char* filename) { int fd, ret_status; FILE* file; struct stat st; file = fopen(filename, "r"); if(file == NULL) return 0; fd = fileno(file); if(fd == -1) return 0; printf("\nSuccessfully opened a file to seal the signing key pair for the client.\n"); fflush(stdout); ret_status = fstat(fd, &st); if(ret_status != 0) { perror("error in finding the file size. - "); fflush(stderr); return 0; } fclose(file); return st.st_size; } };