Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --not tested
- --program testing hsign3
- --get this file: pastebin get NhkzEYEV hsign3test
- --get installer: pastebin run fjSV9kHj
- --install: installer installfile CGManYPS
- os.loadAPI("theinsektAPIs/sha256")
- os.loadAPI("theinsektAPIs/hsign3")
- args={...}
- if #args==0 then
- print("usage_sender: testhsign3 secret modemside targetid")
- print("usage_receiver: testhsign3 secret modemside")
- return
- end
- local protocol="hsign3"
- local secret=args[1]
- local side=args[2]
- if secret==nil then error("Error: secret has no value") end
- if side==nil then error("Error: side has no value") end
- rednet.open(side)
- print(#args)
- if #args >= 3 then
- print("Sender!")
- local id=tonumber(args[3])
- local sign=hsign3.getSigner(secret,sha256.sha256)
- while(true) do
- print("input:")
- local input=read()
- local signedMessage=sign(input)
- rednet.send(id,signedMessage,protocol, secret)
- print("sent: ",signedMessage)
- print("done")
- end
- else
- print("receiver!")
- local verify=hsign3.getVerifier(secret,sha256.sha256,10.0)
- while(true) do
- print("waiting for message...")
- local id2, signedMessage, protocol2 =rednet.receive(protocol)
- print("respond to id: ",id2)
- print("respond with protocol: ",protocol2)
- print("signedMessage: ")
- print(signedMessage)
- local ok, message=verify(signedMessage)
- print("Verification result: ",ok)
- print("message: ",message)
- print("done")
- --http://www.computercraft.info/forums2/index.php?/topic/14025-wait-if-there-will-be-input-in-10-seconds-and-then-move-on/
- end
- end
- --untested code for a wirelssly controled computer
- --used to control a door
- function wirelessDoor(side, verifier, maxDistance)
- --screen message
- print("Wireless door lock")
- print("Rednet id: todo")
- print("Rednet protocol: todo")
- print("secret: ?")
- --do: close door
- redstone.setOutput(side, false)
- --some varibles
- local openTime=3
- local timer = nil
- --door loop
- while true do
- os.sleep(0.2)--wait so that loop isn't to fast
- local event, r1,r2,r3 = os.pullEvent() --wait for door message or automatic close timer
- if event=="timer" and timer==r1 then --wait for the latest auto close timer
- --do: close door
- redstone.setOutput(side, false)
- elseif event=="rednet_message" then
- local senderId=r1
- local message0=r2
- local distance=r3
- local success, message = verifier(message0)
- if success and message=="door" then
- if distance>maxDistance then
- --do: close door
- redstone.setOutput(side, false)
- --remove timer
- timer=nil
- else
- --do: open door
- redstone.setOutput(side, true)
- --do: set time until automatic close
- local timer = os.startTimer(openTime) --time to wait until automatic close
- end --if
- os.sleep(0.2)
- end --if
- end --if
- end --while
- end --function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement