base64_compat.go raw
1 // +build !amd64 !go1.17 go1.25
2
3 package rt
4
5 import (
6 "encoding/base64"
7 )
8
9 func DecodeBase64(raw []byte) ([]byte, error) {
10 ret := make([]byte, base64.StdEncoding.DecodedLen(len(raw)))
11 n, err := base64.StdEncoding.Decode(ret, raw)
12 if err != nil {
13 return nil, err
14 }
15 return ret[:n], nil
16 }
17
18 func EncodeBase64ToString(src []byte) string {
19 return base64.StdEncoding.EncodeToString(src)
20 }
21
22 func EncodeBase64(buf []byte, src []byte) []byte {
23 if len(src) == 0 {
24 return append(buf, '"', '"')
25 }
26 buf = append(buf, '"')
27 need := base64.StdEncoding.EncodedLen(len(src))
28 if cap(buf) - len(buf) < need {
29 tmp := make([]byte, len(buf), len(buf) + need*2)
30 copy(tmp, buf)
31 buf = tmp
32 }
33 base64.StdEncoding.Encode(buf[len(buf):cap(buf)], src)
34 buf = buf[:len(buf) + need]
35 buf = append(buf, '"')
36 return buf
37 }
38