mirror of
https://github.com/pezkuwichain/pezkuwi-ui.git
synced 2026-04-29 21:57:57 +00:00
feat: add flag for payload type passed in by caller (#182)
* feat: add flag for payload type passed in by caller * fix: lint * fix: unit tests * fix: use number
This commit is contained in:
@@ -12,6 +12,7 @@ import QrDisplay from './Display';
|
||||
|
||||
interface Props extends BaseProps {
|
||||
address: string;
|
||||
cmd: number;
|
||||
payload: Uint8Array;
|
||||
}
|
||||
|
||||
@@ -26,8 +27,8 @@ export default class DisplayPayload extends React.PureComponent<Props, State> {
|
||||
dataHash: null
|
||||
};
|
||||
|
||||
public static getDerivedStateFromProps ({ address, payload }: Props, prevState: State): State | null {
|
||||
const data = createSignPayload(address, payload);
|
||||
public static getDerivedStateFromProps ({ address, cmd, payload }: Props, prevState: State): State | null {
|
||||
const data = createSignPayload(address, cmd, payload);
|
||||
const dataHash = xxhashAsHex(data);
|
||||
|
||||
if (dataHash === prevState.dataHash) {
|
||||
|
||||
@@ -7,11 +7,17 @@ const ADDRESS_PREFIX = 'substrate:';
|
||||
const FRAME_SIZE = 2048;
|
||||
const SUBSTRATE_ID = new Uint8Array([0x53]);
|
||||
const CRYPTO_SR25519 = new Uint8Array([0x01]);
|
||||
const CMD_SIGN_TX = new Uint8Array([0x00]);
|
||||
const CMD_SIGN_TX = new Uint8Array([0]);
|
||||
const CMD_SIGN_TX_HASH = new Uint8Array([1]);
|
||||
const CMD_SIGN_IMMORTAL_TX = new Uint8Array([2]);
|
||||
const CMD_SIGN_MSG = new Uint8Array([3]);
|
||||
|
||||
export {
|
||||
ADDRESS_PREFIX,
|
||||
CMD_SIGN_TX,
|
||||
CMD_SIGN_TX_HASH,
|
||||
CMD_SIGN_IMMORTAL_TX,
|
||||
CMD_SIGN_MSG,
|
||||
CRYPTO_SR25519,
|
||||
DEFAULT_IMG_SIZE,
|
||||
FRAME_SIZE,
|
||||
|
||||
@@ -60,13 +60,13 @@ describe('util', (): void => {
|
||||
it('encodes a payload properly', (): void => {
|
||||
expect(
|
||||
u8aToHex(
|
||||
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 'THIS IS SPARTA!')
|
||||
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 3, 'THIS IS SPARTA!')
|
||||
)
|
||||
).toEqual(
|
||||
'0x' + // prefix
|
||||
'53' + // substrate
|
||||
'01' + // sr25519
|
||||
'00' + // sign tx
|
||||
'03' + // sign tx
|
||||
'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publickey
|
||||
'544849532049532053504152544121' // THIS IS SPARTA!
|
||||
);
|
||||
@@ -77,7 +77,7 @@ describe('util', (): void => {
|
||||
it('encodes frames properly', (): void => {
|
||||
expect(
|
||||
createFrames(
|
||||
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', '0x12345678')
|
||||
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 0, '0x12345678')
|
||||
).map((u8a): string => u8aToHex(u8a))
|
||||
).toEqual([
|
||||
'0x' +
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
import { u8aConcat, u8aToU8a } from '@polkadot/util';
|
||||
import { decodeAddress } from '@polkadot/util-crypto';
|
||||
|
||||
import { ADDRESS_PREFIX, CMD_SIGN_TX, CRYPTO_SR25519, DEFAULT_IMG_SIZE, FRAME_SIZE, SUBSTRATE_ID } from './constants';
|
||||
import { ADDRESS_PREFIX, CRYPTO_SR25519, DEFAULT_IMG_SIZE, FRAME_SIZE, SUBSTRATE_ID } from './constants';
|
||||
|
||||
const MULTIPART = new Uint8Array([0]);
|
||||
|
||||
@@ -36,11 +36,11 @@ export function createAddressPayload (address: string): Uint8Array {
|
||||
);
|
||||
}
|
||||
|
||||
export function createSignPayload (address: string, payload: string | Uint8Array): Uint8Array {
|
||||
export function createSignPayload (address: string, cmd: number, payload: string | Uint8Array): Uint8Array {
|
||||
return u8aConcat(
|
||||
SUBSTRATE_ID,
|
||||
CRYPTO_SR25519,
|
||||
CMD_SIGN_TX,
|
||||
new Uint8Array([cmd]),
|
||||
decodeAddress(address),
|
||||
u8aToU8a(payload)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user