• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

decentraland / world-storage-service
99%

Build:
DEFAULT BRANCH: main
Repo Added 14 Jan 2026 07:04PM UTC
Files 58
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.2.0
  • 1.4.0
  • 1.4.1
  • 1.5.0
  • 1.6.0
  • 1.6.1
  • chore/add-package-json-lint
  • chore/add-service-logs
  • chore/bump-node
  • chore/migrate-to-core-components
  • chore/pin-node-24-base-image
  • chore/replace-platform-server-commons-with-http-commons
  • chore/update-node-24
  • dependabot/npm_and_yarn/dcl/schemas-22.1.0
  • dependabot/npm_and_yarn/dcl/schemas-22.2.0
  • dependabot/npm_and_yarn/dcl/schemas-22.3.0
  • dependabot/npm_and_yarn/dcl/schemas-22.4.0
  • dependabot/npm_and_yarn/dcl/schemas-22.5.0
  • dependabot/npm_and_yarn/dcl/schemas-23.0.0
  • dependabot/npm_and_yarn/dcl/schemas-23.1.0
  • dependabot/npm_and_yarn/dcl/schemas-24.0.0
  • dependabot/npm_and_yarn/dcl/schemas-25.0.0
  • dependabot/npm_and_yarn/dcl/schemas-25.1.0
  • dependabot/npm_and_yarn/dcl/schemas-25.2.0
  • dependabot/npm_and_yarn/dcl/schemas-25.3.0
  • dependabot/npm_and_yarn/dcl/schemas-26.0.0
  • dependabot/npm_and_yarn/dcl/schemas-26.1.0
  • dependabot/npm_and_yarn/flatted-3.4.2
  • dependabot/npm_and_yarn/handlebars-4.7.9
  • dependabot/npm_and_yarn/jest-30.3.0
  • dependabot/npm_and_yarn/lodash-4.17.23
  • dependabot/npm_and_yarn/nodemon-3.1.13
  • dependabot/npm_and_yarn/nodemon-3.1.14
  • dependabot/npm_and_yarn/npm-package-json-lint-10.0.0
  • dependabot/npm_and_yarn/npm-package-json-lint-10.2.0
  • dependabot/npm_and_yarn/prettier-3.8.2
  • dependabot/npm_and_yarn/ts-jest-29.4.9
  • dependabot/npm_and_yarn/types/node-25.0.10
  • dependabot/npm_and_yarn/types/node-25.0.9
  • dependabot/npm_and_yarn/types/node-25.1.0
  • dependabot/npm_and_yarn/types/node-25.2.0
  • dependabot/npm_and_yarn/types/node-25.2.1
  • dependabot/npm_and_yarn/types/node-25.2.2
  • dependabot/npm_and_yarn/types/node-25.2.3
  • dependabot/npm_and_yarn/types/node-25.3.0
  • dependabot/npm_and_yarn/types/node-25.3.3
  • dependabot/npm_and_yarn/types/node-25.3.5
  • dependabot/npm_and_yarn/types/node-25.4.0
  • dependabot/npm_and_yarn/types/node-25.5.0
  • dependabot/npm_and_yarn/types/node-25.5.2
  • dependabot/npm_and_yarn/types/node-25.6.0
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.54.0
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.55.0
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.56.0
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.56.1
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.57.0
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.57.1
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.57.2
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.58.0
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.58.1
  • docs/fix-docs
  • feat/authorized-addresses-only-middleware
  • feat/cors
  • feat/delete-all-endpoints
  • feat/env-scoped-storage-delegation
  • feat/env-storage-endpoints
  • feat/list-env-keys
  • feat/list-player-storage
  • feat/list-players
  • feat/list-world-storage
  • feat/multi-scene-storage
  • feat/scoped-storage-delegation
  • feat/secrets-encryption
  • feat/size-limits
  • feat/storage-caching-and-json-perf
  • feat/usage-endpoints
  • fix/add-options-to-cors
  • fix/audit-hardening
  • fix/authorization-middleware
  • fix/canonical-signer-validation
  • fix/crypto-middleware-6
  • fix/ens-world-realm-routing
  • main
  • refactor/rename-world-permissions-manager

20 Aug 2026 02:06PM UTC coverage: 98.679% (-0.001%) from 98.68%
32378180676

push

github

