Files
wg-portal/internal/domain/encoding.go
T
h44z 32ef6048fb feat: add link-based configuration emails (#725) (#754)
* feat: add link-based configuration emails (#725)

* fix tests
2026-09-10 22:04:20 +02:00

30 lines
945 B
Go

package domain
import (
"encoding/base64"
"strings"
)
// Base64UrlDecode decodes a base64 url encoded string.
// In comparison to the standard base64 encoding, the url encoding uses - instead of + and _ instead of /
// as well as . instead of =.
func Base64UrlDecode(in string) string {
in = strings.ReplaceAll(in, "-", "=")
in = strings.ReplaceAll(in, "_", "/")
in = strings.ReplaceAll(in, ".", "+")
output, _ := base64.StdEncoding.DecodeString(in)
return string(output)
}
// Base64UrlEncode encodes the given input using the URL-safe base64 variant that the WireGuard Portal
// API expects. In comparison to the standard base64 encoding, it uses . instead of +, _ instead of /
// and - instead of =.
func Base64UrlEncode(in string) string {
out := base64.StdEncoding.EncodeToString([]byte(in))
out = strings.ReplaceAll(out, "+", ".")
out = strings.ReplaceAll(out, "/", "_")
out = strings.ReplaceAll(out, "=", "-")
return out
}