Introduce SignerProviderType
This allows the developer to indicate the nuanced signer provider. Some have different implementations (trezor, ledger) and others have different implementations (metamask). Breaking the abstraction of eth_sign. EthSign assumes a spec compliant implementation and can be used as a default
This commit is contained in:
		| @@ -21,6 +21,9 @@ | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             }, | ||||
|             { | ||||
|                 "note": "Update ecSignOrderHashAsync to return the signature as a string for immediate use in contracts" | ||||
|             } | ||||
|         ], | ||||
|         "timestamp": 1532605697 | ||||
|   | ||||
| @@ -14,13 +14,19 @@ import { | ||||
|     ecSignOrderHashAsync, | ||||
|     generatePseudoRandomSalt, | ||||
|     isValidSignatureAsync, | ||||
|     MessagePrefixOpts, | ||||
|     orderHashUtils, | ||||
| } from '@0xproject/order-utils'; | ||||
| // HACK: Since we export assetDataUtils from ZeroEx and it has AssetProxyId, ERC20AssetData and ERC721AssetData | ||||
| // in it's public interface, we need to import these types here. | ||||
| // tslint:disable-next-line:no-unused-variable | ||||
| import { AssetProxyId, ECSignature, ERC20AssetData, ERC721AssetData, Order, SignedOrder } from '@0xproject/types'; | ||||
| import { | ||||
|     AssetProxyId, | ||||
|     ERC20AssetData, | ||||
|     ERC721AssetData, | ||||
|     Order, | ||||
|     SignedOrder, | ||||
|     SignerProviderType, | ||||
| } from '@0xproject/types'; | ||||
| import { BigNumber } from '@0xproject/utils'; | ||||
| import { Web3Wrapper } from '@0xproject/web3-wrapper'; | ||||
| import { Provider, TransactionReceiptWithDecodedLogs } from 'ethereum-types'; | ||||
| @@ -238,19 +244,19 @@ export class ZeroEx { | ||||
|      * @param   orderHash       Hex encoded orderHash to sign. | ||||
|      * @param   signerAddress   The hex encoded Ethereum address you wish to sign it with. This address | ||||
|      *          must be available via the Provider supplied to 0x.js. | ||||
|      * @param   MessagePrefixOpts  Options regarding the desired prefix and whether to add it before calling `eth_sign` | ||||
|      * @return  An object containing the Elliptic curve signature parameters generated by signing the orderHash. | ||||
|      * @param   SignerProviderType  The type of Signer Provider which implements `eth_sign`. E.g Metamask, Ledger, Trezor or EthSign. | ||||
|      * @return  A hex encoded string of the Elliptic curve signature parameters generated by signing the orderHash and signature type. | ||||
|      */ | ||||
|     public async ecSignOrderHashAsync( | ||||
|         orderHash: string, | ||||
|         signerAddress: string, | ||||
|         messagePrefixOpts: MessagePrefixOpts, | ||||
|     ): Promise<ECSignature> { | ||||
|         signerProviderType: SignerProviderType, | ||||
|     ): Promise<string> { | ||||
|         const signature = await ecSignOrderHashAsync( | ||||
|             this._contractWrappers.getProvider(), | ||||
|             orderHash, | ||||
|             signerAddress, | ||||
|             messagePrefixOpts, | ||||
|             signerProviderType, | ||||
|         ); | ||||
|         return signature; | ||||
|     } | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| export { ZeroEx } from './0x'; | ||||
|  | ||||
| export { MessagePrefixType, MessagePrefixOpts } from '@0xproject/order-utils'; | ||||
| export { Web3ProviderEngine, RPCSubprovider } from '@0xproject/subproviders'; | ||||
|  | ||||
| export { | ||||
|     ExchangeContractErrs, | ||||
|     Order, | ||||
|     SignedOrder, | ||||
|     SignerProviderType, | ||||
|     ECSignature, | ||||
|     OrderStateValid, | ||||
|     OrderStateInvalid, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user