diff options
| author | Claudomator Agent <agent@claudomator> | 2026-03-17 02:12:31 +0000 |
|---|---|---|
| committer | Claudomator Agent <agent@claudomator> | 2026-03-17 02:12:31 +0000 |
| commit | 94e45575a34e8672f8b405c54cabd8e524281fef (patch) | |
| tree | 1bfdcb4883258ebd5e7a346edf4ab9d3adcffdba /internal/notify/vapid.go | |
| parent | 95ea6932e8cc7b49556498d6c896fe6f17270aa2 (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.go | 4 |
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 } |
