Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@ledgerhq/hw-app-str

LedgerHQ5.6kApache-2.07.2.2TypeScript support: included

Ledger Hardware Wallet Stellar Application API

Ledger, LedgerWallet, Stellar, xlm, NanoS, Blue, Hardware Wallet

readme

GitHub, Ledger Devs Discord, Developer Portal

@ledgerhq/hw-app-str

Ledger Hardware Wallet Stellar JavaScript bindings.


Are you adding Ledger support to your software wallet?

You may be using this package to communicate with the Stellar Nano App.

For a smooth and quick integration:

  • See the developers’ documentation on the Developer Portal and
  • Go on Discord to chat with developer support and the developer community.

Errors handling

All functions may throw an error, it's important to handle the errors properly.

We have written corresponding classes for exceptions that developers should actively handle, you can find them in the API section.


API

Table of Contents

StellarHashSigningNotEnabledError

Error thrown when hash signing is not enabled on the device.

StellarDataParsingFailedError

Error thrown when data parsing fails.

For example, when parsing the transaction fails, this error is thrown.

StellarUserRefusedError

Error thrown when the user refuses the request on the device.

StellarDataTooLargeError

Error thrown when the data is too large to be processed by the device.

Str

Stellar API

Parameters

  • transport Transport a transport for sending commands to a device
  • scrambleKey a scramble key (optional, default "l0v")

Examples

import Str from "@ledgerhq/hw-app-str";
const str = new Str(transport)

getAppConfiguration

Get Stellar application configuration.

Examples
str.getAppConfiguration().then(o => o.version)

Returns Promise<{version: string, hashSigningEnabled: boolean, maxDataSize: number?}> an object with the application configuration, including the version, whether hash signing is enabled, and the maximum data size in bytes that the device can sign.

getPublicKey

Get Stellar raw public key for a given BIP 32 path.

Parameters
  • path string a path in BIP 32 format
  • display if true, the device will ask the user to confirm the address on the device, if false, it will return the raw public key directly (optional, default false)
Examples
str.getPublicKey("44'/148'/0'").then(o => o.rawPublicKey)

Returns Promise<{rawPublicKey: Buffer}> an object with the raw ed25519 public key. If you want to convert it to string, you can use StrKey.encodeEd25519PublicKey

signTransaction

Sign a Stellar transaction.

Parameters
Examples
str.signTransaction("44'/148'/0'", signatureBase).then(o => o.signature)

Returns Promise<{signature: Buffer}> an object with the signature

signSorobanAuthorization

Sign a Stellar Soroban authorization.

Parameters
Examples
str.signSorobanAuthorization("44'/148'/0'", hashIdPreimage).then(o => o.signature)

Returns Promise<{signature: Buffer}> an object with the signature

signHash

Sign a hash.

Parameters
  • path string a path in BIP 32 format
  • hash Buffer the hash to sign
Examples
str.signHash("44'/148'/0'", hash).then(o => o.signature)

Returns Promise<{signature: Buffer}> an object with the signature

changelog

@ledgerhq/hw-app-str

7.2.2

Patch Changes

7.2.2-next.1

Patch Changes

7.2.2-next.0

Patch Changes

7.2.1

Patch Changes

7.2.1-next.0

Patch Changes

7.2.0

Minor Changes

7.2.0-next.0

Minor Changes

7.1.0

Minor Changes

7.1.0-next.0

Minor Changes

7.0.4

Patch Changes

7.0.4-next.0

Patch Changes

7.0.3

Patch Changes

7.0.3-next.0

Patch Changes

7.0.2

Patch Changes

7.0.2-hotfix.0

Patch Changes

7.0.1

Patch Changes

7.0.1-next.0

Patch Changes

7.0.0

