Add genesisHash to signer payload (#323)

* Add genesisHash to signer payload

* fix order and add tests (#324)

* fix order and add tests

* Update packages/react-qr/src/util.spec.ts

* Update packages/react-qr/src/util.spec.ts

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

* Apply suggestions from code review

Co-authored-by: Hanwen Cheng <heawen.cheng@gmail.com>
This commit is contained in:
Jaco Greeff
2020-05-27 17:48:32 +02:00
committed by GitHub
parent a31ef816bd
commit 9252de79d4
3 changed files with 13 additions and 9 deletions
+4 -3
View File
@@ -12,15 +12,16 @@ import QrDisplay from './Display';
interface Props extends BaseProps { interface Props extends BaseProps {
address: string; address: string;
cmd: number; cmd: number;
genesisHash: Uint8Array | string;
payload: Uint8Array; payload: Uint8Array;
} }
function DisplayPayload ({ address, className, cmd, payload, size, style }: Props): React.ReactElement<Props> | null { function DisplayPayload ({ address, className, cmd, genesisHash, payload, size, style }: Props): React.ReactElement<Props> | null {
const [data, setData] = useState<Uint8Array | null>(null); const [data, setData] = useState<Uint8Array | null>(null);
useEffect((): void => { useEffect((): void => {
setData(createSignPayload(address, cmd, payload)); setData(createSignPayload(address, cmd, payload, genesisHash));
}, [address, cmd, payload]); }, [address, cmd, payload, genesisHash]);
if (!data) { if (!data) {
return null; return null;
+6 -4
View File
@@ -64,7 +64,7 @@ describe('util', (): void => {
it('encodes a payload properly', (): void => { it('encodes a payload properly', (): void => {
expect( expect(
u8aToHex( u8aToHex(
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 3, 'THIS IS SPARTA!') createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 3, 'THIS IS SPARTA!', '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe')
) )
).toEqual( ).toEqual(
'0x' + // prefix '0x' + // prefix
@@ -72,7 +72,8 @@ describe('util', (): void => {
'01' + // sr25519 '01' + // sr25519
'03' + // sign tx '03' + // sign tx
'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publickey 'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publickey
'544849532049532053504152544121' // THIS IS SPARTA! '544849532049532053504152544121' + // THIS IS SPARTA!
'b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe' // genesisHash
); );
}); });
}); });
@@ -81,7 +82,7 @@ describe('util', (): void => {
it('encodes frames properly', (): void => { it('encodes frames properly', (): void => {
expect( expect(
createFrames( createFrames(
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 0, '0x12345678') createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 0, '0x12345678', '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe')
).map((u8a): string => u8aToHex(u8a)) ).map((u8a): string => u8aToHex(u8a))
).toEqual([ ).toEqual([
'0x' + '0x' +
@@ -90,7 +91,8 @@ describe('util', (): void => {
'0000' + // index '0000' + // index
'530100' + // payload info, substrate + sr25519 + signtx '530100' + // payload info, substrate + sr25519 + signtx
'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publicKey 'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publicKey
'12345678' // data '12345678' + // data
'b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe' // genesisHash
]); ]);
}); });
}); });
+3 -2
View File
@@ -33,13 +33,14 @@ export function createAddressPayload (address: string, genesisHash: string): Uin
return encodeString(`${ADDRESS_PREFIX}:${address}:${genesisHash}`); return encodeString(`${ADDRESS_PREFIX}:${address}:${genesisHash}`);
} }
export function createSignPayload (address: string, cmd: number, payload: string | Uint8Array): Uint8Array { export function createSignPayload (address: string, cmd: number, payload: string | Uint8Array, genesisHash: string | Uint8Array): Uint8Array {
return u8aConcat( return u8aConcat(
SUBSTRATE_ID, SUBSTRATE_ID,
CRYPTO_SR25519, CRYPTO_SR25519,
new Uint8Array([cmd]), new Uint8Array([cmd]),
decodeAddress(address), decodeAddress(address),
u8aToU8a(payload) u8aToU8a(payload),
u8aToU8a(genesisHash)
); );
} }