web-flow
fix(auth): upgrade @dcl/crypto-middleware to 6 (#116)

* fix(auth): upgrade @dcl/crypto-middleware to 6

@dcl/crypto-middleware 6 changes the signed payload wire format: method,
path and timestamp are lowercased individually and the metadata is joined
verbatim, instead of lowercasing the whole joined string. Metadata casing
is now covered by the signature.

No source changes were needed. The middleware hands handlers the metadata
with its original casing both before and after, so the scene gate in
routes.ts and every authMetadata read behave identically.

Bump decentraland-crypto-fetch to 3, the client half of the same format
change. It signs every integration request, so without it the suite would
sign the old payload and get a 401 from a correctly-working server.

Update test/integration/auth/canonical-signer.spec.ts:

- Metadata re-cased after signing is now refused by signature
  verification (401 Invalid signature) instead of the canonical-value
  guard (400 Invalid chain metadata). Same request, same refusal, one
  layer earlier.
- A whitespace-padded scene signer is no longer refused at all. Version 6
  drops the canonical-value guard, and binding the metadata bytes to the
  signature does not cover a value that was already padded when signed,
  so it passes the strict `!==` in routes.ts and is served as an ordinary
  user-signed request. The tests now pin that behaviour and flag the gap.

* test(auth): state why the padded-signer change is not an escalation

The comment framed the dropped canonical-value guard as a reopened gap,
which reads as a call to restore it. Producing a padded signer requires
holding the identity key, and a key holder can already omit the field
entirely — 5.1.0 allowed that too, since its guard only inspected string
values. The guard covered one spelling of a self-declared label while
leaving omission open.

Records the reasoning next to the cases that pin the behaviour.

* refactor(auth): use rejectIfSigner from crypto... (continued)

424 of 438 branches covered (96.8%)

Branch coverage included in aggregate %.

1 of 1 new or added line in 1 file covered. (100.0%)

1145 of 1152 relevant lines covered (99.39%)

71.32 hits per line

Relevant lines Covered
Build:
Build:
1152 RELEVANT LINES 1145 COVERED LINES
71.32 HITS PER LINE
Source Files on main
  • Tree
  • List 58
  • Changed 34
  • Source Changed 1
  • Coverage Changed 34
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
32378180676 main fix(auth): upgrade @dcl/crypto-middleware to 6 (#116) * fix(auth): upgrade @dcl/crypto-middleware to 6 @dcl/crypto-middleware 6 changes the signed payload wire format: method, path and timestamp are lowercased individually and the metadata is jo... push 20 Aug 2026 02:07PM UTC web-flow github
98.68
32186315021 fix/crypto-middleware-6 refactor(auth): use rejectIfSigner from crypto-middleware 6.1 Replaces the hand-rolled scene gate, and closes the padded-signer gap this branch previously had to pin as accepted behaviour. rejectIfSigner refuses a `signer` that is not already ca... Pull #116 18 Aug 2026 09:11PM UTC LautaroPetaccio github
98.68
32175811106 fix/crypto-middleware-6 test(auth): state why the padded-signer change is not an escalation The comment framed the dropped canonical-value guard as a reopened gap, which reads as a call to restore it. Producing a padded signer requires holding the identity key, and a ke... Pull #116 18 Aug 2026 07:18PM UTC LautaroPetaccio github
98.68
32175632922 fix/crypto-middleware-6 fix(auth): upgrade @dcl/crypto-middleware to 6 @dcl/crypto-middleware 6 changes the signed payload wire format: method, path and timestamp are lowercased individually and the metadata is joined verbatim, instead of lowercasing the whole joined st... Pull #116 18 Aug 2026 07:17PM UTC LautaroPetaccio github
98.68
31742653884 1.6.1 fix: route ENS worlds through world permission checks (#115) * fix: route ENS worlds through world permission checks isDclWorldName matched only the `.dcl.eth` suffix, but worlds-content-server treats any `.eth` name as a world and resolves its ... push 13 Aug 2026 08:49PM UTC web-flow github
98.68
31742276244 main fix: route ENS worlds through world permission checks (#115) * fix: route ENS worlds through world permission checks isDclWorldName matched only the `.dcl.eth` suffix, but worlds-content-server treats any `.eth` name as a world and resolves its ... push 13 Aug 2026 08:44PM UTC web-flow github
98.68
31740198275 fix/ens-world-realm-routing test: tighten ENS world assertions and document realm classification The ENS non-owner case asserted that LAND ownership at the base parcel does not grant, but nothing primed LAMBDAS to return a positive permission, so it passed whether or not th... Pull #115 13 Aug 2026 08:19PM UTC LautaroPetaccio github
98.68
31726215341 fix/ens-world-realm-routing fix: route ENS worlds through world permission checks isDclWorldName matched only the `.dcl.eth` suffix, but worlds-content-server treats any `.eth` name as a world and resolves its owner on chain (name-ownership.ts routes `.eth && !.dcl.eth` to ... Pull #115 13 Aug 2026 05:33PM UTC LautaroPetaccio github
98.68
31192501471 main fix: reject non-canonical metadata signer and intent (#114) Bump @dcl/crypto-middleware from ^4.1.1 to ^5.1.0, which requires the top-level `signer` and `intent` metadata fields to arrive already trimmed and lowercased. The signed-fetch payload ... push 07 Aug 2026 03:26PM UTC web-flow github
98.68
31187258617 fix/canonical-signer-validation fix: reject non-canonical metadata signer and intent Bump @dcl/crypto-middleware from ^4.1.1 to ^5.1.0, which requires the top-level `signer` and `intent` metadata fields to arrive already trimmed and lowercased. The signed-fetch payload is lowe... Pull #114 07 Aug 2026 02:23PM UTC cyaiox github
98.68
See All Builds (178)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc