From e58fc091b83ca039eafc54561bea874930093a68 Mon Sep 17 00:00:00 2001
From: Malte Bauch <malte.bauch@stud.h-da.de>
Date: Wed, 25 Oct 2023 17:20:14 +0200
Subject: [PATCH] Add kms id to peer

---
 internal/kms/kms.go      |  5 +++--
 internal/kms/kmsetsi.go  |  4 +++-
 internal/kms/kmspeers.go |  4 +++-
 internal/kms/module.go   | 11 ++++++-----
 internal/main_test.go    |  6 +++---
 5 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/internal/kms/kms.go b/internal/kms/kms.go
index 696c0ea3..322de280 100644
--- a/internal/kms/kms.go
+++ b/internal/kms/kms.go
@@ -51,6 +51,7 @@ type EKMS struct {
 	externalNotifierQLE chan uint32
 	kmsPeersMutex       sync.Mutex
 	// TODO(maba): find a better name for this
+	// TODO: add mutex
 	keysForPathId           map[uuid.UUID]string
 	routingTable            map[uuid.UUID]*Route
 	KmsPeers                map[string]*kmsPeer
@@ -116,13 +117,13 @@ func (kms *EKMS) AddQuantumElement(qm QuantumModule) error {
 	return nil
 }
 
-func (kms *EKMS) AddPeer(kmsPeerSocket string, servingQLE QuantumModule) (*kmsPeer, error) {
+func (kms *EKMS) AddPeer(peerKmsId string, kmsPeerSocket string, servingQLE QuantumModule) (*kmsPeer, error) {
 	//check if peer exists
 	if _, there := kms.KmsPeers[kmsPeerSocket]; there {
 		log.Errorf("Trying to add existing peer %s", kmsPeerSocket)
 		return nil, fmt.Errorf("Trying to add existing peer %s", kmsPeerSocket)
 	}
-	peer, err := NewKmsPeer(servingQLE, kmsPeerSocket, kms.interComAddr, kms.externalNotifierKMSPeer)
+	peer, err := NewKmsPeer(peerKmsId, servingQLE, kmsPeerSocket, kms.interComAddr, kms.externalNotifierKMSPeer)
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/kms/kmsetsi.go b/internal/kms/kmsetsi.go
index 68961193..aa5013d3 100644
--- a/internal/kms/kmsetsi.go
+++ b/internal/kms/kmsetsi.go
@@ -21,6 +21,7 @@ var (
 	etsiPort = flag.Int("port", 50900, "The server port")
 )
 
+// TODO: remove etsiServer
 type etsiServer struct {
 	pb.UnimplementedKmsETSIServer
 	handlingEkms *EKMS
@@ -65,7 +66,8 @@ func (es *etsiServer) ETSIAddKMSPeer(ctx context.Context, in *pb.ETSIKMSPeerRequ
 		return &pb.ETSIKMSPeerReply{}, err
 	}
 
-	es.handlingEkms.AddPeer(in.GetKmsPeerSocket(), servingQLE)
+	//TODO: remove hardcoded id
+	es.handlingEkms.AddPeer("default", in.GetKmsPeerSocket(), servingQLE)
 
 	return &pb.ETSIKMSPeerReply{
 		KmsPeerName: es.handlingEkms.kmsName,
diff --git a/internal/kms/kmspeers.go b/internal/kms/kmspeers.go
index 494cb3b1..30f3e2ca 100644
--- a/internal/kms/kmspeers.go
+++ b/internal/kms/kmspeers.go
@@ -34,6 +34,7 @@ type kmsPeer struct {
 	externalNotifierKMSPeer chan string
 	peerClient              pbIC.KmsTalkerClient
 	peerStatus              KmsPeerStatus
+	peerKmsId               string // NOTE: might be changed in the future
 	interComAddr            string
 	servingQuantumModul     QuantumModule
 	tcpSocket               net.TCPAddr // the IP address and TCP port (aka socket) of the kms peer
@@ -44,7 +45,7 @@ type kmsPeer struct {
 	quit                    chan bool // cancel the peer goroutine
 }
 
-func NewKmsPeer(servQM QuantumModule, tcpSocketStr string, interComAddr string, in chan string) (*kmsPeer, error) {
+func NewKmsPeer(peerKmsId string, servQM QuantumModule, tcpSocketStr string, interComAddr string, in chan string) (*kmsPeer, error) {
 	if servQM.Peer() != nil {
 		return nil, fmt.Errorf("QuantumModule with ID: , already has a peer", servQM.ID())
 	}
@@ -60,6 +61,7 @@ func NewKmsPeer(servQM QuantumModule, tcpSocketStr string, interComAddr string,
 		peerClient: peerClient,
 		// TODO: change this, only for demo purposes
 		peerStatus: KmsPeerUp,
+		peerKmsId:  peerKmsId,
 		// TODO: move this into a config
 		interComAddr:        interComAddr,
 		servingQuantumModul: servQM,
diff --git a/internal/kms/module.go b/internal/kms/module.go
index 0b170ba5..736cc685 100644
--- a/internal/kms/module.go
+++ b/internal/kms/module.go
@@ -23,7 +23,6 @@ type QuantumModule interface {
 	// NOTE: Sync will be removed as soon as the emulated quantum module has been
 	// changed to push a constant byte stream.
 	Sync() error
-	Manufacturer() string
 	KeyStore() *kmsKeyStore
 	Peer() *kmsPeer
 	SetPeer(*kmsPeer)
@@ -59,10 +58,6 @@ func (eqe *EmulatedQuantumModule) ID() uuid.UUID {
 	return eqe.QlID
 }
 
-func (eqe *EmulatedQuantumModule) Manufacturer() string {
-	return "danet"
-}
-
 func (eqe *EmulatedQuantumModule) Initialize() error {
 	// TODO: error handling
 	go eqe.keyHandler()
@@ -177,3 +172,9 @@ func (eqe *EmulatedQuantumModule) KeyChopper(bulkKey *quantumlayer.QuantumLayerB
 	}
 	return nil
 }
+
+type ETSI014HTTPQuantumModule struct {
+	id       uuid.UUID
+	keyStore *kmsKeyStore
+	peer     *kmsPeer
+}
diff --git a/internal/main_test.go b/internal/main_test.go
index 3c59b5c7..da2e697a 100644
--- a/internal/main_test.go
+++ b/internal/main_test.go
@@ -81,7 +81,7 @@ func emulatedKMS(myName, myUDPAddr, myInterComAddr, peerUDPAddr, peerInterComAdd
 
 	eqm.QuantumElementLink.AddPeer(udpQL2Addr)
 
-	_, err = emuKMS.AddPeer(peerInterComAddr, eqm)
+	_, err = emuKMS.AddPeer(myName, peerInterComAddr, eqm)
 	if err != nil {
 		log.Println("PEERERROR: ", err)
 	}
@@ -129,12 +129,12 @@ func middleKMS(myName, myUDPAddr, myInterComAddr, leftUDPAddr, leftInterComAddr,
 	qlForLeft.QuantumElementLink.AddPeer(netLeftUDPAddr)
 	qlForRight.QuantumElementLink.AddPeer(netRightUDPAddr)
 
-	peerLeft, err := emuKMS.AddPeer(leftInterComAddr, qlForLeft)
+	peerLeft, err := emuKMS.AddPeer("leftKMS", leftInterComAddr, qlForLeft)
 	if err != nil {
 		log.Println(err)
 	}
 
-	peerRight, err := emuKMS.AddPeer(rightInterComAddr, qlForRight)
+	peerRight, err := emuKMS.AddPeer("rightKMS", rightInterComAddr, qlForRight)
 	if err != nil {
 		log.Println(err)
 	}
-- 
GitLab