Skip to content

Commit 6777703

Browse files
committed
feat(key-management): add payload to SignDataContext when signing cip8 structure
the blob that's being signed wraps the payload adding it to context makes it easier to display the actual data
1 parent bbc894c commit 6777703

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
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
});

0 commit comments

Comments
 (0)