diff options
author | Gabriel Arakaki Giovanini <mail@gabrielgio.me> | 2023-06-18 17:02:21 +0200 |
---|---|---|
committer | Gabriel Arakaki Giovanini <mail@gabrielgio.me> | 2023-06-18 17:02:21 +0200 |
commit | 7dd8040d6d948d41f4e3cf632e868c640f09dd5b (patch) | |
tree | 82c671cdfea93d50de2b6db39001a540be318135 /pkg/ext | |
parent | 9ba05d26ee2382f3191e25ae7af5d462ba2a35e4 (diff) | |
download | lens-7dd8040d6d948d41f4e3cf632e868c640f09dd5b.tar.gz lens-7dd8040d6d948d41f4e3cf632e868c640f09dd5b.tar.bz2 lens-7dd8040d6d948d41f4e3cf632e868c640f09dd5b.zip |
fix: Fix having to login every server reload
Diffstat (limited to 'pkg/ext')
-rw-r--r-- | pkg/ext/auth.go | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/pkg/ext/auth.go b/pkg/ext/auth.go index d9fbfba..ed122bb 100644 --- a/pkg/ext/auth.go +++ b/pkg/ext/auth.go @@ -6,7 +6,7 @@ import ( "crypto/cipher" "crypto/rand" "encoding/gob" - "fmt" + "errors" "io" ) @@ -15,16 +15,6 @@ type Token struct { Username string } -var nonce []byte - -func init() { - nonce = make([]byte, 12) - if _, err := io.ReadFull(rand.Reader, nonce); err != nil { - fmt.Println("Erro while generating nonce " + err.Error()) - panic(1) - } -} - func ReadToken(data []byte, key []byte) (*Token, error) { block, err := aes.NewCipher(key) if err != nil { @@ -36,7 +26,13 @@ func ReadToken(data []byte, key []byte) (*Token, error) { panic(err.Error()) } - plaintext, err := aesgcm.Open(nil, nonce, data, nil) + nonceSize := aesgcm.NonceSize() + if len(data) < nonceSize { + return nil, errors.New("nonce size greater than data's size") + } + + nonce, ciphertext := data[:nonceSize], data[nonceSize:] + plaintext, err := aesgcm.Open(nil, nonce, ciphertext, nil) if err != nil { return nil, err } @@ -66,7 +62,11 @@ func WriteToken(token *Token, key []byte) ([]byte, error) { if err := enc.Encode(token); err != nil { return nil, err } + nonce := make([]byte, aesgcm.NonceSize()) + if _, err = io.ReadFull(rand.Reader, nonce); err != nil { + return nil, err + } - ciphertext := aesgcm.Seal(nil, nonce, buffer.Bytes(), nil) + ciphertext := aesgcm.Seal(nonce, nonce, buffer.Bytes(), nil) return ciphertext, nil } |