ref: master
keys/keys.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package keys import ( "log" "time" "github.com/fernet/fernet-go" "github.com/vaughan0/go-ini" ) var ( fernetKey *fernet.Key ) func Prepare(config ini.File) { var ( err error ) base64key, ok := config.Get("keys", "fernet") if !ok { log.Fatal("Fernet key was not setted. Generate one using dinheiro keys") } fernetKey, err = fernet.DecodeKey(base64key) if err != nil { log.Fatalf("There was some error when decoding the fernet key %v", err) } } func Encrypt(payload []byte) []byte { msg, err := fernet.EncryptAndSign(payload, fernetKey) if err != nil { log.Fatalf("Error encrypting payload: %v", err) } return msg } // TODO: Add a method to decrypt taking expiration time in account, which will // be useful for dealing with cookies func DecryptWithoutExpiration(payload []byte) []byte { return fernet.VerifyAndDecrypt(payload, time.Duration(0), []*fernet.Key{fernetKey}) } |