MyCrypto/shared/enclave/types.ts

107 lines
2.2 KiB
TypeScript
Raw Normal View History

Electron Ledger + Trezor Support (#1836) * Initial scaffold of enclave * Cleanup types * Add comments * Do not truncate errors, pretty output * Introduce helpers for sagas * Update yarn lock * Convert enclave into its own lib. Implement client and server. * Check in progress * Initial types * Remove unused lib * Finish types * cleanup * Switch over to using electron protocol, remove code thats no longer necessary * Refactor Ledger and Trezor wallets to provide all functionality via libs. Run chain code generation thru Enclave. * Check in trezor work * Transaction signing * Message signing * Display address * Fix deallocation of trezor * Adjust API * Remove unused getAddresses * Fix imports and filenames to cooperate with internal typings * Fix type uncertainty * Add persistent message to Ledger unlock. * Update ledger help link to kb * Convert ledger over to updated libs * Fix jest config * Enclave README * Unnecessary assertion * Adjust tip * Type ledger errors * Reduce enclave client code. * No default exports * l18n user facing enclave errors * Reduce repeated enclave code by splitting it into its own wallet lib. Fix some types * tslint * Reduce repeated enclave code by splitting it into its own wallet lib. Fix some types and error messages. * Electron TREZOR Support (#1946) * Type trezor connect. * Check in trezor code * Implement TREZOR wallet * Convert TREZOR to use enclave class like Ledger. * Switch to mycrypto fork of trezor lib. Remove unused dependencies. * remove unnecessary window attachment * tslint
2018-06-15 23:25:29 +00:00
// Enclave enums
export enum EnclaveMethods {
GET_CHAIN_CODE = 'get-chain-code',
SIGN_TRANSACTION = 'sign-transaction',
SIGN_MESSAGE = 'sign-message',
DISPLAY_ADDRESS = 'display-address'
}
export enum WalletTypes {
LEDGER = 'ledger',
TREZOR = 'trezor',
SAFE_T = 'safe-t',
Electron Ledger + Trezor Support (#1836) * Initial scaffold of enclave * Cleanup types * Add comments * Do not truncate errors, pretty output * Introduce helpers for sagas * Update yarn lock * Convert enclave into its own lib. Implement client and server. * Check in progress * Initial types * Remove unused lib * Finish types * cleanup * Switch over to using electron protocol, remove code thats no longer necessary * Refactor Ledger and Trezor wallets to provide all functionality via libs. Run chain code generation thru Enclave. * Check in trezor work * Transaction signing * Message signing * Display address * Fix deallocation of trezor * Adjust API * Remove unused getAddresses * Fix imports and filenames to cooperate with internal typings * Fix type uncertainty * Add persistent message to Ledger unlock. * Update ledger help link to kb * Convert ledger over to updated libs * Fix jest config * Enclave README * Unnecessary assertion * Adjust tip * Type ledger errors * Reduce enclave client code. * No default exports * l18n user facing enclave errors * Reduce repeated enclave code by splitting it into its own wallet lib. Fix some types * tslint * Reduce repeated enclave code by splitting it into its own wallet lib. Fix some types and error messages. * Electron TREZOR Support (#1946) * Type trezor connect. * Check in trezor code * Implement TREZOR wallet * Convert TREZOR to use enclave class like Ledger. * Switch to mycrypto fork of trezor lib. Remove unused dependencies. * remove unnecessary window attachment * tslint
2018-06-15 23:25:29 +00:00
KEEPKEY = 'keepkey'
}
export interface RawTransaction {
chainId: number;
gasLimit: string;
gasPrice: string;
to: string;
nonce: string;
data: string;
value: string;
}
// Get chain code request
export interface GetChainCodeParams {
walletType: WalletTypes;
dpath: string;
}
export interface GetChainCodeResponse {
publicKey: string;
chainCode: string;
}
// Sign Transaction Request
export interface SignTransactionParams {
walletType: WalletTypes;
transaction: RawTransaction;
path: string;
}
export interface SignTransactionResponse {
signedTransaction: string;
}
// Sign Message Request
export interface SignMessageParams {
walletType: WalletTypes;
message: string;
path: string;
}
export interface SignMessageResponse {
signedMessage: string;
}
// Display Address Request
export interface DisplayAddressParams {
walletType: WalletTypes;
path: string;
}
export interface DisplayAddressResponse {
success: boolean;
}
// All Requests & Responses
export type EnclaveMethodParams =
| GetChainCodeParams
| SignTransactionParams
| SignMessageParams
| DisplayAddressParams;
export type EnclaveMethodResponse =
| GetChainCodeResponse
| SignTransactionResponse
| SignMessageResponse
| DisplayAddressResponse;
// RPC requests, responses & failures
export interface EnclaveSuccessResponse<T = EnclaveMethodResponse> {
data: T;
error?: undefined;
}
export interface EnclaveErrorResponse {
data?: undefined;
error: {
code: number;
type: string;
message: string;
};
}
export type EnclaveResponse<T = EnclaveMethodResponse> =
| EnclaveSuccessResponse<T>
| EnclaveErrorResponse;
// Wallet lib
export interface WalletLib {
getChainCode(dpath: string): Promise<GetChainCodeResponse>;
signTransaction(transaction: RawTransaction, path: string): Promise<SignTransactionResponse>;
signMessage(msg: string, path: string): Promise<SignMessageResponse>;
displayAddress(path: string): Promise<DisplayAddressResponse>;
}