Advertisement
theinsekt

testhsign3

Mar 6th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.81 KB | None | 0 0
  1. --not tested
  2. --program testing hsign3
  3.  
  4. --get this file: pastebin get NhkzEYEV hsign3test
  5.  
  6. --get installer: pastebin run fjSV9kHj
  7. --install: installer installfile CGManYPS
  8.  
  9. os.loadAPI("theinsektAPIs/sha256")
  10. os.loadAPI("theinsektAPIs/hsign3")
  11.  
  12. args={...}
  13.  
  14. if #args==0 then
  15.  print("usage_sender: testhsign3 secret modemside targetid")
  16.  print("usage_receiver: testhsign3 secret modemside")
  17.  return
  18. end
  19.  
  20. local protocol="hsign3"
  21. local secret=args[1]
  22. local side=args[2]
  23.  
  24. if secret==nil then error("Error: secret has no value") end
  25. if side==nil then error("Error: side has no value") end
  26. rednet.open(side)
  27.  
  28.  
  29. print(#args)
  30. if #args >= 3 then
  31.  print("Sender!")
  32.  local id=tonumber(args[3])
  33.  local sign=hsign3.getSigner(secret,sha256.sha256)
  34.  while(true) do
  35.   print("input:")
  36.   local input=read()
  37.   local signedMessage=sign(input)
  38.   rednet.send(id,signedMessage,protocol, secret)
  39.   print("sent: ",signedMessage)
  40.   print("done")
  41.  end
  42. else
  43.  print("receiver!")
  44.  local verify=hsign3.getVerifier(secret,sha256.sha256,10.0)
  45.  while(true) do
  46.   print("waiting for message...")
  47.   local id2, signedMessage, protocol2 =rednet.receive(protocol)
  48.   print("respond to id: ",id2)
  49.   print("respond with protocol: ",protocol2)
  50.   print("signedMessage: ")
  51.   print(signedMessage)
  52.   local ok, message=verify(signedMessage)
  53.   print("Verification result: ",ok)
  54.   print("message: ",message)
  55.   print("done")
  56.  --http://www.computercraft.info/forums2/index.php?/topic/14025-wait-if-there-will-be-input-in-10-seconds-and-then-move-on/
  57.  
  58.  
  59.  end
  60. end
  61.  
  62.  
  63. --untested code for a wirelssly controled computer
  64. --used to control a door
  65. function wirelessDoor(side, verifier, maxDistance)
  66.  --screen message
  67.  print("Wireless door lock")
  68.  print("Rednet id: todo")
  69.  print("Rednet protocol: todo")
  70.  print("secret: ?")
  71.  
  72.  --do: close door
  73.  redstone.setOutput(side, false)
  74.  
  75.  --some varibles
  76.  local openTime=3
  77.  local timer = nil
  78.  
  79.  --door loop
  80.  while true do
  81.   os.sleep(0.2)--wait so that loop isn't to fast
  82.   local event, r1,r2,r3 = os.pullEvent() --wait for door message or automatic close timer
  83.   if event=="timer" and timer==r1 then --wait for the latest auto close timer
  84.     --do: close door
  85.     redstone.setOutput(side, false)
  86.   elseif event=="rednet_message" then
  87.     local senderId=r1
  88.     local message0=r2
  89.     local distance=r3
  90.     local success, message = verifier(message0)
  91.     if success and message=="door" then
  92.      if distance>maxDistance then
  93.       --do: close door
  94.       redstone.setOutput(side, false)
  95.       --remove timer
  96.       timer=nil
  97.      else
  98.       --do: open door
  99.       redstone.setOutput(side, true)
  100.       --do: set time until automatic close
  101.       local timer = os.startTimer(openTime) --time to wait until automatic close
  102.      end --if
  103.      os.sleep(0.2)
  104.     end --if
  105.   end --if
  106.  end --while
  107. end --function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement