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