package internal // //import ( // "amuz.es/src/mercury/endpoint/misc" // "encoding/base64" // "github.com/tinylib/msgp/msgp" // "io" // "strings" //) // //type ( // secretPayload map[string]string // SecretToolboxImpl struct { // EncryptWriter func(dst io.Writer) (io.WriteCloser, error) // DecryptReader func(src io.Reader) (io.Reader, error) // } //) // //// 인터페이스가 실제구현체랑 호환되는가 //var _ misc.SecretToolbox = (*SecretToolboxImpl)(nil) // //func (tbx *SecretToolboxImpl) Encrypt(data map[string]string) (encrypted string, err error) { // // var ( // payload secretPayload = data // stringWriter strings.Builder // ) // // encryptor, err := tbx.EncryptWriter(base64.NewEncoder(base64.URLEncoding, &stringWriter)) // if err != nil { // return // } else if err = msgp.Encode(encryptor, payload); err != nil { // return // } // // _ = encryptor.Close() // // encrypted = stringWriter.String() // return //} //func (tbx *SecretToolboxImpl) Decrypt(encrypted string) (data map[string]string, err error) { // var ( // stringReader = strings.NewReader(encrypted) // payload = secretPayload{} // ) // // decryptor, err := tbx.DecryptReader(base64.NewDecoder(base64.URLEncoding, stringReader)) // if err != nil { // return // } else if err = msgp.Decode(decryptor, &payload); err != nil { // return // } // data = payload // return //}