New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@choppu/shelljs

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@choppu/shelljs

Keycard Shell Communication Layer

latest
Source
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

ShellJS

Keycard Shell Library based on @ledgerhq/hw-app-eth and @ledgerhq/hw-transport.

Who should use ShellJS?

ShellJS permits you to communicate with Keycard Shell through websites and through nodejs-based native applications.

API

Table of Contents

Commands

Ethereum API

Parameters

  • transport Transport

Examples

import ShellJS from "Shelljs";
const cmd = new ShellJS.Commands(transport);

getPublicKey

get public key for a given BIP 32 path.

Parameters
Examples
const resp = await cmd.getPublicKey("44'/60'/0'/0/0");
console.log(resp.address);

Returns Promise<{publicKey: string, address: string, chainCode: string?}> an object with a publicKey, address and (optionally) chainCode

signEthTransaction

sign a transaction and retrieve v, r, s given the raw transaction and the BIP 32 path of the account to sign.

Parameters
  • path string : the BIP32 path to sign the transaction on
  • rawTxHex string : the raw ethereum transaction in hexadecimal to sign
Examples
const tx = "e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080"; // raw tx to sign
const resp = cmd.signEthTransaction("44'/60'/0'/0/0", tx);
console.log(resp);

Returns Promise<{s: string, v: string, r: string}>

getAppConfiguration

get firmware and database version installed on device, Keycard Shell serial number and public key.

Examples
const {fwVersion, dbVersion, serialNumber, publicKey} = await cmd.getAppConfiguration();
console.log(fwVersion);
console.log(dbVersion);
console.log(serialNumber);
console.log(publicKey);

Returns Promise<{fwVersion: string, dbVersion: number, serialNumber: string, publicKey: string}>

signPSBT

sign a PSBT and return signed PSBT.

Parameters
  • psbt ArrayBuffer : partially signed bitcoin transaction
Examples
const resp = await cmd.signPSBT(psbt);
console.log(resp);

Returns Promise<ArrayBuffer>

signEthPersonalMessage

sign an Eth personal message and retrieve v, r, s given the message and the BIP 32 path of the account to sign.

Parameters
  • path string
  • pMessage string
  • enc string? : buffer encoding, optional parameter, default: "utf-8"
Examples
const resp = await cmd.signEthPersonalMessage("44'/60'/0'/0/0", "Hello world!");
let v = resp['v'] - 27;
v = v.toString(16);
if (v.length < 2) {
  v = "0" + v;
}
console.log("Signature 0x" + resp['r'] + resp['s'] + v);

Returns Promise<{v: number, s: string, r: string}>

signEIP712Message

sign an EIP-712 formatted message

Parameters
  • path String derivationPath
  • jsonMessage Object message to sign
Examples
const resp = await cmd.signEIP712Message("44'/60'/0'/0/0", {
domain: {
chainId: 69,
name: "Da Domain",
verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",
version: "1"
},
types: {
"EIP712Domain": [
{ name: "name", type: "string" },
{ name: "version", type: "string" },
{ name: "chainId", type: "uint256" },
{ name: "verifyingContract", type: "address" }
],
"Test": [
{ name: "contents", type: "string" }
]
},
primaryType: "Test",
message: {contents: "Hello, Bob!"},
});

Returns Promise<{v: number, s: string, r: string}>

loadFirmware

load Keycard Shell firmware

Parameters
Examples
const fs = require('fs'),
let f = fs.readFileSync('./firmware.bin');
let fw = new Uint8Array(f);
await cmd.loadFirmware(fw);

Returns Promise<number>

loadDatabase

load Keycard Shell database

Parameters
Examples
const fs = require('fs'),
let f = fs.readFileSync('./db.bin');
let db = new Uint8Array(f);
await cmd.loadDatabase(db);

Returns Promise<number>

Live Demo

You can check a demo at Shell Web HID Example Page.

FAQs

Package last updated on 28 Oct 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts