Simple AES chat program
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef COMM_H
  2. #define COMM_H
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <gmp.h>
  6. #include <stdint.h>
  7. struct sock_params
  8. {
  9. int sock;
  10. struct sockaddr *addr;
  11. socklen_t addrlen;
  12. struct addrinfo *freeme;
  13. };
  14. struct elgamal
  15. {
  16. mpz_t m;
  17. mpz_t g;
  18. mpz_t p;
  19. mpz_t x;
  20. };
  21. struct session
  22. {
  23. uint32_t key[60];
  24. struct sock_params params;
  25. struct elgamal eg;
  26. gmp_randstate_t rs;
  27. char last_sent_enc[16];
  28. char last_recv_enc[16];
  29. };
  30. void sess_init(struct session *sess);
  31. void sess_destroy(struct session *sess);
  32. int do_resolve(char *address, char *portstr, struct sock_params *params);
  33. void do_unresolve(struct sock_params params);
  34. int do_connect(struct session *sess);
  35. int do_receive(struct session *sess);
  36. void send_encrypted_byte(struct session *sess, char byte);
  37. int recv_encrypted_byte(struct session *sess);
  38. #endif