letsencrypt / letsencrypt/boulder
Support EdDSA account keys
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 5.8k
- Forks
- 649
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 24
Description
Note: This is not an issue for supporting EdDSA keys in subscriber certificates, or offering an EdDSA intermediate.
See this community forum thread for more background.
It only makes sense to add this to the V2 API. The V1 API is EOL and its JWS/JWK verification is pretty haggard.
At a high-level to support EdDSA account keys we will need to:
- - Add EdDSA support to
wfe2/verify.go, notablysigAlgorithmForKey. - - Split
goodkeysomehow to support vetting account keys differently than CSR keys. - - Add EdDSA support to
goodkey.
This work would need to be done with a particular eye towards anywhere we might need to verify EdDSA public key parameters above and beyond what may be done by go-jose. Similarly it may be prudent to check what linting zlint,certlint, etc perform for EdDSA subscriber keys and verify that we have represented the same checks in go-jose or goodkey.
Splitting goodkey to support different rules depending on the context of the public key stands out as something somewhat risky. We need to ensure there is minimal chance that the RA or CA will end up vetting a CSR key as if it were an account key, leading to misissuance of certificates.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with wfe2/verify.go and sigAlgorithmForKey, then trace goodkey's account-key and CSR-key validation paths. Review the relevant go-jose behavior and compare EdDSA parameter checks with zlint and certlint expectations. Done means V2 account keys support EdDSA while account-key and CSR-key vetting remain safely distinct.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend-api-design, cryptography, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100