]>
Commit | Line | Data |
---|---|---|
9b12e4fe JC |
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 | } |