Advertisement
programcreator

Diffie-Hellman API implemented by me.

Feb 6th, 2016
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.21 KB | None | 0 0
  1. function connect(modem,AUTH_CHANNEL,BigNum)
  2.     local prime = BigNum.new("625210769")
  3.     local base = BigNum.new("11")
  4.     local secret = BigNum.new(math.random(1,1000))
  5.     local event = {}
  6.     local PING_PORT = 1
  7.     local KEY_EXCHANGE_PORT = 2
  8.     local order
  9.     local _, mySecret = (base^secret)/prime
  10.     local hisSecret
  11.    
  12.     modem.open(AUTH_CHANNEL)
  13.     modem.transmit(AUTH_CHANNEL,PING_PORT,"ping")
  14.    
  15.     while true do
  16.         event = {os.pullEvent()}
  17.         --event, side, frequency, replyFrequency, message, distance
  18.         if event[1] == "modem_message" and event[4] == PING_PORT then
  19.             if event[5] == "ping" then
  20.             order = 2
  21.             modem.transmit(AUTH_CHANNEL,1,"pong")
  22.             break
  23.             elseif event[5] == "pong" then
  24.             order = 1
  25.             break
  26.             end
  27.         end
  28.     end
  29.    
  30.     if order == 1 then
  31.         modem.transmit(AUTH_CHANNEL,KEY_EXCHANGE_PORT,mySecret)
  32.         repeat
  33.             event = {os.pullEvent()}
  34.         until event[1] == "modem_message" and event[4] == KEY_EXCHANGE_PORT
  35.         hisSecret = event[5]
  36.         elseif order == 2 then
  37.         repeat
  38.             event = {os.pullEvent()}
  39.         until event[1] == "modem_message" and event[4] == KEY_EXCHANGE_PORT
  40.         hisSecret = event[5]
  41.         modem.transmit(AUTH_CHANNEL,KEY_EXCHANGE_PORT,mySecret)
  42.     end
  43.     local _,v = (hisSecret^secret)/prime
  44.     return v, order
  45. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement