JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 44
  • Score
    100M100P100Q68352F
  • License MIT

Interface for communication with Cardano Ledger app

Package Exports

  • @emurgo/ledger-connect-handler
  • @emurgo/ledger-connect-handler/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@emurgo/ledger-connect-handler) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

yoroi-extension-ledger-connect-handler

This library enables Yoroi extension to communicate with Ledger device, in process this library needs one web page that directly communicates with Ledger device. This library is responsible for opening, sendind resquest, passing back response to Yoroi and closing the target web page.

Message Passing

ledger-content-script

Flow:

  1. Yoroi requests yoroi-extension-ledger-connect-handler(Using function call).
  2. yoroi-extension-ledger-connect-handler opens target Website.
  3. yoroi-extension-ledger-connect-handler sends request message to content-script(Using extension port).
  4. content-script passes request to the target Website app(Using postMessage()).
  5. Target Website app processes the request and send response to content-script(Using postMessage()).
  6. content-script passes response to yoroi-extension-ledger-connect-handler(Using extension port).
  7. Finally, yoroi-extension-ledger-connect-handler passes response to Yoroi(Using function return).

Supported Functions

getExtendedPublicKey

Inputs

{
  serial: ?string,
  params: {
    path: BIP32Path
  },
}

Outputs

{
  deriveSerial: {
    serial: string
  },
  deviceVersion: {
    flags: Flags,
    major: string,
    minor: string,
    patch: string
  },
  response: GetExtendedPublicKeysResponse<GetExtendedPublicKeyResponse>
}

getExtendedPublicKeys

Inputs

{
  serial: ?string,
  params: {
    paths: Array<BIP32Path>
  },
}

Outputs

{
  deriveSerial: {
    serial: string
  },
  deviceVersion: {
    flags: Flags,
    major: string,
    minor: string,
    patch: string
  },
  response: GetExtendedPublicKeysResponse<GetExtendedPublicKeysResponse>
}

signTransaction

Inputs

{
  serial: ?string,
  params: Transaction,
}

Outputs

SignTransactionResponse

showAddress

Inputs

{|
  serial: ?string,
  params: {
    ...ShowAddressRequest,
    expectedAddr: string,
  },
|}

Outputs

undefined

deriveAddress

Inputs

{
  serial: ?string,
  params: DeriveAddressRequest,
}

Outputs

DeriveAddressResponse

getVersion

Inputs

{
  serial: ?string,
  params: undefined,
}

Outputs

GetVersionResponse

getSerial

Inputs

{
  serial: ?string,
  params: undefined,
}

Outputs

GetSerialResponse

Example

Import

import LedgerConnect from 'yoroi-extension-ledger-connect-handler';

Create new instance


const ledgerConnect = new LedgerConnect(config);

config is type of: Config

Calling function

const deviceVersionResp = await ledgerConnect.getVersion();

Supported Ledger Transport

Building up

  • nvm i
  • yarn
  • yarn run build

Publishing

Make sure you have followed Building up steps before publishing.

  • npm publish