Newer
Older
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
// go generate protoc --proto_path=kmsetsiproto --go_out=kmsetsiproto --go_opt=paths=source_relative --go-grpc_out=kmsetsiproto --go-grpc_opt=paths=source_relative kmsetsiproto.proto
import (
log "github.com/sirupsen/logrus"
"code.fbi.h-da.de/danet/proto-kms/kms"
//func main() {
func TestMain(m *testing.M) {
// run a self-test if set to yes
var selfTesting bool
// my own Name
var udpQL1AddrString string
var ql1Name string
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", true,
"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",
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)
log.Infof("%s in self-testing mode", ql1Name)
go emulatedKMS(ql2Name, udpQL2AddrString, udpQL1AddrString)
emulatedKMS(ql1Name, udpQL1AddrString, udpQL2AddrString)
} else {
log.Infof("%s in regular operations mode", ql1Name)
emulatedKMS(ql1Name, udpQL1AddrString, udpQL2AddrString)
func emulatedKMS(myName string, myUDPAddr string, peerUDPAddr string) {
// Attach to eKMS
emuKMS := kms.NewEKMS(myName, uuid.New(), os.Stdout, log.DebugLevel, false)
myQL := emuKMS.AddQuantumElement(myUDPAddr, os.Stdout, log.ErrorLevel, false)
if err != nil {
log.Fatalf("%s: QuantumlayerEmuPRNG UDP failure: %s", myName, err)
return
}
myQL.QuantumElementLink.AddPeer(udpQL2Addr)
// Start the SDN/management and key retrieval interface
go kms.StartETSI(peerUDPAddr, emuKMS)
emuKMS.GlobalKeyHandler(7 * time.Second)