diff --git a/example/main.go b/example/main.go new file mode 100644 index 0000000000000000000000000000000000000000..a3860d9d0024772f07d079ff3a5d5707107ff8ac --- /dev/null +++ b/example/main.go @@ -0,0 +1,64 @@ +package main + +import ( + "flag" + "log" + "net" + "os" + "os/signal" + "syscall" + + "code.fbi.h-da.de/danet/quantumlayer" + pb "code.fbi.h-da.de/danet/quipsec/gen/go/quipsec" + "github.com/sirupsen/logrus" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "gopkg.in/yaml.v3" +) + +type Config struct { + KMSAddr string `yaml:"KMSAddr"` + UDPAddr string `yaml:"UDPAddr"` + PeerUDPAddr string `yaml:"PeerUDPAddr"` + GenerateKeys bool `yaml:"GenerateKeys"` +} + +func main() { + // TODO: flag validation + configPath := flag.String("config", "", "path to the config file") + flag.Parse() + + // unmarshal config + config := &Config{} + file, err := os.ReadFile(*configPath) + if err != nil { + logrus.Fatal(err) + } + if err := yaml.Unmarshal(file, config); err != nil { + logrus.Fatal(err) + } + + newPeerConn, err := grpc.Dial(config.KMSAddr, grpc.WithTransportCredentials(insecure.NewCredentials())) + if err != nil { + log.Fatal(err) + return + } + + kmsClient := pb.NewKmsQkdmCommunicationServiceClient(newPeerConn) + + peerUDPAddr, err := net.ResolveUDPAddr("udp", config.PeerUDPAddr) + if err != nil { + log.Fatal(err) + return + } + + stopChan := make(chan os.Signal) + signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM) + + ql := quantumlayer.NewQuantumlayerEmuPRNG(kmsClient, os.Stdout, logrus.GetLevel(), false) + ql.Configure(config.GenerateKeys, config.UDPAddr) + ql.PowerOn() + ql.AddPeer(peerUDPAddr) + + <-stopChan +} diff --git a/go.mod b/go.mod index 173250abda42ec4b9b80b7b1f1de3329104c30ef..5faedb0db3683f7227012aeabfccea9a77550361 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,9 @@ module code.fbi.h-da.de/danet/quantumlayer go 1.21 require ( - code.fbi.h-da.de/danet/quicsep/gen/go/quicsep v0.0.0-20231103130241-c2c8c6de8030 + code.fbi.h-da.de/danet/quipsec/gen/go/quipsec v0.0.0-20231113131315-e0a0cd3d28e3 github.com/sirupsen/logrus v1.9.3 + google.golang.org/grpc v1.59.0 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c ) @@ -15,6 +16,5 @@ require ( golang.org/x/sys v0.11.0 // indirect golang.org/x/text v0.12.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect ) diff --git a/go.sum b/go.sum index 3d4123367dd1715bff38acc07bdc943cc8beb2c1..50675712277c4d7a77e51ce3da734ca4b3b3697b 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231030212536-12f9cba37c9d.2 h1:m8rKyv88R8ZIR1549RMXckZ4FZJGxrq/7aRYl6U3WHc= buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231030212536-12f9cba37c9d.2/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= -code.fbi.h-da.de/danet/quicsep/gen/go/quicsep v0.0.0-20231103130241-c2c8c6de8030 h1:/dQ8h5hjAQYkiCxhZyg7KTEEZrkOwfGVs36k0DO/Ie0= -code.fbi.h-da.de/danet/quicsep/gen/go/quicsep v0.0.0-20231103130241-c2c8c6de8030/go.mod h1:lUFcgwS441TZ+gJ+lCvTbFGtG7G7gYIpE3OSktgTVOo= +code.fbi.h-da.de/danet/quipsec/gen/go/quipsec v0.0.0-20231113131315-e0a0cd3d28e3 h1:PXz62uU6MEdcafEZnVwKINPRxSL0y0Ht0Pzp/NSSTew= +code.fbi.h-da.de/danet/quipsec/gen/go/quipsec v0.0.0-20231113131315-e0a0cd3d28e3/go.mod h1:lPCd19Jk8aL5B3xSk+h6y5sziXVPqyCXgO7dILvJFfQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/quantumlayer-emu-prng.go b/quantumlayer-emu-prng.go index 642d9eeacbf92a8b2c4c76836bbca17ed8aa79cc..d70095adf735004b54a684d632d6f2844470e52f 100644 --- a/quantumlayer-emu-prng.go +++ b/quantumlayer-emu-prng.go @@ -21,7 +21,7 @@ import ( "sync" "time" - pb "code.fbi.h-da.de/danet/quicsep/gen/go/quicsep" + pb "code.fbi.h-da.de/danet/quipsec/gen/go/quipsec" "github.com/sirupsen/logrus" logi "github.com/sirupsen/logrus" )