Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use crypto/ecdh #60

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

mrwonko
Copy link

@mrwonko mrwonko commented Nov 7, 2023

This is a followup to #59. crypto/elliptic is deprecated, so I migrated to crypto/ecdh instead.

This may necessitate a major version bump, as Go 1.20 is now required, and VAPID keys are effectively mandatory. See commit message for additional information.

This new test mocks both the user agent (e.g. browser) and the push service
(e.g. Firestore) to verify that encryption and decryption works properly.

I used the RFCs as reference (RFC8291, RFC8292 & RFC 8188), but didn't follow
them to the letter. The result can successfully check all the signatures and
decrypt the content, so it seems to be working.

Instead of the deprecated crypto/elliptic functions, this makes heavy use of
crypto/ecdh, which require Go 1.20. But this is only a test dependency, library
users should not be impacted.
crypto/elliptic is subject for removal soon, use of crypto/ecdh is advised
instead.

This has a number of side-effects:

- the required Go version increases to Go 1.20
- the configured VAPID keys get verified now, and invalid keys are rejected
  - this necessitated changes to some tests
  - VAPID is effectively mandatory now (but all push services I know require it
    anyway)

go.mod has been updated to reflect the new requirement, and I ran `go mod tidy`
to clean up go.sum.

I also added additional error context by wrapping errors with fmt.Errorf's %w
verb. This was introduced in Go 1.13.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant