Skip to content
Snippets Groups Projects
Commit 1c236d5b authored by Martin Stiemerling's avatar Martin Stiemerling :speech_balloon:
Browse files

Merge branch 'ekms' into 'main'

Ekms

See merge request m.stiemerling/proto-kms!2
parents a25913c1 53b2c794
No related branches found
No related tags found
1 merge request!8Create a monorepo for ekms and quantumlayer
......@@ -54,19 +54,28 @@ func NewQuantumlayerEmuPRNG() (newql *QuantumlayerEmuPRNG) {
// Power on the quantum layer, i.e., open up the communication ports for the
// other quantum module
func (qlemuprng *QuantumlayerEmuPRNG) PowerOn() {
func (qlemuprng *QuantumlayerEmuPRNG) PowerOn(localQLAddress ...string) {
qlemuprng.poweron = false
log.Println("QuantumlayerEmuPRNG is powering on...charging.")
// Start receiving numberstore
// Start receiving numberstores
go qlemuprng.peerNumbers.receiveNumbers(qlemuprng.incomingRandNums)
go qlemuprng.myNumbers.receiveNumbers(qlemuprng.outgoingRandNums)
// serve UDP incoming
go func() {
// Get UDP server part going...
// Determine if a local UDP address should be used or not
var udpAddrString string
if len(localQLAddress) == 0 {
// No input
udpAddrString = ":0"
} else {
udpAddrString = localQLAddress[0]
}
log.Printf("localQLAddress is %s", localQLAddress[0])
// This reads random numbers from other Quantum end
udpSrvPort, err := net.ResolveUDPAddr("udp", ":0")
udpSrvPort, err := net.ResolveUDPAddr("udp", udpAddrString)
if err != nil {
log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
return
......@@ -160,7 +169,10 @@ func (qlemuprng *QuantumlayerEmuPRNG) AddPeer(addr net.UDPAddr) {
log.Printf("json.Marshal error %s", err)
}
qlemuprng.udpSrvConn.WriteMsgUDPAddrPort(jsonPayload, nil, addr.AddrPort())
_, _, err = qlemuprng.udpSrvConn.WriteMsgUDPAddrPort(jsonPayload, nil, addr.AddrPort())
if err != nil {
log.Fatalf("WriteMsgUDPAddrPort failed: %s", err)
}
qlemuprng.outgoingRandNums <- qpe
time.Sleep(5 * time.Second)
}
......
package quantumlayer
// Some tests
import (
"fmt"
"net"
"testing"
"time"
)
func TestQuantumLayer(t *testing.T) {
ql1 := NewQuantumlayerEmuPRNG()
ql1.PowerOn()
defer ql1.PowerOff()
ql2 := NewQuantumlayerEmuPRNG()
ql2.PowerOn()
defer ql2.PowerOff()
// Generate UDPAddr for ql1 peer
udpQL2AddrString := fmt.Sprintf("127.0.0.1:%d", ql2.GetLocalQLPort().Port)
udpQL2Addr, err := net.ResolveUDPAddr("udp", udpQL2AddrString)
if err != nil {
t.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
return
}
// Generate UDPAddr for ql2 peer
udpQL1AddrString := fmt.Sprintf("127.0.0.1:%d", ql1.GetLocalQLPort().Port)
udpQL1Addr, err := net.ResolveUDPAddr("udp", udpQL1AddrString)
if err != nil {
t.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
return
}
ql1.AddPeer(*udpQL2Addr)
ql2.AddPeer(*udpQL1Addr)
for n := 0; n < 2; n++ {
resultQl1, err := ql1.GetKeyBatchPeer()
if err == nil {
t.Logf("run %d, *ql1* keyid %d \t keylen %d", n, resultQl1.BulkKeyId, resultQl1.BulkKeyLength)
}
//resultQl2 := ql2.GetBatchPeer()
resultQl2, err := ql2.GetKeyBatchPeer()
if err == nil {
t.Logf("*ql2* keyid %d \t keylen %d", resultQl2.BulkKeyId, resultQl1.BulkKeyLength)
}
resultQL2Local, err := ql2.GetKeyBatchLocal()
if err == nil {
t.Logf("Current key IDs are for ql2 local %d and for peer ql1 %d", resultQL2Local.BulkKeyId, resultQl1.BulkKeyId)
}
time.Sleep(5 * time.Second)
}
}
......@@ -11,7 +11,7 @@ type QuantumLayerBulkKey struct {
}
type QuantumLayer interface {
PowerOn() // switch on the quantum layer element
PowerOn(...string) // switch on the quantum layer element
PowerOff() // switch off the quantum layer element
AddPeer() // Adds a Quantum Layer Peer to the peer list
RemovePeer() // Remmoves a Quantum Layer Peer to the peer list
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment