Index: src/pkg/crypto/bcrypt/base64.go |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/src/pkg/crypto/bcrypt/base64.go |
@@ -0,0 +1,38 @@ |
+// 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" |
+ "os" |
+) |
+ |
+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, os.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 |
+} |