@zhoujun_aptos/octopus-ts-sdk-min 0.19.1 → 0.21.0
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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/silent_setup_encryption_xchain/index.d.ts.map +1 -1
- package/dist/silent_setup_encryption_xchain/index.js +0 -1
- package/dist/silent_setup_encryption_xchain/index.js.map +1 -1
- package/dist/threshold-ibe/aptos.d.ts +39 -0
- package/dist/threshold-ibe/aptos.d.ts.map +1 -0
- package/dist/threshold-ibe/aptos.js +215 -0
- package/dist/threshold-ibe/aptos.js.map +1 -0
- package/dist/threshold-ibe/index.d.ts +122 -0
- package/dist/threshold-ibe/index.d.ts.map +1 -0
- package/dist/threshold-ibe/index.js +379 -0
- package/dist/threshold-ibe/index.js.map +1 -0
- package/dist/threshold-ibe/solana.d.ts +37 -0
- package/dist/threshold-ibe/solana.d.ts.map +1 -0
- package/dist/threshold-ibe/solana.js +193 -0
- package/dist/threshold-ibe/solana.js.map +1 -0
- package/dist/threshold-ibe/types.d.ts +25 -0
- package/dist/threshold-ibe/types.d.ts.map +1 -0
- package/dist/threshold-ibe/types.js +70 -0
- package/dist/threshold-ibe/types.js.map +1 -0
- package/dist/worker_config.d.ts +1 -0
- package/dist/worker_config.d.ts.map +1 -1
- package/dist/worker_config.js +9 -0
- package/dist/worker_config.js.map +1 -1
- package/dist/worker_task.d.ts +15 -2
- package/dist/worker_task.d.ts.map +1 -1
- package/dist/worker_task.js +111 -3
- package/dist/worker_task.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module threshold-ibe
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.ProofOfPermission = exports.ContractID = exports.Ciphertext = exports.DecryptionKey = exports.EncryptionKey = exports.Committee = void 0;
|
|
42
|
+
exports.encrypt = encrypt;
|
|
43
|
+
exports.decrypt = decrypt;
|
|
44
|
+
exports.verifyAndExtract = verifyAndExtract;
|
|
45
|
+
const __1 = require("..");
|
|
46
|
+
const IBE = __importStar(require("../ibe"));
|
|
47
|
+
const Sym = __importStar(require("../sym"));
|
|
48
|
+
const ShamirGF256 = __importStar(require("../shamir_gf256"));
|
|
49
|
+
const aptos_1 = require("./aptos");
|
|
50
|
+
const solana_1 = require("./solana");
|
|
51
|
+
const types_1 = require("./types");
|
|
52
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
53
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
54
|
+
const SolanaSDK = __importStar(require("@solana/web3.js"));
|
|
55
|
+
class Committee {
|
|
56
|
+
workerEndpoints;
|
|
57
|
+
threshold;
|
|
58
|
+
constructor({ workerEndpoints, threshold }) {
|
|
59
|
+
if (workerEndpoints.length === 0)
|
|
60
|
+
throw new Error("workerEndpoints must be non-empty");
|
|
61
|
+
if (threshold === 0)
|
|
62
|
+
throw new Error("threshold must be greater than 0");
|
|
63
|
+
if (threshold > workerEndpoints.length)
|
|
64
|
+
throw new Error("threshold must be less than or equal to the number of workerEndpoints");
|
|
65
|
+
this.workerEndpoints = workerEndpoints;
|
|
66
|
+
this.threshold = threshold;
|
|
67
|
+
}
|
|
68
|
+
static dummy() {
|
|
69
|
+
return new Committee({ workerEndpoints: ['http://localhost:3000'], threshold: 1 });
|
|
70
|
+
}
|
|
71
|
+
static deserialize(deserializer) {
|
|
72
|
+
const numWorkerEndpoints = deserializer.deserializeUleb128AsU32();
|
|
73
|
+
const workerEndpoints = Array.from({ length: numWorkerEndpoints }, () => deserializer.deserializeStr());
|
|
74
|
+
const threshold = Number(deserializer.deserializeU64());
|
|
75
|
+
return new Committee({ workerEndpoints, threshold });
|
|
76
|
+
}
|
|
77
|
+
serialize(serializer) {
|
|
78
|
+
serializer.serializeU32AsUleb128(this.workerEndpoints.length);
|
|
79
|
+
this.workerEndpoints.forEach(workerEndpoint => serializer.serializeStr(workerEndpoint));
|
|
80
|
+
serializer.serializeU64(this.threshold);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.Committee = Committee;
|
|
84
|
+
class EncryptionKey {
|
|
85
|
+
ibeMpks;
|
|
86
|
+
constructor({ ibeMpks }) {
|
|
87
|
+
this.ibeMpks = ibeMpks;
|
|
88
|
+
}
|
|
89
|
+
async fetch({ committee }) {
|
|
90
|
+
const ibeMpks = await Promise.all(committee.workerEndpoints.map(async (endpoint) => {
|
|
91
|
+
const config = await __1.WorkerConfig.get(endpoint);
|
|
92
|
+
return config.ibeMpk;
|
|
93
|
+
}));
|
|
94
|
+
return new EncryptionKey({ ibeMpks });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.EncryptionKey = EncryptionKey;
|
|
98
|
+
class DecryptionKey {
|
|
99
|
+
ibeDecryptionKeys;
|
|
100
|
+
constructor(ibeDecryptionKeys) {
|
|
101
|
+
this.ibeDecryptionKeys = ibeDecryptionKeys;
|
|
102
|
+
}
|
|
103
|
+
static async fetch({ committee, contractId, domain, proof }) {
|
|
104
|
+
const decKeyLoadResults = await Promise.all(committee.workerEndpoints.map(async (workerEndpoint) => {
|
|
105
|
+
const task = __1.WorkerTask.newThresholdIbeDecryptionKey({ committee, contractId, domain, proof });
|
|
106
|
+
const controller = new AbortController();
|
|
107
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
108
|
+
var response = null;
|
|
109
|
+
try {
|
|
110
|
+
response = await fetch(workerEndpoint, {
|
|
111
|
+
method: "POST",
|
|
112
|
+
body: task.toHex(),
|
|
113
|
+
signal: controller.signal
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
clearTimeout(timeoutId);
|
|
118
|
+
}
|
|
119
|
+
if (response == null) {
|
|
120
|
+
return new WorkerTimedOut();
|
|
121
|
+
}
|
|
122
|
+
const responseBody = await response.text();
|
|
123
|
+
if (response.status !== 200) {
|
|
124
|
+
return new WorkerRejected(response.status, responseBody);
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
return IBE.IdentityPrivateKey.fromHex(responseBody);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return new CouldNotParseDecryptionKey(responseBody);
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
const numSharesCollected = decKeyLoadResults.filter((loadResult) => loadResult instanceof IBE.IdentityPrivateKey).length;
|
|
134
|
+
if (numSharesCollected < committee.threshold) {
|
|
135
|
+
const workerResults = committee.workerEndpoints.map((workerEndpoint, i) => {
|
|
136
|
+
const result = decKeyLoadResults[i];
|
|
137
|
+
return `${workerEndpoint}: ${result instanceof IBE.IdentityPrivateKey ? 'Success' : result.toDisplayString()}`;
|
|
138
|
+
}).join(', ');
|
|
139
|
+
throw new Error(`Failed to collect enough shares to decrypt. Collected ${numSharesCollected} shares, but needed ${committee.threshold} shares. Worker results: ${workerResults}`);
|
|
140
|
+
}
|
|
141
|
+
const decKeys = decKeyLoadResults.map((loadResult) => loadResult instanceof IBE.IdentityPrivateKey ? loadResult : null);
|
|
142
|
+
return new DecryptionKey(decKeys);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.DecryptionKey = DecryptionKey;
|
|
146
|
+
class Ciphertext {
|
|
147
|
+
aesCiph;
|
|
148
|
+
ibeCiphs;
|
|
149
|
+
constructor(aesCiph, ibeCiphs) {
|
|
150
|
+
this.aesCiph = aesCiph;
|
|
151
|
+
this.ibeCiphs = ibeCiphs;
|
|
152
|
+
}
|
|
153
|
+
static dummy() {
|
|
154
|
+
return new Ciphertext(Sym.Ciphertext.dummy(), []);
|
|
155
|
+
}
|
|
156
|
+
static deserialize(deserializer) {
|
|
157
|
+
const aesCiph = Sym.Ciphertext.deserialize(deserializer);
|
|
158
|
+
const ibeCiphs = deserializer.deserializeVector(IBE.Ciphertext);
|
|
159
|
+
return new Ciphertext(aesCiph, ibeCiphs);
|
|
160
|
+
}
|
|
161
|
+
static fromBytes(bytes) {
|
|
162
|
+
const deserializer = new ts_sdk_1.Deserializer(bytes);
|
|
163
|
+
const ret = Ciphertext.deserialize(deserializer);
|
|
164
|
+
if (deserializer.remaining() !== 0) {
|
|
165
|
+
throw new Error("Ciphertext deserialization failed: extra bytes");
|
|
166
|
+
}
|
|
167
|
+
return ret;
|
|
168
|
+
}
|
|
169
|
+
static fromHex(hex) {
|
|
170
|
+
return Ciphertext.fromBytes((0, utils_1.hexToBytes)(hex));
|
|
171
|
+
}
|
|
172
|
+
serialize(serializer) {
|
|
173
|
+
this.aesCiph.serialize(serializer);
|
|
174
|
+
serializer.serializeU32AsUleb128(this.ibeCiphs.length);
|
|
175
|
+
this.ibeCiphs.forEach(ibeCiph => ibeCiph.serialize(serializer));
|
|
176
|
+
}
|
|
177
|
+
toBytes() {
|
|
178
|
+
const serializer = new ts_sdk_1.Serializer();
|
|
179
|
+
this.serialize(serializer);
|
|
180
|
+
return serializer.toUint8Array();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.Ciphertext = Ciphertext;
|
|
184
|
+
class ContractID {
|
|
185
|
+
static SCHEME_APTOS = 0;
|
|
186
|
+
static SCHEME_SOLANA = 1;
|
|
187
|
+
scheme;
|
|
188
|
+
inner;
|
|
189
|
+
constructor(scheme, inner) {
|
|
190
|
+
this.scheme = scheme;
|
|
191
|
+
this.inner = inner;
|
|
192
|
+
}
|
|
193
|
+
static newAptos({ chainId, moduleAddr, moduleName, functionName }) {
|
|
194
|
+
return new ContractID(ContractID.SCHEME_APTOS, new aptos_1.ContractID(chainId, moduleAddr, moduleName, functionName));
|
|
195
|
+
}
|
|
196
|
+
static newSolana({ knownChainName, programId }) {
|
|
197
|
+
return new ContractID(ContractID.SCHEME_SOLANA, new solana_1.ContractID({ knownChainName, programId }));
|
|
198
|
+
}
|
|
199
|
+
static dummy() {
|
|
200
|
+
return new ContractID(ContractID.SCHEME_APTOS, aptos_1.ContractID.dummy());
|
|
201
|
+
}
|
|
202
|
+
static deserialize(deserializer) {
|
|
203
|
+
const scheme = deserializer.deserializeU8();
|
|
204
|
+
if (scheme == ContractID.SCHEME_APTOS) {
|
|
205
|
+
return new ContractID(ContractID.SCHEME_APTOS, aptos_1.ContractID.deserialize(deserializer));
|
|
206
|
+
}
|
|
207
|
+
else if (scheme == ContractID.SCHEME_SOLANA) {
|
|
208
|
+
return new ContractID(ContractID.SCHEME_SOLANA, solana_1.ContractID.deserialize(deserializer));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
throw new Error(`Unknown scheme: ${scheme}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
static fromBytes(bytes) {
|
|
215
|
+
const deserializer = new ts_sdk_1.Deserializer(bytes);
|
|
216
|
+
return ContractID.deserialize(deserializer);
|
|
217
|
+
}
|
|
218
|
+
static fromHex(hex) {
|
|
219
|
+
return ContractID.fromBytes((0, utils_1.hexToBytes)(hex));
|
|
220
|
+
}
|
|
221
|
+
serialize(serializer) {
|
|
222
|
+
serializer.serializeU8(this.scheme);
|
|
223
|
+
if (this.scheme == ContractID.SCHEME_APTOS) {
|
|
224
|
+
this.inner.serialize(serializer);
|
|
225
|
+
}
|
|
226
|
+
else if (this.scheme == ContractID.SCHEME_SOLANA) {
|
|
227
|
+
this.inner.serialize(serializer);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
throw new Error(`Unknown scheme: ${this.scheme}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
toBytes() {
|
|
234
|
+
const serializer = new ts_sdk_1.Serializer();
|
|
235
|
+
this.serialize(serializer);
|
|
236
|
+
return serializer.toUint8Array();
|
|
237
|
+
}
|
|
238
|
+
toHex() {
|
|
239
|
+
return (0, utils_1.bytesToHex)(this.toBytes());
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
exports.ContractID = ContractID;
|
|
243
|
+
class ProofOfPermission {
|
|
244
|
+
static SCHEME_APTOS = 0;
|
|
245
|
+
static SCHEME_SOLANA = 1;
|
|
246
|
+
scheme;
|
|
247
|
+
inner;
|
|
248
|
+
constructor(scheme, inner) {
|
|
249
|
+
this.scheme = scheme;
|
|
250
|
+
this.inner = inner;
|
|
251
|
+
}
|
|
252
|
+
/** @deprecated Use `ProofOfPermission.createAptos()` instead */
|
|
253
|
+
static newAptos(id) {
|
|
254
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_APTOS, id);
|
|
255
|
+
}
|
|
256
|
+
/** @deprecated Use `ProofOfPermission.createSolana()` instead */
|
|
257
|
+
static newSolana(id) {
|
|
258
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_SOLANA, id);
|
|
259
|
+
}
|
|
260
|
+
static createAptos({ userAddr, publicKey, signature, fullMessage }) {
|
|
261
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_APTOS, new aptos_1.ProofOfPermission({ userAddr, publicKey, signature, fullMessage }));
|
|
262
|
+
}
|
|
263
|
+
static createSolana({ txn }) {
|
|
264
|
+
const solanaProof = txn instanceof SolanaSDK.VersionedTransaction
|
|
265
|
+
? solana_1.ProofOfPermission.newVersioned(txn)
|
|
266
|
+
: solana_1.ProofOfPermission.newUnversioned(txn);
|
|
267
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_SOLANA, solanaProof);
|
|
268
|
+
}
|
|
269
|
+
static deserialize(deserializer) {
|
|
270
|
+
const scheme = deserializer.deserializeU8();
|
|
271
|
+
if (scheme == ProofOfPermission.SCHEME_APTOS) {
|
|
272
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_APTOS, aptos_1.ProofOfPermission.deserialize(deserializer));
|
|
273
|
+
}
|
|
274
|
+
else if (scheme == ProofOfPermission.SCHEME_SOLANA) {
|
|
275
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_SOLANA, solana_1.ProofOfPermission.deserialize(deserializer));
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
throw new Error(`Unknown scheme: ${scheme}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
static fromBytes(bytes) {
|
|
282
|
+
const deserializer = new ts_sdk_1.Deserializer(bytes);
|
|
283
|
+
return ProofOfPermission.deserialize(deserializer);
|
|
284
|
+
}
|
|
285
|
+
static fromHex(hex) {
|
|
286
|
+
return ProofOfPermission.fromBytes((0, utils_1.hexToBytes)(hex));
|
|
287
|
+
}
|
|
288
|
+
serialize(serializer) {
|
|
289
|
+
serializer.serializeU8(this.scheme);
|
|
290
|
+
if (this.scheme == ProofOfPermission.SCHEME_APTOS) {
|
|
291
|
+
this.inner.serialize(serializer);
|
|
292
|
+
}
|
|
293
|
+
else if (this.scheme == ProofOfPermission.SCHEME_SOLANA) {
|
|
294
|
+
this.inner.serialize(serializer);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
throw new Error(`Unknown scheme: ${this.scheme}`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
toBytes() {
|
|
301
|
+
const serializer = new ts_sdk_1.Serializer();
|
|
302
|
+
this.serialize(serializer);
|
|
303
|
+
return serializer.toUint8Array();
|
|
304
|
+
}
|
|
305
|
+
toHex() {
|
|
306
|
+
return (0, utils_1.bytesToHex)(this.toBytes());
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
exports.ProofOfPermission = ProofOfPermission;
|
|
310
|
+
function encrypt({ committee, encryptionKey, contractId, domain, plaintext }) {
|
|
311
|
+
if (committee.workerEndpoints.length !== encryptionKey.ibeMpks.length) {
|
|
312
|
+
throw new Error("committee.workerEndpoints.length !== encryptionKey.ibeMpks.length");
|
|
313
|
+
}
|
|
314
|
+
const decryptionContext = new types_1.DecryptionContext({
|
|
315
|
+
committee,
|
|
316
|
+
contractId: contractId,
|
|
317
|
+
domain: domain,
|
|
318
|
+
});
|
|
319
|
+
const symmKey = Sym.keygen();
|
|
320
|
+
const symmKeyShares = ShamirGF256.split(symmKey.toBytes(), committee.threshold, committee.workerEndpoints.length);
|
|
321
|
+
const symmCiph = Sym.encrypt(symmKey, plaintext);
|
|
322
|
+
const ibeCiphs = symmKeyShares.map((share, idx) => IBE.encrypt(encryptionKey.ibeMpks[idx], decryptionContext.toBytes(), share.payload));
|
|
323
|
+
return new Ciphertext(symmCiph, ibeCiphs);
|
|
324
|
+
}
|
|
325
|
+
function decrypt({ decryptionKey, ciphertext }) {
|
|
326
|
+
if (decryptionKey.ibeDecryptionKeys.length !== ciphertext.ibeCiphs.length) {
|
|
327
|
+
throw new Error("decryptionKey.ibeDecryptionKeys.length !== ciphertext.ibeCiphs.length");
|
|
328
|
+
}
|
|
329
|
+
const symmKeyShares = ciphertext.ibeCiphs.map((ibeCiph, idx) => {
|
|
330
|
+
if (decryptionKey.ibeDecryptionKeys[idx] == null)
|
|
331
|
+
return null;
|
|
332
|
+
const sharePayload = IBE.decrypt(decryptionKey.ibeDecryptionKeys[idx], ibeCiph);
|
|
333
|
+
if (sharePayload == null)
|
|
334
|
+
return null;
|
|
335
|
+
return new ShamirGF256.Share(idx + 1, sharePayload);
|
|
336
|
+
}).filter((share) => share != null);
|
|
337
|
+
const symmKeyBytes = ShamirGF256.combine(symmKeyShares);
|
|
338
|
+
const symmKey = Sym.Key.fromBytes(symmKeyBytes);
|
|
339
|
+
return Sym.decrypt(symmKey, ciphertext.aesCiph);
|
|
340
|
+
}
|
|
341
|
+
async function verifyAndExtract({ ibeMsk, committee, contractId, domain, proof }) {
|
|
342
|
+
const decryptionContext = new types_1.DecryptionContext({ committee, contractId, domain });
|
|
343
|
+
if (contractId.scheme == ContractID.SCHEME_APTOS && proof.scheme == ProofOfPermission.SCHEME_APTOS) {
|
|
344
|
+
await (0, aptos_1.verifyPermission)({ decryptionContext, proof: proof.inner });
|
|
345
|
+
}
|
|
346
|
+
else if (contractId.scheme == ContractID.SCHEME_SOLANA && proof.scheme == ProofOfPermission.SCHEME_SOLANA) {
|
|
347
|
+
await (0, solana_1.verifyPermission)({ decryptionContext, proof: proof.inner });
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
throw new Error(`Unknown scheme: contractId=${contractId.scheme}, proof=${proof.scheme}`);
|
|
351
|
+
}
|
|
352
|
+
return IBE.extract(ibeMsk, decryptionContext.toBytes());
|
|
353
|
+
}
|
|
354
|
+
class WorkerTimedOut {
|
|
355
|
+
toDisplayString() {
|
|
356
|
+
return 'Timed out';
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
class WorkerRejected {
|
|
360
|
+
statusCode;
|
|
361
|
+
responseBody;
|
|
362
|
+
constructor(statusCode, responseBody) {
|
|
363
|
+
this.statusCode = statusCode;
|
|
364
|
+
this.responseBody = responseBody;
|
|
365
|
+
}
|
|
366
|
+
toDisplayString() {
|
|
367
|
+
return `Rejected: ${this.statusCode} ${this.responseBody}`;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
class CouldNotParseDecryptionKey {
|
|
371
|
+
originalHex;
|
|
372
|
+
constructor(originalHex) {
|
|
373
|
+
this.originalHex = originalHex;
|
|
374
|
+
}
|
|
375
|
+
toDisplayString() {
|
|
376
|
+
return `Could not parse decryption key: ${this.originalHex}`;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/threshold-ibe/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Deserializer, Serializer } from "@aptos-labs/ts-sdk";
|
|
2
|
+
import { PublicKey, Transaction, VersionedTransaction } from "@solana/web3.js";
|
|
3
|
+
import { DecryptionContext } from "./types";
|
|
4
|
+
export declare class ContractID {
|
|
5
|
+
knownChainName: string;
|
|
6
|
+
programId: PublicKey;
|
|
7
|
+
constructor({ knownChainName, programId }: {
|
|
8
|
+
knownChainName: string;
|
|
9
|
+
programId: PublicKey;
|
|
10
|
+
});
|
|
11
|
+
static deserialize(deserializer: Deserializer): ContractID;
|
|
12
|
+
static fromBytes(bytes: Uint8Array): ContractID;
|
|
13
|
+
static fromHex(hex: string): ContractID;
|
|
14
|
+
serialize(serializer: Serializer): void;
|
|
15
|
+
toBytes(): Uint8Array;
|
|
16
|
+
toHex(): string;
|
|
17
|
+
}
|
|
18
|
+
export declare class ProofOfPermission {
|
|
19
|
+
static readonly SCHEME_UNVERSIONED = 0;
|
|
20
|
+
static readonly SCHEME_VERSIONED = 1;
|
|
21
|
+
scheme: number;
|
|
22
|
+
inner: Transaction | VersionedTransaction;
|
|
23
|
+
private constructor();
|
|
24
|
+
static newVersioned(txn: VersionedTransaction): ProofOfPermission;
|
|
25
|
+
static newUnversioned(txn: Transaction): ProofOfPermission;
|
|
26
|
+
static deserialize(deserializer: Deserializer): ProofOfPermission;
|
|
27
|
+
static fromBytes(bytes: Uint8Array): ProofOfPermission;
|
|
28
|
+
static fromHex(hex: string): ProofOfPermission;
|
|
29
|
+
serialize(serializer: Serializer): void;
|
|
30
|
+
toBytes(): Uint8Array;
|
|
31
|
+
toHex(): string;
|
|
32
|
+
}
|
|
33
|
+
export declare function verifyPermission({ decryptionContext, proof }: {
|
|
34
|
+
decryptionContext: DecryptionContext;
|
|
35
|
+
proof: ProofOfPermission;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=solana.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/threshold-ibe/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAc,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,UAAU;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;gBAET,EAAC,cAAc,EAAE,SAAS,EAAC,EAAE;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAC;IAKvF,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU;IAM1D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAK/C,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAIvC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKvC,OAAO,IAAI,UAAU;IAMrB,KAAK,IAAI,MAAM;CAGlB;AAED,qBAAa,iBAAiB;IAC1B,MAAM,CAAC,QAAQ,CAAC,kBAAkB,KAAK;IACvC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,KAAK;IAErC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,GAAG,oBAAoB,CAAC;IAE1C,OAAO;IAKP,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,oBAAoB,GAAG,iBAAiB;IAIjE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB;IAI1D,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,iBAAiB;IAcjE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB;IAKtD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAI9C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAWvC,OAAO,IAAI,UAAU;IAMrB,KAAK,IAAI,MAAM;CAGlB;AAED,wBAAsB,gBAAgB,CAAC,EAAC,iBAAiB,EAAE,KAAK,EAAC,EAAE;IAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlJ"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProofOfPermission = exports.ContractID = void 0;
|
|
4
|
+
exports.verifyPermission = verifyPermission;
|
|
5
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
6
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
7
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
class ContractID {
|
|
9
|
+
knownChainName; // mainnet-beta/testnet/devnet
|
|
10
|
+
programId;
|
|
11
|
+
constructor({ knownChainName, programId }) {
|
|
12
|
+
this.knownChainName = knownChainName;
|
|
13
|
+
this.programId = programId;
|
|
14
|
+
}
|
|
15
|
+
static deserialize(deserializer) {
|
|
16
|
+
const knownChainName = deserializer.deserializeStr();
|
|
17
|
+
const programId = new web3_js_1.PublicKey(deserializer.deserializeBytes());
|
|
18
|
+
return new ContractID({ knownChainName, programId });
|
|
19
|
+
}
|
|
20
|
+
static fromBytes(bytes) {
|
|
21
|
+
const deserializer = new ts_sdk_1.Deserializer(bytes);
|
|
22
|
+
return ContractID.deserialize(deserializer);
|
|
23
|
+
}
|
|
24
|
+
static fromHex(hex) {
|
|
25
|
+
return ContractID.fromBytes((0, utils_1.hexToBytes)(hex));
|
|
26
|
+
}
|
|
27
|
+
serialize(serializer) {
|
|
28
|
+
serializer.serializeStr(this.knownChainName);
|
|
29
|
+
serializer.serializeBytes(this.programId.toBytes());
|
|
30
|
+
}
|
|
31
|
+
toBytes() {
|
|
32
|
+
const serializer = new ts_sdk_1.Serializer();
|
|
33
|
+
this.serialize(serializer);
|
|
34
|
+
return serializer.toUint8Array();
|
|
35
|
+
}
|
|
36
|
+
toHex() {
|
|
37
|
+
return (0, utils_1.bytesToHex)(this.toBytes());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.ContractID = ContractID;
|
|
41
|
+
class ProofOfPermission {
|
|
42
|
+
static SCHEME_UNVERSIONED = 0;
|
|
43
|
+
static SCHEME_VERSIONED = 1;
|
|
44
|
+
scheme;
|
|
45
|
+
inner;
|
|
46
|
+
constructor(scheme, inner) {
|
|
47
|
+
this.scheme = scheme;
|
|
48
|
+
this.inner = inner;
|
|
49
|
+
}
|
|
50
|
+
static newVersioned(txn) {
|
|
51
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_VERSIONED, txn);
|
|
52
|
+
}
|
|
53
|
+
static newUnversioned(txn) {
|
|
54
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_UNVERSIONED, txn);
|
|
55
|
+
}
|
|
56
|
+
static deserialize(deserializer) {
|
|
57
|
+
const scheme = deserializer.deserializeU8();
|
|
58
|
+
const bytes = deserializer.deserializeBytes();
|
|
59
|
+
if (scheme == ProofOfPermission.SCHEME_VERSIONED) {
|
|
60
|
+
const inner = web3_js_1.VersionedTransaction.deserialize(bytes);
|
|
61
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_VERSIONED, inner);
|
|
62
|
+
}
|
|
63
|
+
else if (scheme == ProofOfPermission.SCHEME_UNVERSIONED) {
|
|
64
|
+
const inner = web3_js_1.Transaction.from(Buffer.from(bytes));
|
|
65
|
+
return new ProofOfPermission(ProofOfPermission.SCHEME_UNVERSIONED, inner);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw new Error(`Unknown scheme: ${scheme}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
static fromBytes(bytes) {
|
|
72
|
+
const deserializer = new ts_sdk_1.Deserializer(bytes);
|
|
73
|
+
return ProofOfPermission.deserialize(deserializer);
|
|
74
|
+
}
|
|
75
|
+
static fromHex(hex) {
|
|
76
|
+
return ProofOfPermission.fromBytes((0, utils_1.hexToBytes)(hex));
|
|
77
|
+
}
|
|
78
|
+
serialize(serializer) {
|
|
79
|
+
serializer.serializeU8(this.scheme);
|
|
80
|
+
if (this.scheme == ProofOfPermission.SCHEME_VERSIONED) {
|
|
81
|
+
serializer.serializeBytes(this.inner.serialize());
|
|
82
|
+
}
|
|
83
|
+
else if (this.scheme == ProofOfPermission.SCHEME_UNVERSIONED) {
|
|
84
|
+
serializer.serializeBytes(this.inner.serialize());
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw new Error(`Unknown scheme: ${this.scheme}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
toBytes() {
|
|
91
|
+
const serializer = new ts_sdk_1.Serializer();
|
|
92
|
+
this.serialize(serializer);
|
|
93
|
+
return serializer.toUint8Array();
|
|
94
|
+
}
|
|
95
|
+
toHex() {
|
|
96
|
+
return (0, utils_1.bytesToHex)(this.toBytes());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.ProofOfPermission = ProofOfPermission;
|
|
100
|
+
async function verifyPermission({ decryptionContext, proof }) {
|
|
101
|
+
const txn = proof.inner;
|
|
102
|
+
assertTransactionValid({ txn, decryptionContext });
|
|
103
|
+
await assertTransactionSimulationPasses(txn, decryptionContext.getSolanaContractID().knownChainName);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Ensure the proof-of-permission transaction is valid and matches the decryption context.
|
|
107
|
+
*/
|
|
108
|
+
function assertTransactionValid({ txn, decryptionContext }) {
|
|
109
|
+
let instructions;
|
|
110
|
+
if (txn instanceof web3_js_1.VersionedTransaction) {
|
|
111
|
+
const message = txn.message;
|
|
112
|
+
instructions = message.compiledInstructions.map(ix => {
|
|
113
|
+
if (ix.programIdIndex >= message.staticAccountKeys.length) {
|
|
114
|
+
throw new Error(`Program ID index ${ix.programIdIndex} is out of bounds for static account keys (length: ${message.staticAccountKeys.length}). Address table lookups are not supported for validation.`);
|
|
115
|
+
}
|
|
116
|
+
const programId = message.staticAccountKeys[ix.programIdIndex];
|
|
117
|
+
return { programId, data: Buffer.from(ix.data) };
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
instructions = txn.instructions.map(ix => ({
|
|
122
|
+
programId: ix.programId,
|
|
123
|
+
data: Buffer.from(ix.data)
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
// Check: Ensure there's only 1 instruction
|
|
127
|
+
if (instructions.length !== 1) {
|
|
128
|
+
throw new Error(`transaction must contain exactly 1 instruction, found ${instructions.length}`);
|
|
129
|
+
}
|
|
130
|
+
const instruction = instructions[0];
|
|
131
|
+
// Check: Ensure txn program matches contractIDV0.programId
|
|
132
|
+
if (!instruction.programId.equals(decryptionContext.getSolanaContractID().programId)) {
|
|
133
|
+
throw new Error(`transaction instruction program ID (${instruction.programId.toString()}) does not match contract program ID`);
|
|
134
|
+
}
|
|
135
|
+
// Parse instruction data and ensure parameter equals decryptionContext.domain
|
|
136
|
+
// Anchor instruction format:
|
|
137
|
+
// - First 8 bytes: discriminator (method selector)
|
|
138
|
+
// - Remaining bytes: Borsh-serialized parameters
|
|
139
|
+
// For assert_access(full_blob_name_bytes: Vec<u8>):
|
|
140
|
+
// - After discriminator: 4 bytes (u32 little-endian) for Vec length, then the Vec bytes
|
|
141
|
+
const instructionData = instruction.data;
|
|
142
|
+
if (instructionData.length < 12) {
|
|
143
|
+
throw new Error('instruction data too short (must be at least 12 bytes: 8-byte discriminator + 4-byte Vec length)');
|
|
144
|
+
}
|
|
145
|
+
// Skip 8-byte discriminator
|
|
146
|
+
const paramData = instructionData.slice(8);
|
|
147
|
+
const vecLength = paramData.readUInt32LE(0);
|
|
148
|
+
if (paramData.length < 4 + vecLength) {
|
|
149
|
+
throw new Error(`instruction data incomplete: expected ${4 + vecLength} bytes after discriminator, found ${paramData.length}`);
|
|
150
|
+
}
|
|
151
|
+
const fullBlobNameBytes = paramData.slice(4, 4 + vecLength);
|
|
152
|
+
// Ensure there are no extra bytes after the parameter
|
|
153
|
+
const expectedParamDataLength = 4 + vecLength;
|
|
154
|
+
if (paramData.length > expectedParamDataLength) {
|
|
155
|
+
throw new Error(`instruction data has extra bytes: expected exactly ${expectedParamDataLength} bytes after discriminator, found ${paramData.length}`);
|
|
156
|
+
}
|
|
157
|
+
// Compare with decryptionContext.domain
|
|
158
|
+
if ((0, utils_1.bytesToHex)(fullBlobNameBytes) !== decryptionContext.toHex()) {
|
|
159
|
+
throw new Error(`domain mismatch: instruction parameter does not match decryptionContext.domain`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async function assertTransactionSimulationPasses(txn, chainName) {
|
|
163
|
+
let rpcUrl;
|
|
164
|
+
if (chainName === 'localnet' || chainName === 'localhost') {
|
|
165
|
+
rpcUrl = 'http://127.0.0.1:8899';
|
|
166
|
+
}
|
|
167
|
+
else if (chainName === 'devnet') {
|
|
168
|
+
rpcUrl = 'https://api.devnet.solana.com';
|
|
169
|
+
}
|
|
170
|
+
else if (chainName === 'testnet') {
|
|
171
|
+
rpcUrl = 'https://api.testnet.solana.com';
|
|
172
|
+
}
|
|
173
|
+
else if (chainName === 'mainnet-beta') {
|
|
174
|
+
rpcUrl = 'https://api.mainnet-beta.solana.com';
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
throw new Error(`Unknown chain name: ${chainName}`);
|
|
178
|
+
}
|
|
179
|
+
const connection = new web3_js_1.Connection(rpcUrl, 'confirmed');
|
|
180
|
+
let simulation;
|
|
181
|
+
if (txn instanceof web3_js_1.VersionedTransaction) {
|
|
182
|
+
simulation = await connection.simulateTransaction(txn, {
|
|
183
|
+
sigVerify: true,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
simulation = await connection.simulateTransaction(txn);
|
|
188
|
+
}
|
|
189
|
+
if (simulation.value.err) {
|
|
190
|
+
throw new Error(`transaction simulation failed: ${JSON.stringify(simulation.value.err)}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=solana.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/threshold-ibe/solana.ts"],"names":[],"mappings":"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"}
|