Newer
Older
package main
import (
"log"
"net"
"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
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, "address", "[::1]:50900",
"The UDP address for my quantumlayer so keys can be fetched")
flag.StringVar(&ql1Name, "name", "ekms-ql1",
"The name of the quantumlayer")
flag.StringVar(&udpQL2AddrString, "address", "[::1]:50901",
"The UDP address to a second quantumlayer so keys can be fetched")
flag.StringVar(&ql2Name, "name", "ekms-ql2",
"The name of the quantumlayer")
// Parse the provided flags
flag.Parse()
log.Println("Welcome to the proto-kms called: ", ql1Name)
if selfTesting == true {
go emulatedKMS(ql2Name, udpQL2AddrString, udpQL1AddrString)
emulatedKMS(ql1Name, udpQL1AddrString, udpQL2AddrString)
} else {
emulatedKMS(ql1Name, udpQL1AddrString, "")
}
func emulatedKMS(myName string, myUDPAddr string, peerUDPAddr string) {
// Attach to eKMS
emuKMS := kms.NeweKMS()
// Fire up Quantum LinK
myQL := emuKMS.AddQuantumElement(myName, uuid.New(), myUDPAddr)
udpQL2Addr, err := net.ResolveUDPAddr("udp", peerUDPAddr)
if err != nil {
log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
return
}
for {
if err == nil {
log.Printf("Current key IDs are for %s local %d:", myName, resultQLLocal.BulkKeyId)
if err == nil {
log.Printf("Current key IDs are for remote %d:", resultQLRemote.BulkKeyId)