package webshared import ( "strings" "git.mstar.dev/mstar/linstrom/shared" ) func CreateSignatureRSA( method string, target string, headers map[string]string, privateKeyBytes []byte, ) (string, error) { message := genPreSignatureString(method, target, headers) signed, err := shared.Sign(message, privateKeyBytes, true) return string(signed), err } func CreateSignatureED( method string, target string, headers map[string]string, privateKeyBytes []byte, ) (string, error) { message := genPreSignatureString(method, target, headers) signed, err := shared.Sign(message, privateKeyBytes, false) return string(signed), err } func genPreSignatureString(method, target string, headers map[string]string) string { dataBuilder := strings.Builder{} dataBuilder.WriteString("(request-target) ") dataBuilder.WriteString(strings.ToLower(method) + " ") dataBuilder.WriteString(target + "\n") for k, v := range headers { dataBuilder.WriteString(k + ": " + v + "\n") } return dataBuilder.String() }