mirror of
https://github.com/pezkuwichain/pezkuwi-ui.git
synced 2026-06-12 18:51:02 +00:00
Add Ledger interfaces (#211)
This commit is contained in:
@@ -5,11 +5,13 @@
|
||||
import { assertSingletonPackage } from '@polkadot/util';
|
||||
|
||||
import keyring, { Keyring } from './Keyring';
|
||||
import { openLedger } from './ledger';
|
||||
|
||||
assertSingletonPackage('@polkadot/ui-keyring');
|
||||
|
||||
export default keyring;
|
||||
|
||||
export {
|
||||
Keyring
|
||||
Keyring,
|
||||
openLedger
|
||||
};
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
declare module 'ledger-polkadot' {
|
||||
import Transport from '@ledgerhq/hw-transport';
|
||||
|
||||
export interface ResponseBase {
|
||||
error_message: string;
|
||||
return_code: number;
|
||||
}
|
||||
|
||||
export interface ReponseAddress extends ResponseBase {
|
||||
address: string;
|
||||
pubKey: string;
|
||||
}
|
||||
|
||||
export interface ResponseVersion extends ResponseBase {
|
||||
device_locked: boolean;
|
||||
major: number;
|
||||
minor: number;
|
||||
patch: number;
|
||||
test_mode: boolean;
|
||||
}
|
||||
|
||||
export interface ResponseSign extends ResponseBase {
|
||||
signature: string;
|
||||
}
|
||||
|
||||
declare class LedgerApp {
|
||||
constructor (transport: Transport, scrambleKey?: string);
|
||||
|
||||
getVersion (): Promise<ResponseVersion>;
|
||||
getAddress (account: number, change: number, addressIndex: number, requireConfirmation?: boolean): Promise<ResponseAddress>;
|
||||
signSendChunk (chunkIdx: number, chunkNum: number, chunk: Buffer): Promise<ResponseSign>;
|
||||
sign (account: number, change: number, addressIndex: number, message: Uint8Array): Promise<ResponseSign>;
|
||||
}
|
||||
|
||||
export default LedgerApp;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// Copyright 2017-2019 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import Transport from '@ledgerhq/hw-transport';
|
||||
import LedgerU2F from '@ledgerhq/hw-transport-u2f';
|
||||
import LedgerWebUSB from '@ledgerhq/hw-transport-webusb';
|
||||
import LedgerApp from 'ledger-polkadot';
|
||||
|
||||
export async function openLedger (type: 'u2f' | 'webusb'): Promise<LedgerApp> {
|
||||
let transport: Transport;
|
||||
|
||||
if (type === 'u2f') {
|
||||
transport = await LedgerU2F.create(7500);
|
||||
} else if (type === 'webusb') {
|
||||
transport = await LedgerWebUSB.create();
|
||||
} else {
|
||||
throw new Error(`Unsupported transport ${type}`);
|
||||
}
|
||||
|
||||
return new LedgerApp(transport);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
declare module '@ledgerhq/hw-transport-webusb';
|
||||
Reference in New Issue
Block a user