You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Starting to implemenent [RFC: Improve signature verification](npm/rfcs#550)
Adds a new sub-command to `audit`: `npm audit signatures` (following [`npm audit licenses`](#3452))
This command will verify registry signatures stored in the packument against a public key on the registry.
It currently supports:
- Any registry that implements `host/-/npm/v1/keys` endpoint and provides `signatures` in the packument `dist` object
- Validates public keys are not expired, compared to the version created date
- Errors when encountering packages with missing signatures when the registry returns keys at `host/-/npm/v1/keys`
- Errors when encountering invalid signatures
- json/human format output
TODO
- [ ] Fix tests and implement test cases
- [ ] Expired public key
- [ ] No public keys
- [ ] Missing signatures with a public key on the registry
- [ ] Missing signatures without a public key on the registry
- [ ] Install with valid signatures
- [ ] Install with invalid signatures
- [ ] Third party registry with signatures and keys
- [ ] Tests for the different formats (json, human)
- [ ] Tests to omit type of dependency (e.g dev deps)
- [ ] Fetch signatures and integrity from `pacote.manifest`
- [ ] Caching story for public keys? Currently cached for one week, assumes we'll double sign for longer when rotating keys
- [ ] Validate early return conditionals for arb nodes, a lot of cases silently return, e.g. no version, are these correct?
- [ ] What other checks do we want?
- [ ] Strict mode to error if any signatures are missing when a registry does not return public keys?
- [ ] Do we want to explitly trust keys from third party registries and store in .npmrc?
0 commit comments