summaryrefslogtreecommitdiff
path: root/internal/security/credentials_test.go
diff options
context:
space:
mode:
authorChia <Chia@93.nz>2026-08-05 22:01:29 +1200
committerChia <Chia@93.nz>2026-08-05 22:07:50 +1200
commiteadb2ffe85c43cf6fc741c9823cd28eedb4a844c (patch)
tree1aba2536d57360da403aa35c9ced58b615c7064e /internal/security/credentials_test.go
parentcd0dd91ab93653631904f2ea0e574ccde6d60339 (diff)
feat: harden prepaid billing and commercial operations
Diffstat (limited to 'internal/security/credentials_test.go')
-rw-r--r--internal/security/credentials_test.go28
1 files changed, 17 insertions, 11 deletions
diff --git a/internal/security/credentials_test.go b/internal/security/credentials_test.go
index 07fa59e..570ec50 100644
--- a/internal/security/credentials_test.go
+++ b/internal/security/credentials_test.go
@@ -2,29 +2,35 @@ package security
import (
"encoding/base64"
- "strings"
"testing"
)
-func TestCredentialCipherRoundTrip(t *testing.T) {
- key := base64.StdEncoding.EncodeToString([]byte(strings.Repeat("k", 32)))
- cipher, err := NewCredentialCipher(key)
+func TestCredentialKeyringDecryptsPreviousAndReencryptsWithPrimary(t *testing.T) {
+ primary := base64.StdEncoding.EncodeToString([]byte("01234567890123456789012345678901"))
+ previous := base64.StdEncoding.EncodeToString([]byte("abcdefghijklmnopqrstuvwxyzabcdef"))
+ oldCipher, err := NewCredentialCipher(previous)
if err != nil {
t.Fatal(err)
}
- ciphertext, err := cipher.Encrypt("upstream-secret")
+ legacy, err := oldCipher.Encrypt("provider-secret")
if err != nil {
t.Fatal(err)
}
- plaintext, err := cipher.Decrypt(ciphertext)
+ keyring, err := NewCredentialKeyring(primary, []string{previous})
if err != nil {
t.Fatal(err)
}
- if plaintext != "upstream-secret" {
- t.Fatalf("unexpected plaintext: %q", plaintext)
+ if got, err := keyring.Decrypt(legacy); err != nil || got != "provider-secret" {
+ t.Fatalf("decrypt previous key: got %q, err %v", got, err)
}
- ciphertext[len(ciphertext)-1] ^= 1
- if _, err := cipher.Decrypt(ciphertext); err == nil {
- t.Fatal("expected authentication failure for modified ciphertext")
+ rotated, err := keyring.Encrypt("provider-secret")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(rotated[:4]) != "AGK1" {
+ t.Fatalf("expected versioned credential envelope, got %q", rotated[:4])
+ }
+ if got, err := keyring.Decrypt(rotated); err != nil || got != "provider-secret" {
+ t.Fatalf("decrypt primary key: got %q, err %v", got, err)
}
}