Skip to content

Commit 597463e

Browse files
committed
fix(naisapi/auth): return appropriate error when encountering old data in keyring
1 parent 6548ef0 commit 597463e

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

internal/keyring/keyring.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package keyring
66
import (
77
"encoding/base64"
88
"errors"
9+
"fmt"
910
"time"
1011

1112
"github.com/zalando/go-keyring"
@@ -16,7 +17,10 @@ const (
1617
keyringUser = "nais-user"
1718
)
1819

19-
var ErrSecretNotFound = errors.New("secret not found in keyring")
20+
var (
21+
ErrSecretNotFound = errors.New("secret not found in keyring")
22+
ErrInvalidData = errors.New("invalid data stored in keyring")
23+
)
2024

2125
type TimeoutError struct {
2226
message string
@@ -55,7 +59,12 @@ func GetBytes() ([]byte, error) {
5559
if err != nil {
5660
return nil, err
5761
}
58-
return base64.StdEncoding.DecodeString(encoded)
62+
63+
bytes, err := base64.StdEncoding.DecodeString(encoded)
64+
if err != nil {
65+
return nil, fmt.Errorf("%w: decode base64: %+v", ErrInvalidData, err)
66+
}
67+
return bytes, nil
5968
}
6069

6170
func Set(value string) error {

internal/naisapi/auth/oidcuser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (u *oidcUser) Refresh(ctx context.Context) (*oidcUser, error) {
4444
func getOIDCUser(ctx context.Context) (*oidcUser, error) {
4545
encryptionKey, err := keyring.GetBytes()
4646
if err != nil {
47-
if errors.Is(err, keyring.ErrSecretNotFound) {
47+
if errors.Is(err, keyring.ErrSecretNotFound) || errors.Is(err, keyring.ErrInvalidData) {
4848
return nil, ErrNeedsOIDCLogin
4949
}
5050
return nil, fmt.Errorf("get encryption key: %w", err)

0 commit comments

Comments
 (0)