Major Changes

  • #6923 782d637 Thanks @overcat! - Refactor hw-app-str and add signSorobanAuthorization. Please check the changelog and documentation of "@ledgerhq/hw-app-str" for more information.

    • Str.getPublicKey's function signature has changed. Previously, it was getPublicKey(path: string, boolValidate?: boolean, boolDisplay?: boolean): Promise<{ publicKey: string; raw: Buffer; }> and now it is async getPublicKey(path: string, display = false): Promise<{ rawPublicKey: Buffer }>
    • Str.signTransaction will no longer automatically fallback to Str.signHash. If you want to sign a hash, you have to call Str.signHash directly.
    • Removed the fixed limit on the maximum length of the transaction in Str.signTransaction. Currently, if the transaction is too large for the device to handle, StellarUserRefusedError will be thrown.
    • Add Str.signSorobanAuthorization method to sign Stellar Soroban authorization.
    • Str.getAppConfiguration now returns maxDataSize, it represents the maximum size of the data that the device can processed.
    • Add error classes for better error handling, check the documentation for more information:
      • StellarUserRefusedError
      • StellarHashSigningNotEnabledError
      • StellarDataTooLargeError
      • StellarDataParsingFailedError

Patch Changes

7.0.0-next.1

Patch Changes

7.0.0-next.0

Major Changes

  • #6923 782d637 Thanks @overcat! - Refactor hw-app-str and add signSorobanAuthorization. Please check the changelog and documentation of "@ledgerhq/hw-app-str" for more information.

    • Str.getPublicKey's function signature has changed. Previously, it was getPublicKey(path: string, boolValidate?: boolean, boolDisplay?: boolean): Promise<{ publicKey: string; raw: Buffer; }> and now it is async getPublicKey(path: string, display = false): Promise<{ rawPublicKey: Buffer }>
    • Str.signTransaction will no longer automatically fallback to Str.signHash. If you want to sign a hash, you have to call Str.signHash directly.
    • Removed the fixed limit on the maximum length of the transaction in Str.signTransaction. Currently, if the transaction is too large for the device to handle, StellarUserRefusedError will be thrown.
    • Add Str.signSorobanAuthorization method to sign Stellar Soroban authorization.
    • Str.getAppConfiguration now returns maxDataSize, it represents the maximum size of the data that the device can processed.
    • Add error classes for better error handling, check the documentation for more information:
      • StellarUserRefusedError
      • StellarHashSigningNotEnabledError
      • StellarDataTooLargeError
      • StellarDataParsingFailedError

6.29.0

Minor Changes

Patch Changes

6.29.0-next.0

Minor Changes

Patch Changes

6.28.6

Patch Changes

6.28.6-next.0

Patch Changes

6.28.5

Patch Changes

6.28.5-next.0

Patch Changes

6.28.4

Patch Changes

6.28.4-next.0

Patch Changes

6.28.3

Patch Changes

6.28.3-next.0

Patch Changes

6.28.2

Patch Changes

6.28.2-next.0

Patch Changes

6.28.1

Patch Changes

6.28.1-next.0

Patch Changes

6.28.0

Minor Changes

Patch Changes

6.28.0-next.0

Minor Changes

Patch Changes

6.27.20

Patch Changes

6.27.20-next.0

Patch Changes

6.27.19

Patch Changes

6.27.19-next.0

Patch Changes

6.27.18

Patch Changes

6.27.18-next.0

Patch Changes

6.27.17

Patch Changes

6.27.17-next.0

Patch Changes

6.27.16

Patch Changes

6.27.16-next.0

Patch Changes

6.27.15

Patch Changes

6.27.15-next.0

Patch Changes

6.27.14

Patch Changes

6.27.14-next.0

Patch Changes

6.27.13

Patch Changes

6.27.13-next.0

Patch Changes

6.27.12

Patch Changes

6.27.12-next.0

Patch Changes

6.27.11

Patch Changes

6.27.11-next.0

Patch Changes

6.27.10

Patch Changes

6.27.10-next.0

Patch Changes

6.27.9

Patch Changes

6.27.9-next.0

Patch Changes

6.27.8

Patch Changes

6.27.8-next.0

Patch Changes

6.27.7

Patch Changes

6.27.7-next.0

Patch Changes

6.27.6

Patch Changes

6.27.6-next.0

Patch Changes

6.27.5

Patch Changes

6.27.5-next.0

Patch Changes

6.27.4

Patch Changes

6.27.4-next.0

Patch Changes

6.27.3

Patch Changes

6.27.3-next.0

Patch Changes

6.27.2

Patch Changes

6.27.2-next.0

Patch Changes