Select Git revision
akmsCkmsServer.go
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
akmsCkmsServer.go 1.31 KiB
package akmsCkmsServer
import (
"encoding/json"
"net/http"
"code.fbi.h-da.de/danet/quant/ekms/internal/kms"
)
// Define AKMSReceiverServer.
type AKMSReceiverServer struct {
ekms *kms.EKMS
server *http.Server
}
// create NewAKMSReceiver.
func NewAKMSReceiver(port string, ekms *kms.EKMS) *AKMSReceiverServer {
router := http.NewServeMux()
router.HandleFunc("/ksa_key_req", ksaReqHandler)
server := &http.Server{
Addr: ":" + port,
Handler: router,
}
AKMSReceiver := &AKMSReceiverServer{
ekms: ekms,
server: server,
}
return AKMSReceiver
}
func (akmsReceiver *AKMSReceiverServer) Serve() {
go akmsReceiver.server.ListenAndServe() //nolint:errcheck
}
type KeyProperties struct {
Number int `json:"number"`
KeyLength int `json:"key_length"`
Timeout int `json:"timeout"`
TTL int `json:"TTL"`
}
type KMSKeyRequest struct {
LocalCKMSID string `json:"local_CKMS_ID"`
RequestID string `json:"request_ID"`
KeyProperties []KeyProperties `json:"key_properties"`
}
func ksaReqHandler(w http.ResponseWriter, r *http.Request) {
// Parse the request body
var req KMSKeyRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// Run go routine
//ekms.Stuff()
w.WriteHeader(http.StatusNoContent)
}