github.com/mdaxf/iac@v0.0.0-20240519030858-58a061660378/vendor_skip/golang.org/x/crypto/bcrypt/base64.go (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package bcrypt
     6  
     7  import "encoding/base64"
     8  
     9  const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    10  
    11  var bcEncoding = base64.NewEncoding(alphabet)
    12  
    13  func base64Encode(src []byte) []byte {
    14  	n := bcEncoding.EncodedLen(len(src))
    15  	dst := make([]byte, n)
    16  	bcEncoding.Encode(dst, src)
    17  	for dst[n-1] == '=' {
    18  		n--
    19  	}
    20  	return dst[:n]
    21  }
    22  
    23  func base64Decode(src []byte) ([]byte, error) {
    24  	numOfEquals := 4 - (len(src) % 4)
    25  	for i := 0; i < numOfEquals; i++ {
    26  		src = append(src, '=')
    27  	}
    28  
    29  	dst := make([]byte, bcEncoding.DecodedLen(len(src)))
    30  	n, err := bcEncoding.Decode(dst, src)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  	return dst[:n], nil
    35  }