PKI Studio for VS Code
PKI Studio for VS Code opens PKI and ASN.1 files in the pkistudiojs viewer inside a VS Code Webview.
This extension is currently in preview. The first supported workflow is inspecting DER-like PKI assets and exporting the edited viewer state back to DER through VS Code's save dialog.
Features
- Open
.der, .cer, .crt, .csr, and .pem files in a PKI Studio viewer.
- Use the pkistudiojs tree UI, node context actions, DER inspector, editing dialogs, OID labels, encapsulated child nodes, and clipboard actions.
- Export DER through VS Code's native save dialog instead of browser downloads.
- Open files from the Command Palette, Explorer context menu, editor title context menu, or
Open With....
Usage
Use one of these entry points:
- Command Palette:
PKI Studio: Open DER Editor
- Explorer context menu for
.der, .cer, .crt, .csr, and .pem files
- Editor title context menu for
.der, .cer, .crt, .csr, and .pem files
- VS Code
Open With...: PKI Studio DER Editor for .der, .cer, .crt, .csr, and .pem files
When the command is run without an active supported file, it opens a VS Code file picker for common PKI and ASN.1 files.
Notes
- File loading is owned by VS Code. The embedded viewer's browser-style
Load from File item is hidden to avoid Webview file picker conflicts.
- Clipboard-based load actions from pkistudiojs remain available inside the viewer.
PKI Studio DER Editor is registered as an optional custom editor, so it appears under Open With... without replacing VS Code's default editor.
Development
Install dependencies:
npm install
Compile the extension:
npm run compile
Package a VSIX:
npm run package -- --out pkistudio4vscode-0.0.1.vsix
Launch the extension from VS Code with the Run Extension debug configuration.
Architecture
pkistudiojs remains the PKI engine and is consumed as a Git dependency.
- The VS Code extension owns file access, command registration, Webview lifecycle, and VS Code UX.
- PKI-specific integration code should live under
src/pkistudio/ so command and Webview code do not depend directly on low-level library details.
| |