Add Multipaz Web Developer Tools and Certificate Generator#1815
Merged
Conversation
Contributor
Author
|
See https://tools.multipaz.org/ for a deployed version of this. |
Introduce a new client-side web application and server wrapper module (multipaz-tools) that exposes developers' helper utilities for digital identity work. The frontend is built using Kotlin/JS and React, offering a highly responsive, modern dark-themed SPA (Single Page Application) with dedicated routes and deep-linking capabilities. The backend is powered by a Ktor server serving static resources with SPA fallback routes, matching both local devWebpack server and production architectures. Key features and tools added: - CBOR/COSE Diagnostic Decoder: Decodes raw hex, base64, and base64url encoded CBOR bytes into structured diagnostic notation, supporting option flags for pretty printing and recursive parsing of embedded CBOR objects. - ISO mdoc DeviceResponse inspector: Inspects and parses mdoc responses, extracting MSO signatures, digests, validity timestamps, and fully decoding image attributes (like base64 portraits) inline. - IETF SD-JWT Inspector: Decodes SD-JWT payload/claims, JWT headers, signatures, and recursively evaluates selective disclosure digests mapped back to their original plain-text key-value declarations. - Compression Utility: Offers deflate/zlib compression and decompression with real-time payload size reduction statistics. - Format Converter: Instantly converts between Hex, Base64, and Base64Url representations of raw binary data. - X.509 Certificate Parser: Reads X.509 certificates to show detailed subject/issuer fields, validity states (active/expired), key usages, public key structures, and ASN.1 extensions. - EC Key Pair Generator: Generates elliptic curve key pairs (P-256, P-384, P-521, Ed25519, X25519) with output representations in JWK, COSE hex/diagnostics, and PEM. - Certificate Generator: Generates standard-compliant X.509 certs client-side using the Multipaz SDK (IACA, Document Signing, Reader Root, and Reader certs), including custom serial numbers, random N-bit serial generators using JS BigInt, standard validity warnings, and built-in CA authority simulation. - NDEF Message Parser: Parses NDEF messages and NDEF records. The code is highly modular, split across dedicated component files in the org.multipaz.tools.frontend package. Enabled Webpack DevServer historyApiFallback to allow seamless developer deep-linking at http://localhost:3000. All copy-to-clipboard actions are fully minification-safe using window.navigator.asDynamic() browser bindings. Fixes #1814. Test: Manually tested. Signed-off-by: David Zeuthen <zeuthen@gmail.com>
sorotokin
approved these changes
Jul 15, 2026
sorotokin
approved these changes
Jul 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce a new client-side web application and server wrapper module (multipaz-tools) that exposes developers' helper utilities for digital identity work.
The frontend is built using Kotlin/JS and React, offering a highly responsive, modern dark-themed SPA (Single Page Application) with dedicated routes and deep-linking capabilities.
The backend is powered by a Ktor server serving static resources with SPA fallback routes, matching both local devWebpack server and production architectures.
Key features and tools added:
CBOR/COSE Diagnostic Decoder: Decodes raw hex, base64, and base64url encoded CBOR bytes into structured diagnostic notation, supporting option flags for pretty printing and recursive parsing of embedded CBOR objects.
ISO mdoc DeviceResponse inspector: Inspects and parses mdoc responses, extracting MSO signatures, digests, validity timestamps, and fully decoding image attributes (like base64 portraits) inline.
IETF SD-JWT Inspector: Decodes SD-JWT payload/claims, JWT headers, signatures, and recursively evaluates selective disclosure digests mapped back to their original plain-text key-value declarations.
Compression Utility: Offers deflate/zlib compression and decompression with real-time payload size reduction statistics.
Format Converter: Instantly converts between Hex, Base64, and Base64Url representations of raw binary data.
X.509 Certificate Parser: Reads X.509 certificates to show detailed subject/issuer fields, validity states (active/expired), key usages, public key structures, and ASN.1 extensions.
EC Key Pair Generator: Generates elliptic curve key pairs (P-256, P-384, P-521, Ed25519, X25519) with output representations in JWK, COSE hex/diagnostics, and PEM.
Certificate Generator: Generates standard-compliant X.509 certs client-side using the Multipaz SDK (IACA, Document Signing, Reader Root, and Reader certs), including custom serial numbers, random N-bit serial generators using JS BigInt, standard validity warnings, and built-in CA authority simulation.
The code is highly modular, split across dedicated component files in the org.multipaz.tools.frontend package. Enabled Webpack DevServer historyApiFallback to allow seamless developer deep-linking at http://localhost:3000. All copy-to-clipboard actions are fully minification-safe using window.navigator.asDynamic() browser bindings.
Fixes #1814.
Test: Manually tested.