diff --git a/internal/kms/kms.go b/internal/kms/kms.go index 696c0ea328b726c56edd220280fb94ca07625231..322de28041e0dd3ea94b5ff63b809ec3e715cf45 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 689611937e19ad2bea90bfdb6d47c73c1c853098..aa5013d368b396e3f554608e632c7c1b1b6b80d5 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 494cb3b1d62b3b70e68b498d27d4f71d92d6510c..30f3e2ca51d3445b17016b6553c432fdc026e68f 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 0b170ba5e3b24d410c16d87e1cd6977efdbfb73c..736cc6858345ed51f63a614e2b2d9a99d4b8cdac 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 3c59b5c785224bdc0879d45e616c86ed4f8d8bce..da2e697a1fbe6d889f2f3af8a08641b58f29f731 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) }