mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 14:02:25 -05:00 
			
		
		
		
	
		
			
	
	
		
			36 lines
		
	
	
	
		
			817 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
	
		
			817 B
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | // Copyright 2011 The Go Authors. All rights reserved. | ||
|  | // Use of this source code is governed by a BSD-style | ||
|  | // license that can be found in the LICENSE file. | ||
|  | 
 | ||
|  | package bcrypt | ||
|  | 
 | ||
|  | import "encoding/base64" | ||
|  | 
 | ||
|  | const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" | ||
|  | 
 | ||
|  | var bcEncoding = base64.NewEncoding(alphabet) | ||
|  | 
 | ||
|  | func base64Encode(src []byte) []byte { | ||
|  | 	n := bcEncoding.EncodedLen(len(src)) | ||
|  | 	dst := make([]byte, n) | ||
|  | 	bcEncoding.Encode(dst, src) | ||
|  | 	for dst[n-1] == '=' { | ||
|  | 		n-- | ||
|  | 	} | ||
|  | 	return dst[:n] | ||
|  | } | ||
|  | 
 | ||
|  | func base64Decode(src []byte) ([]byte, error) { | ||
|  | 	numOfEquals := 4 - (len(src) % 4) | ||
|  | 	for i := 0; i < numOfEquals; i++ { | ||
|  | 		src = append(src, '=') | ||
|  | 	} | ||
|  | 
 | ||
|  | 	dst := make([]byte, bcEncoding.DecodedLen(len(src))) | ||
|  | 	n, err := bcEncoding.Decode(dst, src) | ||
|  | 	if err != nil { | ||
|  | 		return nil, err | ||
|  | 	} | ||
|  | 	return dst[:n], nil | ||
|  | } |