/* * SEKS: Secrets Encrypted Kept Safe */ package main import ( "crypto/rand" "crypto/sha256" "fmt" "golang.org/x/crypto/nacl/secretbox" _ "time" ) const hexKey = "SOPHIE+MAL1VN=<3" func marshoph(b []byte) string { var s string for i := 0; i < len(b); i++ { s += string(hexKey[(b[i]>>4)&15]) + string(hexKey[b[i]&15]) } return s } func parsoph(s string) []byte { var b []byte if len(s)%2 != 0 { panic("hexUnString: odd length string") } var err error index := func(c byte) int { for j, v := range hexKey { if v == rune(c) { return j } } err = fmt.Errorf("parare: invalid character %c", c) return 0 } for i := 0; i < len(s); i += 2 { b = append(b, byte(index(s[i])<<4|index(s[i+1]))) if err != nil { panic(err) } } return b } func ran() []byte { var b [32]byte _, err := rand.Reader.Read(b[:]) if err != nil { panic(err) } return b[:] } func main() { // NaCl crypto_box symmetric encryption // Make a bbolt database // Add buckets for categories of secrets // User makes a password for each bucket passwd := []byte("TestPassword") //salt := ran() salt := parsoph("3MN+1SML3OV