base64_compat.go 812 B

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