@pkistudio/derbuilder
v0.1.0
Published
Browser-first ASN.1 instance builder for creating and inspecting DER data.
Downloads
24
Readme
DER Builder
DER Builder is a local-only browser application and reusable TypeScript API for creating deterministic DER documents from a supported ASN.1 definition and Instance JSON.
Current version: 0.1.0
Definitions, input values, diagnostics, and generated DER stay in the browser.
The application does not retrieve schemas, OID data, or other resources. The
production page enforces connect-src 'none'.
Features
- Parse the supported ASN.1 module subset into a shared Schema Model.
- Validate definitions and Instance JSON with stable codes and value paths.
- Encode primitives, constructed values, choices, tags, defaults, and OF types as deterministic DER.
- Load portable Definition Bundles and a catalog of PKI-oriented NamedObjects.
- Edit one Instance value through synchronized Form and JSON views.
- Open successful output in a new editable DerEditor tab while keeping the builder workspace focused on definition and instance input.
- Use Core, Validation, and App APIs independently through controlled package exports.
Install
npm install @pkistudio/derbuilderThe only runtime dependency on another PkiStudio package is the published,
exactly pinned @pkistudio/dereditor npm package. DER Builder does not consume
source, assets, workflows, branches, or unpublished APIs from any other
PkiStudio repository.
Core API
import {
bytesToHex,
createInstance,
parseAsn1Definition,
validateInstance,
validateSchemaModule
} from '@pkistudio/derbuilder';
const schema = parseAsn1Definition(`Example DEFINITIONS ::= BEGIN
Person ::= SEQUENCE { name UTF8String, age INTEGER OPTIONAL }
END`);
const input = { name: 'Alice', age: 42 };
const diagnostics = [
...validateSchemaModule(schema),
...validateInstance(schema, 'Person', input)
];
if (!diagnostics.some((item) => item.severity === 'error')) {
const document = createInstance(schema, 'Person', input);
console.log(bytesToHex(document.der));
}Browser app
import { initDerBuilder } from '@pkistudio/derbuilder/app';
import '@pkistudio/derbuilder/styles.css';
const app = initDerBuilder({ mount: '#app', schema, input });
const result = await app.build({ typeName: 'Person' });
if (result.ok) console.log(result.document.der);
else console.error(result.error, result.instanceDiagnostics);Successful builds open a new DerEditor tab by default. Embedded hosts that only
need the returned bytes can pass openViewerTab: false.
The application is deployed to GitHub Pages only after validation on main.
The first deployment requires Pages to use GitHub Actions as its source;
see Deployment.
Development
npm install
npm test
npm run check
npm run build
npm run test:e2e:install
npm run test:e2e
npm run pack:dry-runUse npm run dev during development or npm run preview for the production
build. npm run verify runs the non-browser release checks, and
npm run verify:browser rebuilds before the browser suite.
The feature specification, API specification, and dependency policy define stable boundaries. See the user guide, deployment guide, release process, npm publishing guide, and GitHub prerequisites for operation and release procedures.
License
MIT
