// Copyright 2019 The CUE Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package base64 implements base64 encoding as specified by RFC 4648. package base64 import ( "encoding/base64" "cuelang.org/go/cue" "cuelang.org/go/cue/errors" "cuelang.org/go/cue/token" ) // EncodedLen returns the length in bytes of the base64 encoding // of an input buffer of length n. Encoding needs to be set to null // as only StdEncoding is supported for now. func EncodedLen(encoding cue.Value, n int) (int, error) { if err := encoding.Null(); err != nil { return 0, errors.Wrapf(err, token.NoPos, "base64: unsupported encoding") } return base64.StdEncoding.EncodedLen(n), nil } // DecodedLen returns the maximum length in bytes of the decoded data // corresponding to n bytes of base64-encoded data. Encoding needs to be set to // null as only StdEncoding is supported for now. func DecodedLen(encoding cue.Value, x int) (int, error) { if err := encoding.Null(); err != nil { return 0, errors.Wrapf(err, token.NoPos, "base64: unsupported encoding") } return base64.StdEncoding.DecodedLen(x), nil } // Encode returns the base64 encoding of src. Encoding needs to be set to null // as only StdEncoding is supported for now. func Encode(encoding cue.Value, src []byte) (string, error) { if err := encoding.Null(); err != nil { return "", errors.Wrapf(err, token.NoPos, "base64: unsupported encoding") } return base64.StdEncoding.EncodeToString(src), nil } // Decode returns the bytes represented by the base64 string s. Encoding needs // to be set to null as only StdEncoding is supported for now. func Decode(encoding cue.Value, s string) ([]byte, error) { if err := encoding.Null(); err != nil { return nil, errors.Wrapf(err, token.NoPos, "base64: unsupported encoding") } return base64.StdEncoding.DecodeString(s) }