passkey-kit 0.16.5 → 0.17.1
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/README.md +86 -37
- package/SECURITY.md +1 -1
- package/dist/contract-errors.d.ts +1 -1
- package/dist/contract-errors.d.ts.map +1 -1
- package/dist/contract-errors.js +6 -2
- package/dist/contract-errors.js.map +1 -1
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/index.d.ts +1 -1
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/mercury.d.ts +8 -12
- package/dist/indexer/mercury.d.ts.map +1 -1
- package/dist/indexer/mercury.js +128 -37
- package/dist/indexer/mercury.js.map +1 -1
- package/dist/indexer/types.d.ts +41 -5
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/kit/birth-verification.d.ts +45 -0
- package/dist/kit/birth-verification.d.ts.map +1 -0
- package/dist/kit/birth-verification.js +127 -0
- package/dist/kit/birth-verification.js.map +1 -0
- package/dist/kit/deploy-ops.d.ts +2 -2
- package/dist/kit/deploy-ops.d.ts.map +1 -1
- package/dist/kit/deploy-ops.js +2 -2
- package/dist/kit/deploy-ops.js.map +1 -1
- package/dist/kit/wallet-ops.d.ts +14 -2
- package/dist/kit/wallet-ops.d.ts.map +1 -1
- package/dist/kit/wallet-ops.js +50 -3
- package/dist/kit/wallet-ops.js.map +1 -1
- package/dist/kit/webauthn-ops.d.ts +3 -1
- package/dist/kit/webauthn-ops.d.ts.map +1 -1
- package/dist/kit/webauthn-ops.js +8 -2
- package/dist/kit/webauthn-ops.js.map +1 -1
- package/dist/kit/webauthn-verify.d.ts +166 -0
- package/dist/kit/webauthn-verify.d.ts.map +1 -0
- package/dist/kit/webauthn-verify.js +328 -0
- package/dist/kit/webauthn-verify.js.map +1 -0
- package/dist/kit.d.ts +60 -38
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +335 -108
- package/dist/kit.js.map +1 -1
- package/dist/managers/credential-manager.d.ts +2 -2
- package/dist/managers/credential-manager.d.ts.map +1 -1
- package/dist/managers/credential-manager.js +3 -3
- package/dist/managers/credential-manager.js.map +1 -1
- package/dist/managers/signer-manager.d.ts +10 -4
- package/dist/managers/signer-manager.d.ts.map +1 -1
- package/dist/managers/signer-manager.js +11 -5
- package/dist/managers/signer-manager.js.map +1 -1
- package/dist/managers/submission-manager.d.ts +2 -1
- package/dist/managers/submission-manager.d.ts.map +1 -1
- package/dist/managers/submission-manager.js +2 -2
- package/dist/managers/submission-manager.js.map +1 -1
- package/dist/server.d.ts +7 -5
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -5
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +8 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +4 -8
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -8
- package/dist/utils.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mercury.d.ts","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAS3D,OAAO,KAAK,EACV,wBAAwB,
|
|
1
|
+
{"version":3,"file":"mercury.d.ts","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAS3D,OAAO,KAAK,EACV,wBAAwB,EAExB,aAAa,EACb,aAAa,EAEb,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,GACxB,MAAM,GAAG,SAAS,CAMpB;AAsCD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,qBAAa,cAAe,YAAW,aAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IASzD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5D,iBAAiB,EAAE,MAAM,GACxB,cAAc,GAAG,IAAI;IAMxB;;;;OAIG;YACW,GAAG;IAqCX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8BzD;;;;;;OAMG;YACW,WAAW;IASnB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAYjE;;;;;;;OAOG;YACW,iBAAiB;IAiCzB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;CAiBvC"}
|
package/dist/indexer/mercury.js
CHANGED
|
@@ -29,7 +29,6 @@ import { getSigner } from "../kit/wallet-ops.js";
|
|
|
29
29
|
import { contractDataExists } from "../rpc-data.js";
|
|
30
30
|
import base64url from "../base64url.js";
|
|
31
31
|
import { signerKeyToContractScVal, walletSpec } from "./codec.js";
|
|
32
|
-
import { deriveContractAddress } from "../utils.js";
|
|
33
32
|
/**
|
|
34
33
|
* Resolve the hosted passkey-indexer base URL for a network. Mercury indexes
|
|
35
34
|
* both testnet and mainnet; any other network returns `undefined` (no hosted
|
|
@@ -139,50 +138,34 @@ export class MercuryIndexer {
|
|
|
139
138
|
? `/api/lookup/${base64url.toBuffer(key.value).toString("hex")}`
|
|
140
139
|
: `/api/lookup/address/${key.value}`;
|
|
141
140
|
const res = await this.get(path);
|
|
142
|
-
|
|
143
|
-
return this.confirmCandidates(candidates, key);
|
|
141
|
+
return this.confirmCandidates(parseLookupResponse(res), key);
|
|
144
142
|
}
|
|
145
143
|
/**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
144
|
+
* Keep a candidate only when it still holds the signer entry on-chain.
|
|
145
|
+
* Live-signer presence is not birth verification; birth fields pass through
|
|
146
|
+
* unchanged for the kit to check against the creating transaction.
|
|
149
147
|
*
|
|
150
|
-
* Fail-CLOSED: when candidates exist
|
|
151
|
-
*
|
|
152
|
-
* Secp256r1 keys) — this throws instead of returning unconfirmed rows. An
|
|
153
|
-
* unverifiable answer must never be handed to a caller that will route
|
|
154
|
-
* deposits or identity to it.
|
|
148
|
+
* Fail-CLOSED: when candidates exist without `rpc`, this throws instead of
|
|
149
|
+
* returning unconfirmed rows.
|
|
155
150
|
*/
|
|
156
|
-
async confirmCandidates(
|
|
157
|
-
const { rpc
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
151
|
+
async confirmCandidates(lookup, key) {
|
|
152
|
+
const { rpc } = this.config;
|
|
153
|
+
if (!lookup.complete)
|
|
154
|
+
return lookup;
|
|
155
|
+
if (lookup.candidates.length > 0 && !rpc) {
|
|
156
|
+
throw new IndexerError("Cannot confirm reverse-lookup candidates: configure `rpc`; " +
|
|
157
|
+
"unconfirmed indexer rows are never returned", PasskeyKitErrorCode.INDEXER_NOT_CONFIGURED, { key: key.key, candidates: lookup.candidates.length });
|
|
158
|
+
}
|
|
159
|
+
if (!rpc || lookup.candidates.length === 0) {
|
|
160
|
+
return lookup;
|
|
164
161
|
}
|
|
165
162
|
const confirmed = [];
|
|
166
|
-
for (const candidate of candidates) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// Matching derivation is not confirmation: `derive(keyId)` is exactly
|
|
170
|
-
// the address an attacker can squat, so accepting it unread would
|
|
171
|
-
// "confirm" the one candidate we have the least reason to trust.
|
|
172
|
-
// This does not defeat a squat running genuine code with the victim
|
|
173
|
-
// installed as a signer — nothing checked here can — it only stops
|
|
174
|
-
// unread rows being handed back as confirmed.
|
|
175
|
-
const signer = await getSigner({ rpc, spec: walletSpec() }, candidate, key);
|
|
176
|
-
if (signer)
|
|
177
|
-
confirmed.push(candidate);
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
// No rpc: derivation is the only available corroboration (fail-closed
|
|
181
|
-
// above guarantees one of the two exists).
|
|
182
|
-
if (candidate === derived)
|
|
163
|
+
for (const candidate of lookup.candidates) {
|
|
164
|
+
const signer = await getSigner({ rpc, spec: walletSpec() }, candidate.contractId, key);
|
|
165
|
+
if (signer)
|
|
183
166
|
confirmed.push(candidate);
|
|
184
167
|
}
|
|
185
|
-
return confirmed;
|
|
168
|
+
return { ...lookup, candidates: confirmed };
|
|
186
169
|
}
|
|
187
170
|
async health() {
|
|
188
171
|
try {
|
|
@@ -229,6 +212,114 @@ function limitsFromJson(limits) {
|
|
|
229
212
|
}
|
|
230
213
|
return out;
|
|
231
214
|
}
|
|
215
|
+
const HEX_64 = /^[0-9a-f]{64}$/;
|
|
216
|
+
function isRecord(value) {
|
|
217
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
218
|
+
}
|
|
219
|
+
function readString(record, keys) {
|
|
220
|
+
for (const key of keys) {
|
|
221
|
+
const value = record[key];
|
|
222
|
+
if (typeof value === "string" && value.trim() !== "")
|
|
223
|
+
return value.trim();
|
|
224
|
+
}
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
function parseHex64(value) {
|
|
228
|
+
if (!value)
|
|
229
|
+
return undefined;
|
|
230
|
+
const hex = value.toLowerCase().replace(/^0x/, "");
|
|
231
|
+
return HEX_64.test(hex) ? hex : undefined;
|
|
232
|
+
}
|
|
233
|
+
function parseLedger(value) {
|
|
234
|
+
if (typeof value === "number" && Number.isInteger(value) && value >= 1) {
|
|
235
|
+
return value;
|
|
236
|
+
}
|
|
237
|
+
if (typeof value === "string" && /^(?:0|[1-9]\d*)$/.test(value)) {
|
|
238
|
+
const ledger = Number(value);
|
|
239
|
+
return ledger >= 1 ? ledger : undefined;
|
|
240
|
+
}
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
function parseWalletRef(value) {
|
|
244
|
+
if (!isRecord(value))
|
|
245
|
+
return undefined;
|
|
246
|
+
const contractId = readString(value, ["contract_id", "contractId"]);
|
|
247
|
+
if (!contractId || !contractId.startsWith("C"))
|
|
248
|
+
return undefined;
|
|
249
|
+
const candidate = { contractId };
|
|
250
|
+
const birthWasmHash = parseHex64(readString(value, ["birth_wasm_hash", "birthWasmHash"]));
|
|
251
|
+
const creationTransactionHash = parseHex64(readString(value, [
|
|
252
|
+
"creation_transaction_hash",
|
|
253
|
+
"creationTransactionHash",
|
|
254
|
+
"creation_tx",
|
|
255
|
+
]));
|
|
256
|
+
const creationLedger = parseLedger(value.creation_ledger ?? value.creationLedger);
|
|
257
|
+
if (birthWasmHash)
|
|
258
|
+
candidate.birthWasmHash = birthWasmHash;
|
|
259
|
+
if (creationTransactionHash) {
|
|
260
|
+
candidate.creationTransactionHash = creationTransactionHash;
|
|
261
|
+
}
|
|
262
|
+
if (creationLedger !== undefined)
|
|
263
|
+
candidate.creationLedger = creationLedger;
|
|
264
|
+
return candidate;
|
|
265
|
+
}
|
|
266
|
+
function candidateHasBirth(candidate) {
|
|
267
|
+
return (parseHex64(candidate.birthWasmHash) !== undefined &&
|
|
268
|
+
parseHex64(candidate.creationTransactionHash) !== undefined &&
|
|
269
|
+
candidate.creationLedger !== undefined);
|
|
270
|
+
}
|
|
271
|
+
function sameContractIds(candidates, otherRows) {
|
|
272
|
+
const otherCandidates = otherRows
|
|
273
|
+
.map(parseWalletRef)
|
|
274
|
+
.filter((candidate) => candidate !== undefined);
|
|
275
|
+
if (otherCandidates.length !== otherRows.length)
|
|
276
|
+
return false;
|
|
277
|
+
const candidateIds = new Set(candidates.map(({ contractId }) => contractId));
|
|
278
|
+
const otherIds = new Set(otherCandidates.map(({ contractId }) => contractId));
|
|
279
|
+
return (candidateIds.size === otherIds.size &&
|
|
280
|
+
[...candidateIds].every((contractId) => otherIds.has(contractId)));
|
|
281
|
+
}
|
|
282
|
+
/** Map a lookup JSON body onto {@link WalletCandidateLookup} without inventing birth data. */
|
|
283
|
+
function parseLookupResponse(res) {
|
|
284
|
+
if (!isRecord(res)) {
|
|
285
|
+
return { complete: false, candidates: [] };
|
|
286
|
+
}
|
|
287
|
+
const rows = res.schema === 2 && Array.isArray(res.candidates)
|
|
288
|
+
? res.candidates
|
|
289
|
+
: Array.isArray(res.wallets)
|
|
290
|
+
? res.wallets
|
|
291
|
+
: Array.isArray(res.candidates)
|
|
292
|
+
? res.candidates
|
|
293
|
+
: [];
|
|
294
|
+
const candidates = rows
|
|
295
|
+
.map(parseWalletRef)
|
|
296
|
+
.filter((candidate) => candidate !== undefined);
|
|
297
|
+
const indexedThroughLedger = parseLedger(res.indexed_through_ledger ?? res.indexedThroughLedger);
|
|
298
|
+
const claimedComplete = res.complete === true;
|
|
299
|
+
const dualShapeConsistent = res.schema !== 2 ||
|
|
300
|
+
!Array.isArray(res.candidates) ||
|
|
301
|
+
!Array.isArray(res.wallets) ||
|
|
302
|
+
sameContractIds(candidates, res.wallets);
|
|
303
|
+
const complete = res.schema === 2 &&
|
|
304
|
+
claimedComplete &&
|
|
305
|
+
indexedThroughLedger !== undefined &&
|
|
306
|
+
dualShapeConsistent &&
|
|
307
|
+
candidates.every(candidateHasBirth);
|
|
308
|
+
if (complete) {
|
|
309
|
+
return {
|
|
310
|
+
complete: true,
|
|
311
|
+
schema: 2,
|
|
312
|
+
indexedThroughLedger,
|
|
313
|
+
candidates: candidates.filter(candidateHasBirth),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
return {
|
|
317
|
+
complete: false,
|
|
318
|
+
...(typeof res.schema === "number" ? { schema: res.schema } : {}),
|
|
319
|
+
...(indexedThroughLedger !== undefined ? { indexedThroughLedger } : {}),
|
|
320
|
+
candidates,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
232
323
|
/** Map a fully-decoded passkey-indexer signer row onto a {@link WalletSigner}. */
|
|
233
324
|
function jsonToWalletSigner(json) {
|
|
234
325
|
const publicKey = json.publicKey
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mercury.js","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mercury.js","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"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"}
|
package/dist/indexer/types.d.ts
CHANGED
|
@@ -44,6 +44,43 @@ export interface IndexerHealth {
|
|
|
44
44
|
/** Optional human-readable detail. */
|
|
45
45
|
detail?: string;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* One reverse-lookup wallet, including birth metadata when the indexer
|
|
49
|
+
* actually supplied it. Missing birth fields stay absent; callers must not
|
|
50
|
+
* treat a live signer as proof of birth.
|
|
51
|
+
*/
|
|
52
|
+
export interface WalletCandidate {
|
|
53
|
+
/** Wallet contract id (`C…`). */
|
|
54
|
+
contractId: string;
|
|
55
|
+
/** WASM hash from the creating transaction, lowercase hex. */
|
|
56
|
+
birthWasmHash: string;
|
|
57
|
+
/** Creating transaction hash, lowercase hex. */
|
|
58
|
+
creationTransactionHash: string;
|
|
59
|
+
/** Ledger that created the contract. */
|
|
60
|
+
creationLedger: number;
|
|
61
|
+
}
|
|
62
|
+
/** An incomplete row retained only for diagnostics. It is never connectable. */
|
|
63
|
+
export type IncompleteWalletCandidate = Partial<WalletCandidate> & {
|
|
64
|
+
contractId: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Reverse-lookup result. `complete` is true only when the indexer claimed a
|
|
68
|
+
* finished scan and every candidate carries complete birth claims. A 404,
|
|
69
|
+
* an old payload, or a missing field is `complete: false`.
|
|
70
|
+
*/
|
|
71
|
+
export type WalletCandidateLookup = {
|
|
72
|
+
schema: 2;
|
|
73
|
+
complete: true;
|
|
74
|
+
indexedThroughLedger: number;
|
|
75
|
+
/** Live-signer-confirmed candidates with complete birth metadata. */
|
|
76
|
+
candidates: WalletCandidate[];
|
|
77
|
+
} | {
|
|
78
|
+
schema?: number;
|
|
79
|
+
complete: false;
|
|
80
|
+
indexedThroughLedger?: number;
|
|
81
|
+
/** Diagnostic rows only. Callers must reject the full response. */
|
|
82
|
+
candidates: IncompleteWalletCandidate[];
|
|
83
|
+
};
|
|
47
84
|
/**
|
|
48
85
|
* A pluggable signer indexer.
|
|
49
86
|
*
|
|
@@ -55,15 +92,14 @@ export interface IndexerHealth {
|
|
|
55
92
|
export interface SignerIndexer {
|
|
56
93
|
/** Enumerate all signers currently indexed for a wallet. */
|
|
57
94
|
getSigners(wallet: string): Promise<WalletSigner[]>;
|
|
58
|
-
/** Reverse lookup:
|
|
59
|
-
findWallets(key: SignerKey): Promise<
|
|
95
|
+
/** Reverse lookup: wallets a signer key belongs to, with birth metadata. */
|
|
96
|
+
findWallets(key: SignerKey): Promise<WalletCandidateLookup>;
|
|
60
97
|
/** Probe backend health (degrades to `{ ok: false }` rather than throwing). */
|
|
61
98
|
health(): Promise<IndexerHealth>;
|
|
62
99
|
}
|
|
63
100
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* address from the keyId (deterministic derivation) — no unverified `res[0]`.
|
|
101
|
+
* @deprecated Retained for source compatibility. Derivation does not confirm
|
|
102
|
+
* wallet ownership, so Mercury ignores these values and requires RPC.
|
|
67
103
|
*/
|
|
68
104
|
export interface FindWalletsHardeningDeps {
|
|
69
105
|
networkPassphrase: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,GAAG,EAAE,SAAS,CAAC;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gCAAgC;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,GAAG,EAAE,SAAS,CAAC;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gCAAgC;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,uBAAuB,EAAE,MAAM,CAAC;IAChC,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG;IACjE,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mEAAmE;IACnE,UAAU,EAAE,yBAAyB,EAAE,CAAC;CACzC,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpD,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,+EAA+E;IAC/E,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify a wallet's immutable CreateContractV2 birth transaction.
|
|
3
|
+
*
|
|
4
|
+
* Indexer birth fields are discovery claims. This module treats Stellar RPC
|
|
5
|
+
* as the source of truth and accepts only a successful transaction that
|
|
6
|
+
* directly created the candidate address from an approved WASM hash.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import { xdr } from "@stellar/stellar-sdk";
|
|
11
|
+
import { type Server } from "@stellar/stellar-sdk/rpc";
|
|
12
|
+
import type { Horizon } from "@stellar/stellar-sdk";
|
|
13
|
+
import type { WalletCandidate } from "../indexer/types.js";
|
|
14
|
+
/** A verified, immutable wallet-birth fact. */
|
|
15
|
+
export interface VerifiedWalletBirth extends WalletCandidate {
|
|
16
|
+
/** The lowercase hash read from the verified CreateContractV2 operation. */
|
|
17
|
+
birthWasmHash: string;
|
|
18
|
+
}
|
|
19
|
+
/** A named reason why a wallet-birth claim failed verification. */
|
|
20
|
+
export type WalletBirthFailure = "invalid_candidate" | "transaction_not_found" | "transaction_failed" | "transaction_hash_mismatch" | "ledger_mismatch" | "contract_not_created" | "ambiguous_creation" | "wasm_mismatch" | "wasm_not_accepted";
|
|
21
|
+
export type WalletBirthResult = {
|
|
22
|
+
ok: true;
|
|
23
|
+
birth: VerifiedWalletBirth;
|
|
24
|
+
} | {
|
|
25
|
+
ok: false;
|
|
26
|
+
reason: WalletBirthFailure;
|
|
27
|
+
detail: string;
|
|
28
|
+
};
|
|
29
|
+
export interface WalletBirthVerificationDeps {
|
|
30
|
+
rpc: Server;
|
|
31
|
+
/** Optional full-history source used after Stellar RPC retention expires. */
|
|
32
|
+
history?: Pick<Horizon.Server, "transactions">;
|
|
33
|
+
networkPassphrase: string;
|
|
34
|
+
acceptedBirthWasmHashes: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
/** Derive a contract address from one CreateContractV2 preimage. */
|
|
37
|
+
export declare function contractIdFromCreateV2(networkPassphrase: string, create: xdr.CreateContractArgsV2): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Verify an indexer-supplied wallet-birth claim against Stellar RPC.
|
|
40
|
+
*
|
|
41
|
+
* The function requires a direct CreateContractV2 operation. This matches the
|
|
42
|
+
* passkey-kit deployment path and excludes unverifiable proxy deployments.
|
|
43
|
+
*/
|
|
44
|
+
export declare function verifyWalletBirth(deps: WalletBirthVerificationDeps, candidate: WalletCandidate): Promise<WalletBirthResult>;
|
|
45
|
+
//# sourceMappingURL=birth-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"birth-verification.d.ts","sourceRoot":"","sources":["../../src/kit/birth-verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAKL,GAAG,EACJ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAC1B,mBAAmB,GACnB,uBAAuB,GACvB,oBAAoB,GACpB,2BAA2B,GAC3B,iBAAiB,GACjB,sBAAsB,GACtB,oBAAoB,GACpB,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GACxC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAaD,oEAAoE;AACpE,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,GAAG,CAAC,oBAAoB,GAC/B,MAAM,GAAG,SAAS,CAapB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,2BAA2B,EACjC,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAiI5B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify a wallet's immutable CreateContractV2 birth transaction.
|
|
3
|
+
*
|
|
4
|
+
* Indexer birth fields are discovery claims. This module treats Stellar RPC
|
|
5
|
+
* as the source of truth and accepts only a successful transaction that
|
|
6
|
+
* directly created the candidate address from an approved WASM hash.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import { FeeBumpTransaction, StrKey, TransactionBuilder, hash, xdr, } from "@stellar/stellar-sdk";
|
|
11
|
+
import { Api } from "@stellar/stellar-sdk/rpc";
|
|
12
|
+
const HASH_HEX = /^[0-9a-f]{64}$/;
|
|
13
|
+
function normalizeHash(value) {
|
|
14
|
+
const normalized = value.toLowerCase();
|
|
15
|
+
return HASH_HEX.test(normalized) ? normalized : undefined;
|
|
16
|
+
}
|
|
17
|
+
function fail(reason, detail) {
|
|
18
|
+
return { ok: false, reason, detail };
|
|
19
|
+
}
|
|
20
|
+
/** Derive a contract address from one CreateContractV2 preimage. */
|
|
21
|
+
export function contractIdFromCreateV2(networkPassphrase, create) {
|
|
22
|
+
const preimage = create.contractIdPreimage();
|
|
23
|
+
if (preimage.switch().name !== "contractIdPreimageFromAddress") {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const hashPreimage = xdr.HashIdPreimage.envelopeTypeContractId(new xdr.HashIdPreimageContractId({
|
|
27
|
+
networkId: hash(Buffer.from(networkPassphrase)),
|
|
28
|
+
contractIdPreimage: preimage,
|
|
29
|
+
}));
|
|
30
|
+
return StrKey.encodeContract(hash(hashPreimage.toXDR()));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Verify an indexer-supplied wallet-birth claim against Stellar RPC.
|
|
34
|
+
*
|
|
35
|
+
* The function requires a direct CreateContractV2 operation. This matches the
|
|
36
|
+
* passkey-kit deployment path and excludes unverifiable proxy deployments.
|
|
37
|
+
*/
|
|
38
|
+
export async function verifyWalletBirth(deps, candidate) {
|
|
39
|
+
const claimedWasm = normalizeHash(candidate.birthWasmHash);
|
|
40
|
+
const txHash = normalizeHash(candidate.creationTransactionHash);
|
|
41
|
+
const accepted = new Set(deps.acceptedBirthWasmHashes.map(normalizeHash).filter((value) => !!value));
|
|
42
|
+
if (!claimedWasm || !txHash || !Number.isSafeInteger(candidate.creationLedger)) {
|
|
43
|
+
return fail("invalid_candidate", "wallet birth metadata is malformed");
|
|
44
|
+
}
|
|
45
|
+
const rpcResponse = await deps.rpc.getTransaction(txHash);
|
|
46
|
+
let ledger;
|
|
47
|
+
let envelopeXdr;
|
|
48
|
+
if (rpcResponse.status === Api.GetTransactionStatus.SUCCESS) {
|
|
49
|
+
ledger = rpcResponse.ledger;
|
|
50
|
+
envelopeXdr = rpcResponse.envelopeXdr;
|
|
51
|
+
}
|
|
52
|
+
else if (rpcResponse.status === Api.GetTransactionStatus.FAILED) {
|
|
53
|
+
return fail("transaction_failed", "the claimed creation transaction did not succeed");
|
|
54
|
+
}
|
|
55
|
+
else if (deps.history) {
|
|
56
|
+
try {
|
|
57
|
+
const historyResponse = await deps.history
|
|
58
|
+
.transactions()
|
|
59
|
+
.transaction(txHash)
|
|
60
|
+
.call();
|
|
61
|
+
if (!historyResponse.successful) {
|
|
62
|
+
return fail("transaction_failed", "the historical creation transaction did not succeed");
|
|
63
|
+
}
|
|
64
|
+
if (historyResponse.hash.toLowerCase() !== txHash) {
|
|
65
|
+
return fail("transaction_hash_mismatch", "the history response returned a different transaction hash");
|
|
66
|
+
}
|
|
67
|
+
ledger = historyResponse.ledger_attr;
|
|
68
|
+
envelopeXdr = historyResponse.envelope_xdr;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const status = typeof error === "object" && error !== null && "response" in error
|
|
72
|
+
? error.response?.status
|
|
73
|
+
: undefined;
|
|
74
|
+
if (status !== 404)
|
|
75
|
+
throw error;
|
|
76
|
+
return fail("transaction_not_found", "the creation transaction is unavailable from RPC and history");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return fail("transaction_not_found", "the creation transaction is outside RPC retention and no history source is configured");
|
|
81
|
+
}
|
|
82
|
+
if (ledger !== candidate.creationLedger) {
|
|
83
|
+
return fail("ledger_mismatch", `creation ledger ${ledger} does not equal claimed ledger ${candidate.creationLedger}`);
|
|
84
|
+
}
|
|
85
|
+
const parsed = TransactionBuilder.fromXDR(envelopeXdr, deps.networkPassphrase);
|
|
86
|
+
if (parsed.hash().toString("hex") !== txHash) {
|
|
87
|
+
return fail("transaction_hash_mismatch", "the transaction envelope does not match the claimed transaction hash");
|
|
88
|
+
}
|
|
89
|
+
const transaction = parsed instanceof FeeBumpTransaction ? parsed.innerTransaction : parsed;
|
|
90
|
+
const matches = [];
|
|
91
|
+
for (const operation of transaction.operations) {
|
|
92
|
+
if (operation.type !== "invokeHostFunction" ||
|
|
93
|
+
operation.func.switch().name !== "hostFunctionTypeCreateContractV2") {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const create = operation.func.createContractV2();
|
|
97
|
+
if (contractIdFromCreateV2(deps.networkPassphrase, create) === candidate.contractId) {
|
|
98
|
+
matches.push(create);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (matches.length === 0) {
|
|
102
|
+
return fail("contract_not_created", "the transaction did not directly create the candidate contract");
|
|
103
|
+
}
|
|
104
|
+
if (matches.length !== 1) {
|
|
105
|
+
return fail("ambiguous_creation", "the transaction contains multiple matching CreateContractV2 operations");
|
|
106
|
+
}
|
|
107
|
+
const executable = matches[0].executable();
|
|
108
|
+
if (executable.switch().name !== "contractExecutableWasm") {
|
|
109
|
+
return fail("contract_not_created", "the matching creation did not use WASM code");
|
|
110
|
+
}
|
|
111
|
+
const actualWasm = Buffer.from(executable.wasmHash()).toString("hex");
|
|
112
|
+
if (actualWasm !== claimedWasm) {
|
|
113
|
+
return fail("wasm_mismatch", `birth WASM ${actualWasm} does not equal claimed WASM ${claimedWasm}`);
|
|
114
|
+
}
|
|
115
|
+
if (!accepted.has(actualWasm)) {
|
|
116
|
+
return fail("wasm_not_accepted", `birth WASM ${actualWasm} is not accepted`);
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
ok: true,
|
|
120
|
+
birth: {
|
|
121
|
+
...candidate,
|
|
122
|
+
birthWasmHash: actualWasm,
|
|
123
|
+
creationTransactionHash: txHash,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=birth-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"birth-verification.js","sourceRoot":"","sources":["../../src/kit/birth-verification.ts"],"names":[],"mappings":"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"}
|
package/dist/kit/deploy-ops.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { Keypair } from "@stellar/stellar-sdk";
|
|
12
12
|
import type { AssembledTransaction } from "@stellar/stellar-sdk/contract";
|
|
13
|
-
import { Client as PasskeyClient } from "passkey-kit-sdk";
|
|
13
|
+
import { Client as PasskeyClient, type Secp256r1Signature } from "passkey-kit-sdk";
|
|
14
14
|
/**
|
|
15
15
|
* Resolve the address-derivation deployer keypair from an optional secret.
|
|
16
16
|
*
|
|
@@ -43,5 +43,5 @@ export declare function buildDeployTransaction(deps: {
|
|
|
43
43
|
deployerPublicKey: string;
|
|
44
44
|
usingSharedDeployer: boolean;
|
|
45
45
|
timeoutInSeconds: number;
|
|
46
|
-
}, keyId: Buffer, publicKey: Uint8Array): Promise<AssembledTransaction<PasskeyClient>>;
|
|
46
|
+
}, keyId: Buffer, publicKey: Uint8Array, proof: Secp256r1Signature): Promise<AssembledTransaction<PasskeyClient>>;
|
|
47
47
|
//# sourceMappingURL=deploy-ops.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-ops.d.ts","sourceRoot":"","sources":["../../src/kit/deploy-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EACL,MAAM,IAAI,aAAa,EAExB,MAAM,iBAAiB,CAAC;AAKzB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAY9D;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,EAC9D,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,EACD,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"deploy-ops.d.ts","sourceRoot":"","sources":["../../src/kit/deploy-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EACL,MAAM,IAAI,aAAa,EACvB,KAAK,kBAAkB,EAExB,MAAM,iBAAiB,CAAC;AAKzB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAY9D;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,EAC9D,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,EACD,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAyB9C"}
|
package/dist/kit/deploy-ops.js
CHANGED
|
@@ -47,7 +47,7 @@ export function deriveWalletAddress(deps, keyId) {
|
|
|
47
47
|
* uses the null carrier account instead of reading the deployer's sequence.
|
|
48
48
|
* Custom deployers keep the normal account-source path.
|
|
49
49
|
*/
|
|
50
|
-
export async function buildDeployTransaction(deps, keyId, publicKey) {
|
|
50
|
+
export async function buildDeployTransaction(deps, keyId, publicKey, proof) {
|
|
51
51
|
const signer = {
|
|
52
52
|
tag: "Secp256r1",
|
|
53
53
|
values: [
|
|
@@ -58,7 +58,7 @@ export async function buildDeployTransaction(deps, keyId, publicKey) {
|
|
|
58
58
|
{ tag: "Persistent", values: undefined },
|
|
59
59
|
],
|
|
60
60
|
};
|
|
61
|
-
return PasskeyClient.deploy({ signer }, {
|
|
61
|
+
return PasskeyClient.deploy({ signer, proof }, {
|
|
62
62
|
rpcUrl: deps.rpcUrl,
|
|
63
63
|
wasmHash: deps.walletWasmHash,
|
|
64
64
|
networkPassphrase: deps.networkPassphrase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-ops.js","sourceRoot":"","sources":["../../src/kit/deploy-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,MAAM,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"deploy-ops.js","sourceRoot":"","sources":["../../src/kit/deploy-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,MAAM,IAAI,aAAa,GAGxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,YAAqB;IACnD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,kBAAkB,CAC1B,sDAAsD,EACtD,mBAAmB,CAAC,cAAc,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CACjC,IAA8D,EAC9D,KAAa;IAEb,OAAO,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAOC,EACD,KAAa,EACb,SAAqB,EACrB,KAAyB;IAEzB,MAAM,MAAM,GAAc;QACxB,GAAG,EAAE,WAAW;QAChB,MAAM,EAAE;YACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACtB,CAAC,SAAS,CAAC,EAAE,yBAAyB;YACtC,CAAC,SAAS,CAAC,EAAE,0BAA0B;YACvC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE;SACzC;KACF,CAAC;IAEF,OAAO,aAAa,CAAC,MAAM,CACzB,EAAE,MAAM,EAAE,KAAK,EAAE,EACjB;QACE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,cAAc;QAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,GAAG,CAAC,IAAI,CAAC,mBAAmB;YAC1B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACrC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/kit/wallet-ops.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { type Server } from "@stellar/stellar-sdk/rpc";
|
|
16
16
|
import type { AssembledTransaction, Result, Spec as ContractSpec } from "@stellar/stellar-sdk/contract";
|
|
17
|
-
import { Client as PasskeyClient, type SignerKey as SDKSignerKey, type SignerLimits as SDKSignerLimits, type SignerVal } from "passkey-kit-sdk";
|
|
17
|
+
import { Client as PasskeyClient, type Signer as SDKSigner, type Secp256r1Signature, type SignerKey as SDKSignerKey, type SignerLimits as SDKSignerLimits, type SignerVal } from "passkey-kit-sdk";
|
|
18
18
|
import { SignerStore, type SignerKey, type SignerLimits } from "../types.js";
|
|
19
19
|
/**
|
|
20
20
|
* The result of a signer-write / upgrade transaction. The reworked contract's
|
|
@@ -28,14 +28,26 @@ type SignerFn = "add_signer" | "update_signer";
|
|
|
28
28
|
export declare function toContractSignerKey({ key, value }: SignerKey): SDKSignerKey;
|
|
29
29
|
/** Encode SDK-side {@link SignerLimits} into the contract's `SignerLimits`. */
|
|
30
30
|
export declare function toContractSignerLimits(limits: SignerLimits): SDKSignerLimits;
|
|
31
|
+
export declare function buildSecp256r1Signer(keyId: string | Uint8Array, publicKey: string | Uint8Array, limits: SignerLimits, store: SignerStore, expiration?: number): SDKSigner;
|
|
31
32
|
/** Shared deps for building signer-write transactions. */
|
|
32
33
|
export interface WalletWriteDeps {
|
|
33
34
|
wallet: PasskeyClient;
|
|
34
35
|
timeoutInSeconds: number;
|
|
35
36
|
}
|
|
36
37
|
export declare function buildSecp256r1SignerTx(deps: WalletWriteDeps, fn: SignerFn, keyId: string | Uint8Array, publicKey: string | Uint8Array, limits: SignerLimits, store: SignerStore, expiration?: number): Promise<WalletTx>;
|
|
38
|
+
/** Build a proof-carrying Secp256r1 signer addition. */
|
|
39
|
+
export declare function buildAddSecp256r1SignerTx(deps: WalletWriteDeps, keyId: string | Uint8Array, publicKey: string | Uint8Array, limits: SignerLimits, store: SignerStore, proof: Secp256r1Signature, expiration?: number): Promise<WalletTx>;
|
|
37
40
|
export declare function buildEd25519SignerTx(deps: WalletWriteDeps, fn: SignerFn, publicKey: string, limits: SignerLimits, store: SignerStore, expiration?: number): Promise<WalletTx>;
|
|
38
|
-
|
|
41
|
+
/** Options for {@link buildPolicySignerTx}. */
|
|
42
|
+
export interface PolicySignerTxOptions {
|
|
43
|
+
/**
|
|
44
|
+
* Allow the policy's `install` hook to add wallet-authorized sub-invocations
|
|
45
|
+
* to the `add_signer` auth entry. Default `false`: the build throws a
|
|
46
|
+
* {@link ValidationError} if the simulated entry carries any sub-invocation.
|
|
47
|
+
*/
|
|
48
|
+
allowInstallSubInvocations?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare function buildPolicySignerTx(deps: WalletWriteDeps, fn: SignerFn, policy: string, limits: SignerLimits, store: SignerStore, expiration?: number, options?: PolicySignerTxOptions): Promise<WalletTx>;
|
|
39
51
|
export declare function buildRemoveSignerTx(deps: WalletWriteDeps, signerKey: SignerKey): Promise<WalletTx>;
|
|
40
52
|
/** Build an `upgrade(new_wasm_hash)` transaction (renamed from update_contract_code). */
|
|
41
53
|
export declare function buildUpgradeTx(deps: WalletWriteDeps, newWasmHash: Buffer | Uint8Array): Promise<WalletTx>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-ops.d.ts","sourceRoot":"","sources":["../../src/kit/wallet-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EACV,oBAAoB,EACpB,MAAM,EACN,IAAI,IAAI,YAAY,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,MAAM,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"wallet-ops.d.ts","sourceRoot":"","sources":["../../src/kit/wallet-ops.ts"],"names":[],"mappings":"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"}
|