Skip to content

Commit acb62c3

Browse files
authored
Merge pull request #1087 from input-output-hk/feat/sign-data-payload
feat(key-management): add payload to SignDataContext when signing cip8 structure
2 parents f7faf90 + 17a82b5 commit acb62c3

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

packages/key-management/src/cip8/cip30signData.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ const signSigStructure = (
9393
sender?: MessageSender
9494
) => {
9595
try {
96-
return witnesser.signBlob(derivationPath, util.bytesToHex(sigStructure.to_bytes()), { address, sender });
96+
const payload = util.bytesToHex(sigStructure.payload());
97+
return witnesser.signBlob(derivationPath, util.bytesToHex(sigStructure.to_bytes()), { address, payload, sender });
9798
} catch (error) {
9899
throw new Cip30DataSignError(Cip30DataSignErrorCode.UserDeclined, 'Failed to sign', error);
99100
}

packages/key-management/src/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ export interface SignTransactionContext {
149149

150150
export interface SignDataContext {
151151
address?: Cardano.PaymentAddress | Cardano.RewardAccount | Cardano.DRepID;
152+
/** Present when signing CIP-0008 structure */
153+
payload?: HexBlob;
152154
sender?: MessageSender;
153155
}
154156

packages/key-management/test/cip8/cip30signData.test.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { HexBlob } from '@cardano-sdk/util';
1717
import { testAsyncKeyAgent, testKeyAgent } from '../mocks';
1818

1919
describe('cip30signData', () => {
20+
const payload = HexBlob('abc123');
2021
const addressDerivationPath = { index: 0, type: AddressType.External };
2122
let keyAgent: KeyAgent;
2223
let witnesser: Bip32Ed25519Witnesser;
@@ -39,7 +40,7 @@ describe('cip30signData', () => {
3940
) => {
4041
const dataSignature = await cip8.cip30signData({
4142
knownAddresses,
42-
payload: HexBlob('abc123'),
43+
payload,
4344
sender,
4445
signWith,
4546
witnesser
@@ -113,6 +114,10 @@ describe('cip30signData', () => {
113114
const signBlobSpy = jest.spyOn(witnesser, 'signBlob');
114115
const sender = { url: 'https://lace.io' };
115116
await signAndDecode(address.address, [address], sender);
116-
expect(signBlobSpy).toBeCalledWith(expect.anything(), expect.anything(), { address: address.address, sender });
117+
expect(signBlobSpy).toBeCalledWith(expect.anything(), expect.anything(), {
118+
address: address.address,
119+
payload,
120+
sender
121+
});
117122
});
118123
});

packages/wallet/test/PersonalWallet/methods.test.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -438,8 +438,9 @@ describe('PersonalWallet methods', () => {
438438
it('passes through context to witnesser', async () => {
439439
const sender = { url: 'https://lace.io' };
440440
const signBlobSpy = jest.spyOn(witnesser, 'signBlob');
441-
await wallet.signData({ payload: HexBlob('abc123'), sender, signWith: address });
442-
expect(signBlobSpy).toBeCalledWith(expect.anything(), expect.anything(), { address, sender });
441+
const payload = HexBlob('abc123');
442+
await wallet.signData({ payload, sender, signWith: address });
443+
expect(signBlobSpy).toBeCalledWith(expect.anything(), expect.anything(), { address, payload, sender });
443444
});
444445

445446
test('rejects if bech32 DRepID is not a type 6 address', async () => {

0 commit comments

Comments
 (0)