Select Git revision
principalNetworkDomain_test.go
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
main.go 2.17 KiB
package main
// go generate protoc --proto_path=kmsintercomproto --go_out=kmsintercomproto --go_opt=paths=source_relative --go-grpc_out=kmsintercomproto --go-grpc_opt=paths=source_relative kmsintercom.proto
import (
"flag"
"log"
"net"
"time"
"code.fbi.h-da.de/m.stiemerling/proto-kms/kms"
"github.com/google/uuid"
)
func main() {
// run a self-test if set to yes
var selfTesting bool
// my own Name
var udpQL1AddrString string
var ql1Name string
// a name for potential self-testing
var udpQL2AddrString string
var ql2Name string
// Setup flags that allows to initially provide a address to a second
// quantumlayer so generated keys can be fetched. This is mainly to simplify
// the initial setup process.
flag.BoolVar(&selfTesting, "selftesting", false,
"Will perform self-testing with second quantum link if set to true")
flag.StringVar(&udpQL1AddrString, "my-address", "[::1]:50900",
"The UDP address for my quantumlayer so keys can be fetched")
flag.StringVar(&ql1Name, "my-name", "ekms-ql1",
"The name of the quantumlayer")
flag.StringVar(&udpQL2AddrString, "remote-address", "[::1]:50901",
"The UDP address to a second quantumlayer so keys can be fetched")
flag.StringVar(&ql2Name, "remote-name", "ekms-ql2",
"The name of the quantumlayer")
// Parse the provided flags
flag.Parse()
log.Println("Welcome to the proto-kms called: ", ql1Name)
go kms.StartInterComm()
if selfTesting == true {
log.Printf("%s in self-testing mode", ql1Name)
go emulatedKMS(ql2Name, udpQL2AddrString, udpQL1AddrString)
emulatedKMS(ql1Name, udpQL1AddrString, udpQL2AddrString)
} else {
log.Printf("%s in regular operations mode", ql1Name)
emulatedKMS(ql1Name, udpQL1AddrString, udpQL2AddrString)
}
return
}
func emulatedKMS(myName string, myUDPAddr string, peerUDPAddr string) {
// Attach to eKMS
emuKMS := kms.NeweKMS(myName, uuid.New())
// Fire up Quantum LinK
myQL := emuKMS.AddQuantumElement(myUDPAddr)
udpQL2Addr, err := net.ResolveUDPAddr("udp", peerUDPAddr)
if err != nil {
log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
return
}
myQL.QuantumElementLink.AddPeer(*udpQL2Addr)
// TODO/XXX catch errors!
emuKMS.GlobalKeyHandler(7 * time.Second)
}