From 157b9c24040ed0e85f72a5a4daf777768bca7b7e Mon Sep 17 00:00:00 2001
From: aneesh <achattaraj@student.unimelb.edu.au>
Date: Fri, 24 May 2019 15:11:01 +1000
Subject: [PATCH] dh

---
 dh   | Bin 0 -> 13232 bytes
 dh.c | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 157 insertions(+)
 create mode 100644 dh
 create mode 100644 dh.c

diff --git a/dh b/dh
new file mode 100644
index 0000000000000000000000000000000000000000..24c681b6e0e77c9d46f9b0aaa97a5dd4efdb9e37
GIT binary patch
literal 13232
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

literal 0
HcmV?d00001

diff --git a/dh.c b/dh.c
new file mode 100644
index 0000000..5365b62
--- /dev/null
+++ b/dh.c
@@ -0,0 +1,157 @@
+/* A simple client program for server.c
+
+   To compile: gcc client.c -o client
+
+   To run: start the server, then the client */
+#include <stdbool.h>
+
+#include <sys/types.h>
+
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <unistd.h>
+
+#include <arpa/inet.h>
+
+#include <netdb.h>
+
+#include <unistd.h>
+
+#include <signal.h>
+
+#include <stdio.h>
+
+#include <string.h>
+
+#include <fcntl.h>
+
+#include <errno.h>
+
+#include <sys/time.h>
+
+#include <stdlib.h>
+
+#include <memory.h>
+
+#include <ifaddrs.h>
+
+#include <net/if.h>
+
+#include <stdarg.h>
+
+// https://www.techiedelight.com/c-program-demonstrate-diffie-hellman-algorithm/
+
+int compute(int g, int b, int p) {
+  int r;
+  int y = 1;
+
+  while (b > 0) {
+    r = b % 2;
+
+    // fgst exponention
+    if (r == 1)
+      y = (y * g) % p;
+    g = g * g % p;
+
+    b = b / 2;
+  }
+
+  return y;
+}
+
+int main(int argc, char ** argv) {
+  int sockfd, portno, n, b, f;
+  struct sockaddr_in serv_addr;
+  struct hostent * server;
+  portno = 7800;
+  char buffer[256];
+
+  b = atoi(argv[1]);
+
+  bzero((char * ) & serv_addr, sizeof(serv_addr));
+  /* Translate host name into peer's IP address ;
+   * This is name translation service by the operating system
+   */
+  server = gethostbyname("172.26.37.44");
+
+  if (server == NULL) {
+    fprintf(stderr, "ERROR, no such host\n");
+    exit(0);
+  }
+
+  /* Building data structures for socket */
+
+  bzero((char * ) & serv_addr, sizeof(serv_addr));
+
+  serv_addr.sin_family = AF_INET;
+
+  bcopy(server->h_addr_list[0], (char *)&serv_addr.sin_addr.s_addr, server->h_length);
+
+  serv_addr.sin_port = htons(portno);
+
+  /* Create TCP socket -- active open
+   * Preliminary steps: Setup: creation of active open socket
+   */
+
+  sockfd = socket(AF_INET, SOCK_STREAM, 0);
+
+  if (sockfd < 0) {
+    perror("ERROR opening socket");
+    exit(0);
+  } else {
+    printf("Socket connection successful\n");
+  }
+
+  if (connect(sockfd, (struct sockaddr * ) & serv_addr, sizeof(serv_addr)) < 0) {
+    perror("ERROR");
+    exit(0);
+  }
+
+  bool protocol = true;
+  char * message_phase[] = {
+    "send_username",
+    "send_gb_mod_p",
+    "send_ga_mod_p",
+    "success",
+    "end"
+  };
+  char * current_phase = "send_username";
+
+  printf("Send Usename");
+  char * username = "achattaraj\n";
+  bzero(buffer, 256);
+  sprintf(buffer, username);
+  n = write(sockfd, buffer, strlen(buffer));
+  current_phase = message_phase[1];
+
+  printf("send gb mod p \n");
+  bzero(buffer, 256);
+  b = compute(15, atoi(argv[1]), 97);
+  sprintf(buffer, "%d\n", b);
+  n = write(sockfd, buffer, strlen(buffer));
+  current_phase = message_phase[2];
+
+  printf("send ga mod p \n");
+  bzero(buffer, 256);
+  n = read(sockfd, buffer, 255);
+  int a = atoi(buffer);
+  bzero(buffer, 256);
+  a = compute(a, atoi(argv[1]), 97);
+  sprintf(buffer, "%d\n", a);
+  n = write(sockfd, buffer, strlen(buffer));
+
+  n = 0;
+  while (strstr(buffer, "Success") == NULL) {
+    n = read(sockfd, buffer, 255);
+
+    current_phase = "end";
+    buffer[n] = 0;
+    printf("%s\n", buffer);
+
+    close(sockfd);
+    return 0;
+
+  }
+}
-- 
GitLab