11package auth
22
3- //go:generate mockgen -source=keyring .go -destination=mock_keyring_test .go -package=auth
3+ //go:generate mockgen -source=token_storage .go -destination=mock_token_storage_test .go -package=auth
44
55import (
66 "errors"
@@ -13,31 +13,34 @@ import (
1313)
1414
1515const (
16- keyringService = "localstack"
17- keyringUser = "auth-token"
16+ keyringService = "lstk"
17+ keyringAuthTokenKey = "lstk.auth-token"
18+ keyringPassword = "lstk-keyring"
19+ keyringFilename = "keyring"
20+ keyringAuthTokenLabel = "lstk auth token"
1821)
1922
20- type Keyring interface {
21- Get ( service , user string ) (string , error )
22- Set ( service , user , password string ) error
23- Delete ( service , user string ) error
23+ type AuthTokenStorage interface {
24+ GetAuthToken ( ) (string , error )
25+ SetAuthToken ( token string ) error
26+ DeleteAuthToken ( ) error
2427}
2528
26- type systemKeyring struct {
29+ type authTokenStorage struct {
2730 ring keyring.Keyring
2831}
2932
30- func newSystemKeyring () (* systemKeyring , error ) {
33+ func newAuthTokenStorage () (* authTokenStorage , error ) {
3134 configDir , err := config .ConfigDir ()
3235 if err != nil {
3336 return nil , err
3437 }
3538
3639 keyringConfig := keyring.Config {
3740 ServiceName : keyringService ,
38- FileDir : filepath .Join (configDir , "keyring" ),
41+ FileDir : filepath .Join (configDir , keyringFilename ),
3942 FilePasswordFunc : func (prompt string ) (string , error ) {
40- return "localstack-keyring" , nil
43+ return keyringPassword , nil
4144 },
4245 }
4346
@@ -55,11 +58,11 @@ func newSystemKeyring() (*systemKeyring, error) {
5558 }
5659 }
5760
58- return & systemKeyring {ring : ring }, nil
61+ return & authTokenStorage {ring : ring }, nil
5962}
6063
61- func (k * systemKeyring ) Get ( service , user string ) (string , error ) {
62- item , err := k .ring .Get (k . makeKey ( service , user ) )
64+ func (s * authTokenStorage ) GetAuthToken ( ) (string , error ) {
65+ item , err := s .ring .Get (keyringAuthTokenKey )
6366 if err != nil {
6467 if errors .Is (err , keyring .ErrKeyNotFound ) {
6568 return "" , fmt .Errorf ("credential not found" )
@@ -69,21 +72,18 @@ func (k *systemKeyring) Get(service, user string) (string, error) {
6972 return string (item .Data ), nil
7073}
7174
72- func (k * systemKeyring ) Set (service , user , password string ) error {
73- return k .ring .Set (keyring.Item {
74- Key : k .makeKey (service , user ),
75- Data : []byte (password ),
75+ func (s * authTokenStorage ) SetAuthToken (token string ) error {
76+ return s .ring .Set (keyring.Item {
77+ Key : keyringAuthTokenKey ,
78+ Data : []byte (token ),
79+ Label : keyringAuthTokenLabel ,
7680 })
7781}
7882
79- func (k * systemKeyring ) Delete ( service , user string ) error {
80- err := k .ring .Remove (k . makeKey ( service , user ) )
83+ func (s * authTokenStorage ) DeleteAuthToken ( ) error {
84+ err := s .ring .Remove (keyringAuthTokenKey )
8185 if errors .Is (err , keyring .ErrKeyNotFound ) || os .IsNotExist (err ) {
8286 return nil
8387 }
8488 return err
8589}
86-
87- func (k * systemKeyring ) makeKey (service , user string ) string {
88- return fmt .Sprintf ("%s/%s" , service , user )
89- }
0 commit comments