Something went wrong on our end
-
Malte Bauch authoredMalte Bauch authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
util.go 1.75 KiB
package kms
import (
"bytes"
"encoding/base64"
"fmt"
"net/http"
etsi14 "code.fbi.h-da.de/danet/ekms/api/go/rest/etsi/client"
"github.com/google/uuid"
)
func randomItemFromMap[T comparable, M any](m map[T]M) (M, error) {
for _, item := range m {
return item, nil
}
var r M
return r, fmt.Errorf("Could not return a random item from map %v", m)
}
func randomItemFromMapAndRemove[T comparable, M any](m map[T]M) (M, error) {
for key, item := range m {
delete(m, key)
return item, nil
}
var r M
return r, fmt.Errorf("Could not return a random item from map %v and delete it.", m)
}
func keysOfMap[T comparable, M any](m map[T]M) []T {
keys := make([]T, len(m))
i := 0
for k := range m {
keys[i] = k
i++
}
return keys
}
func addETSIKeysToKeystore(keyStore *kmsKeyStore, keyContainer []etsi14.KeyContainerKeysInner) error {
for _, keyItem := range keyContainer {
// decode base64 encoded key string
key, err := base64.StdEncoding.DecodeString(keyItem.GetKey())
if err != nil {
return err
}
keyId, err := uuid.Parse(keyItem.GetKeyID())
if err != nil {
return err
}
// add to keystore
keyStore.addKey(keyId, key)
}
return nil
}
// NOTE: For demo purpose only
func sendKmsInfoMessage(url string, json []byte) error {
request, err := http.NewRequest("POST", url, bytes.NewBuffer(json))
if err != nil {
return err
}
request.Header.Set("Content-Type", "application/json; charset=UTF-8")
client := &http.Client{}
response, err := client.Do(request)
defer response.Body.Close()
if err != nil {
return err
}
return nil
}
type KMSInfo struct {
Name string `json:"Name"`
EncryptedMessage string `json:"EncryptedMessage"`
DecryptedMessage string `json:"DecryptedMessage"`
Key string `json:"Key"`
}