OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / go-crypto / bcrypt / base64.go
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 }