keyctl/pkg/core/encoding.go
2023-03-14 01:43:04 +01:00

56 lines
899 B
Go

// Copyright (C) 2023 Marius Schellenberger
package core
import (
"encoding/base32"
"encoding/base64"
"encoding/hex"
)
var b32raw = base32.StdEncoding.WithPadding(base32.NoPadding)
type Encoding int
func (e Encoding) String() string {
switch e {
case Base32:
return "base32"
case Base64:
return "base64"
case Base64URL:
return "base64url"
}
return "hex"
}
func (e Encoding) EncodeToString(src []byte) string {
switch e {
case Base32:
return b32raw.EncodeToString(src)
case Base64:
return base64.RawStdEncoding.EncodeToString(src)
case Base64URL:
return base64.RawURLEncoding.EncodeToString(src)
}
return hex.EncodeToString(src)
}
func EncodingFromString(e string) Encoding {
switch e {
case "base32":
return Base32
case "base64":
return Base64
case "base64url":
return Base64URL
}
return Hex
}
const (
Hex Encoding = iota
Base32
Base64
Base64URL
)