Skip to content

6.4: Make built-in algorithm identifiers available to callers #644

Description

@cjbarth

Problem

Callers configure built-in canonicalization, digest, and signature algorithms with XMLDSig URI strings. The README and tests copy those strings from the algorithm registries. The public option types permit arbitrary strings so custom algorithms can be registered, which also means TypeScript does not catch a misspelled built-in URI. The existing registry lookup rejects an unsupported URI at runtime, when signing or verifying uses it.

This is a usability and maintenance issue for a 6.4 minor release. PR #643 keeps its regression tests on the current public API and should not add a new algorithm-selection API in the 6.3.3 patch.

6.4 design work

  • Provide a documented public way for JavaScript and TypeScript callers to select each built-in canonicalization, digest, and signature algorithm without copying URI literals. Consider exported constants or another small API.
  • Preserve custom algorithm registration and support for custom URI strings.
  • Decide whether invalid configuration should fail earlier than the current algorithm lookup, and document when and how an unsupported URI is reported.
  • Update README examples and public-boundary tests to demonstrate the chosen API and confirm that unsupported and custom identifiers behave as intended.

Related: #643. The older request in #483 concerned static access to registries; this issue is specifically about discoverable built-in identifiers and typo-resistant configuration.

Activity

  1. added
    enhancementAdds a feature, option or export without breaking existing callers
    on Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementAdds a feature, option or export without breaking existing callers

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions