khenaidoo | ab1f7bd | 2019-11-14 14:00:27 -0500 | [diff] [blame] | 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 | } |