40 lines
1,014 B
Go
40 lines
1,014 B
Go
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()
|
|
}
|