@1sat/actions 0.0.128 → 0.0.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCosignDeliveries.d.ts","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"syncCosignDeliveries.d.ts","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AA6DtC,MAAM,WAAW,yBAAyB;IACzC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,0BAA0B;IAC1C,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;CACd;AAiBD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACxC,yBAAyB,EACzB,0BAA0B,CAoI1B,CAAA"}
|
|
@@ -14,6 +14,51 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { MessageBoxClient } from '@bsv/p2p';
|
|
16
16
|
import { Utils } from '@bsv/sdk';
|
|
17
|
+
/**
|
|
18
|
+
* Unwrap the server's {message: <string>} envelope, detect the nested
|
|
19
|
+
* {encryptedMessage: <base64>} ciphertext, and decrypt with the wallet
|
|
20
|
+
* using the same BRC-2 ECDH/AES-256-GCM keys the sender used.
|
|
21
|
+
*
|
|
22
|
+
* Falls through to a plain JSON parse when neither layer is present.
|
|
23
|
+
*/
|
|
24
|
+
async function unwrapAndDecryptMessageBody(rawBody, sender, wallet) {
|
|
25
|
+
const tryParse = (s) => {
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse(s);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return s;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
let level = rawBody;
|
|
34
|
+
if (typeof level === 'string')
|
|
35
|
+
level = tryParse(level);
|
|
36
|
+
// Server wraps as {message: <inner string>}.
|
|
37
|
+
if (level !== null &&
|
|
38
|
+
typeof level === 'object' &&
|
|
39
|
+
typeof level.message === 'string') {
|
|
40
|
+
level = tryParse(level.message);
|
|
41
|
+
}
|
|
42
|
+
// If we now have {encryptedMessage: <base64>}, decrypt.
|
|
43
|
+
if (level !== null &&
|
|
44
|
+
typeof level === 'object' &&
|
|
45
|
+
typeof level.encryptedMessage ===
|
|
46
|
+
'string') {
|
|
47
|
+
const ciphertext = Utils.toArray(level.encryptedMessage, 'base64');
|
|
48
|
+
const decrypted = await wallet.decrypt({
|
|
49
|
+
protocolID: [1, 'messagebox'],
|
|
50
|
+
keyID: '1',
|
|
51
|
+
counterparty: sender,
|
|
52
|
+
ciphertext,
|
|
53
|
+
});
|
|
54
|
+
const plaintext = Utils.toUTF8(decrypted.plaintext);
|
|
55
|
+
level = tryParse(plaintext);
|
|
56
|
+
}
|
|
57
|
+
if (level === null || typeof level !== 'object') {
|
|
58
|
+
throw new Error('message body did not resolve to a JSON object');
|
|
59
|
+
}
|
|
60
|
+
return level;
|
|
61
|
+
}
|
|
17
62
|
// ============================================================================
|
|
18
63
|
// Action
|
|
19
64
|
// ============================================================================
|
|
@@ -55,43 +100,55 @@ export const syncCosignDeliveries = {
|
|
|
55
100
|
const acknowledgedIds = [];
|
|
56
101
|
for (const msg of messages) {
|
|
57
102
|
try {
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
103
|
+
// The server stores message bodies wrapped as {message: <inner>}
|
|
104
|
+
// where <inner> is itself a JSON string of {encryptedMessage:
|
|
105
|
+
// "<base64>"} (BRC-2 ECDH/AES-256-GCM ciphertext). MessageBox
|
|
106
|
+
// Client.listMessages's auto-decrypt only matches when the top-
|
|
107
|
+
// level parsed body has `encryptedMessage` directly, so it
|
|
108
|
+
// silently skips this nested envelope. Unwrap + decrypt here.
|
|
109
|
+
const body = await unwrapAndDecryptMessageBody(msg.body, msg.sender, ctx.wallet);
|
|
64
110
|
console.log(`[syncCosignDeliveries] message ${msg.messageId} parsed body keys:`, Object.keys(body));
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
111
|
+
const tokenId = typeof body.tokenId === 'string' ? body.tokenId : '';
|
|
112
|
+
const vout = typeof body.vout === 'number' ? body.vout : -1;
|
|
113
|
+
const beefField = body.beef;
|
|
114
|
+
const customInstructions = typeof body.customInstructions === 'string'
|
|
115
|
+
? body.customInstructions
|
|
116
|
+
: '';
|
|
117
|
+
const amount = typeof body.amount === 'string' || typeof body.amount === 'number'
|
|
118
|
+
? String(body.amount)
|
|
119
|
+
: '0';
|
|
120
|
+
if (!tokenId || vout < 0 || !beefField || !customInstructions) {
|
|
69
121
|
throw new Error(`message body missing required fields (have keys: ${Object.keys(body).join(',')})`);
|
|
70
122
|
}
|
|
71
|
-
const beefBytes = Array.isArray(
|
|
72
|
-
?
|
|
73
|
-
:
|
|
74
|
-
|
|
123
|
+
const beefBytes = Array.isArray(beefField)
|
|
124
|
+
? beefField
|
|
125
|
+
: typeof beefField === 'string'
|
|
126
|
+
? Utils.toArray(beefField, 'hex')
|
|
127
|
+
: [];
|
|
128
|
+
if (beefBytes.length === 0) {
|
|
129
|
+
throw new Error('beef field could not be decoded as bytes');
|
|
130
|
+
}
|
|
131
|
+
const tokenIdShort = tokenId.slice(0, 8);
|
|
75
132
|
const tags = [
|
|
76
|
-
`bsv21:${
|
|
77
|
-
`amt:${
|
|
78
|
-
`tokenId:${
|
|
133
|
+
`bsv21:${tokenId}`,
|
|
134
|
+
`amt:${amount}`,
|
|
135
|
+
`tokenId:${tokenId}`,
|
|
79
136
|
];
|
|
80
137
|
await ctx.wallet.internalizeAction({
|
|
81
138
|
tx: beefBytes,
|
|
82
139
|
outputs: [
|
|
83
140
|
{
|
|
84
|
-
outputIndex:
|
|
141
|
+
outputIndex: vout,
|
|
85
142
|
protocol: 'basket insertion',
|
|
86
143
|
insertionRemittance: {
|
|
87
144
|
basket: 'bsv21',
|
|
88
145
|
tags,
|
|
89
|
-
customInstructions
|
|
146
|
+
customInstructions,
|
|
90
147
|
},
|
|
91
148
|
},
|
|
92
149
|
],
|
|
93
150
|
description: `Cosign token delivery (${tokenIdShort}…)`.slice(0, 50),
|
|
94
|
-
labels: [`bsv21:${
|
|
151
|
+
labels: [`bsv21:${tokenId}`],
|
|
95
152
|
});
|
|
96
153
|
acknowledgedIds.push(msg.messageId);
|
|
97
154
|
processed++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCosignDeliveries.js","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"syncCosignDeliveries.js","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"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"}
|