package langext import ( "encoding/base64" "strings" ) // DecodeBase64Any decodes a base64 encoded string // Works with all variants (std, url, imap), padded and unpadded and even ignores linrebreaks and indents func DecodeBase64Any(data string) ([]byte, error) { data = strings.ReplaceAll(data, "\n", "") // remove linebreaks and indents data = strings.ReplaceAll(data, "\t", "") // remove linebreaks and indents data = strings.ReplaceAll(data, " ", "") // remove linebreaks and indents data = strings.ReplaceAll(data, ",", "/") // base64_imap --> base64_std data = strings.ReplaceAll(data, "_", "/") // base64_url --> base64_std data = strings.ReplaceAll(data, "-", "+") // base64_url --> base64_std data = strings.ReplaceAll(data, "=", "") // no padding return base64.RawStdEncoding.DecodeString(data) }