summaryrefslogtreecommitdiff
path: root/internal/notify/vapid.go
diff options
context:
space:
mode:
authorClaudomator Agent <agent@claudomator>2026-03-17 02:12:31 +0000
committerClaudomator Agent <agent@claudomator>2026-03-17 02:12:31 +0000
commit94e45575a34e8672f8b405c54cabd8e524281fef (patch)
tree1bfdcb4883258ebd5e7a346edf4ab9d3adcffdba /internal/notify/vapid.go
parent95ea6932e8cc7b49556498d6c896fe6f17270aa2 (diff)
fix: swap VAPID key return order in GenerateVAPIDKeys wrapper
webpush.GenerateVAPIDKeys() returns (privateKey, publicKey) but the claudomator wrapper declared (publicKey, privateKey), causing the 32-byte private key to be sent to browsers as the applicationServerKey. Browsers require a 65-byte uncompressed P256 point, so they rejected it with "The provided applicationServerKey is not valid." Adds a regression test that asserts public key is 87 chars/65 bytes with 0x04 prefix and private key is 43 chars/32 bytes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/notify/vapid.go')
-rw-r--r--internal/notify/vapid.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/internal/notify/vapid.go b/internal/notify/vapid.go
index 90d535b..d93a090 100644
--- a/internal/notify/vapid.go
+++ b/internal/notify/vapid.go
@@ -4,6 +4,8 @@ import webpush "github.com/SherClockHolmes/webpush-go"
// GenerateVAPIDKeys generates a VAPID key pair for web push notifications.
// Returns the base64url-encoded public and private keys.
+// Note: webpush.GenerateVAPIDKeys returns (privateKey, publicKey) — we swap here.
func GenerateVAPIDKeys() (publicKey, privateKey string, err error) {
- return webpush.GenerateVAPIDKeys()
+ privateKey, publicKey, err = webpush.GenerateVAPIDKeys()
+ return
}