Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
Proto Kms
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Deploy
Package registry
Container registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
danet
Proto Kms
Commits
2cd943a8
Commit
2cd943a8
authored
1 year ago
by
Malte Bauch
Browse files
Options
Downloads
Patches
Plain Diff
Change PowerOn logic
parent
42b50d01
No related branches found
No related tags found
1 merge request
!9
First working draft version
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
quantumlayer/quantumlayer-emu-prng.go
+51
-48
51 additions, 48 deletions
quantumlayer/quantumlayer-emu-prng.go
with
51 additions
and
48 deletions
quantumlayer/quantumlayer-emu-prng.go
+
51
−
48
View file @
2cd943a8
...
@@ -80,66 +80,69 @@ func (qlemuprng *QuantumlayerEmuPRNG) PowerOn() {
...
@@ -80,66 +80,69 @@ func (qlemuprng *QuantumlayerEmuPRNG) PowerOn() {
log
.
Printf
(
"Sorry, the quantum layer is not configured for action. You've missed Configure()"
)
log
.
Printf
(
"Sorry, the quantum layer is not configured for action. You've missed Configure()"
)
return
return
}
}
qlemuprng
.
poweron
=
false
//
qlemuprng.poweron = false
log
.
Println
(
"QuantumlayerEmuPRNG is powering on...charging."
)
log
.
Println
(
"QuantumlayerEmuPRNG is powering on...charging."
)
// serve UDP incoming
// serve UDP incoming
go
func
()
{
if
qlemuprng
.
udpSrvConn
==
nil
{
// Get UDP server part going...
go
func
()
{
log
.
Printf
(
"localQLAddress is %s"
,
qlemuprng
.
localQLAddress
)
// Get UDP server part going...
log
.
Printf
(
"localQLAddress is %s"
,
qlemuprng
.
localQLAddress
)
// This reads random numbers from other Quantum end
udpSrvPort
,
err
:=
net
.
ResolveUDPAddr
(
"udp"
,
qlemuprng
.
localQLAddress
)
if
err
!=
nil
{
log
.
Fatalf
(
"QuantumlayerEmuPRNG UDP failure: %s"
,
err
)
return
}
qlemuprng
.
udpSrvConn
,
err
=
net
.
ListenUDP
(
"udp"
,
udpSrvPort
)
if
err
!=
nil
{
log
.
Fatalf
(
"QuantumlayerEmuPRNG UDP failure: %s"
,
err
)
return
}
defer
qlemuprng
.
udpSrvConn
.
Close
()
// Retrieve local UDP address and store it for further actions.
qlemuprng
.
qlLocalPort
=
qlemuprng
.
udpSrvConn
.
LocalAddr
()
.
(
*
net
.
UDPAddr
)
// Ready, set, go!
// This reads random numbers from other Quantum end
qlemuprng
.
poweron
=
true
udpSrvPort
,
err
:=
net
.
ResolveUDPAddr
(
"udp"
,
qlemuprng
.
localQLAddress
)
if
err
!=
nil
{
log
.
Fatalf
(
"QuantumlayerEmuPRNG UDP failure: %s"
,
err
)
return
}
log
.
Printf
(
"QuantumlayerEmuPRNG: started server, waiting for incoming rands on port %s
\n
"
,
qlemuprng
.
udpSrvConn
.
LocalAddr
()
.
(
*
net
.
UDPAddr
)
.
String
())
qlemuprng
.
udpSrvConn
,
err
=
net
.
ListenUDP
(
"udp"
,
udpSrvPort
)
inBuffer
:=
make
([]
byte
,
1500
)
for
{
// Buffer for reading from "Quantum link"
n
,
addr
,
err
:=
qlemuprng
.
udpSrvConn
.
ReadFromUDP
(
inBuffer
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Printf
(
"QuantumlayerEmuPRNG: Could not read from UDP: %s"
,
err
)
log
.
Fatalf
(
"QuantumlayerEmuPRNG UDP failure: %s"
,
err
)
}
else
{
return
log
.
Printf
(
"QuantumlayerEmuPRNG: read %d bytes from %s
\n
"
,
n
,
addr
)
}
defer
qlemuprng
.
udpSrvConn
.
Close
()
// Check if sender of datagram is qlPeer
// Warning this is not checking the validity of the sender, i.e., spoofing is possible
// Retrieve local UDP address and store it for further actions.
if
addr
.
String
()
==
qlemuprng
.
qlPeer
{
qlemuprng
.
qlLocalPort
=
qlemuprng
.
udpSrvConn
.
LocalAddr
()
.
(
*
net
.
UDPAddr
)
log
.
Printf
(
"QuantumlayerEmuPRNG: Peer %s listed"
,
addr
)
//dumb the received data into the channel and carry on
log
.
Printf
(
"QuantumlayerEmuPRNG: started server, waiting for incoming rands on port %s
\n
"
,
qlemuprng
.
udpSrvConn
.
LocalAddr
()
.
(
*
net
.
UDPAddr
)
.
String
())
// TODO/XXX: no vetting for anything
inBuffer
:=
make
([]
byte
,
1500
)
// Unmarshall out of JSON
for
{
var
inQBuffer
QuantumPayloadElement
// Buffer for reading from "Quantum link"
unmarshallErr
:=
json
.
Unmarshal
(
inBuffer
[
0
:
n
],
&
inQBuffer
)
n
,
addr
,
err
:=
qlemuprng
.
udpSrvConn
.
ReadFromUDP
(
inBuffer
)
if
unmarshallErr
==
nil
{
if
err
!=
nil
{
qlemuprng
.
incomingRandNums
<-
inQBuffer
log
.
Printf
(
"QuantumlayerEmuPRNG: Could not read from UDP: %s"
,
err
)
}
}
else
{
}
else
{
log
.
Printf
(
"QuantumlayerEmuPRNG: Peer %s NOT listed"
,
addr
)
log
.
Printf
(
"QuantumlayerEmuPRNG: read %d bytes from %s
\n
"
,
n
,
addr
)
// Check if sender of datagram is qlPeer
// Warning this is not checking the validity of the sender, i.e., spoofing is possible
if
addr
.
String
()
==
qlemuprng
.
qlPeer
{
log
.
Printf
(
"QuantumlayerEmuPRNG: Peer %s listed"
,
addr
)
//dumb the received data into the channel and carry on
// TODO/XXX: no vetting for anything
// Unmarshall out of JSON
var
inQBuffer
QuantumPayloadElement
unmarshallErr
:=
json
.
Unmarshal
(
inBuffer
[
0
:
n
],
&
inQBuffer
)
if
unmarshallErr
==
nil
{
qlemuprng
.
incomingRandNums
<-
inQBuffer
}
}
else
{
log
.
Printf
(
"QuantumlayerEmuPRNG: Peer %s NOT listed"
,
addr
)
}
}
}
}
}
}
}
()
}
()
}
// Wait for listening UDP socket in the above go-routine to get ready
// Wait for listening UDP socket in the above go-routine to get ready
for
qlemuprng
.
powero
n
!
=
true
{
for
qlemuprng
.
udpSrvCon
n
=
=
nil
{
}
}
// Ready, set, go!
qlemuprng
.
poweron
=
true
log
.
Println
(
"QuantumlayerEmuPRNG is charged and powered on."
)
log
.
Println
(
"QuantumlayerEmuPRNG is charged and powered on."
)
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment