@fairmint/canton-node-sdk 0.0.119 → 0.0.120
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 +5 -0
- package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.d.ts +4 -0
- package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.js +4 -0
- package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.d.ts +2 -4
- package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.js +4 -5
- package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.d.ts +34 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.d.ts.map +1 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.js +13 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.js.map +1 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.d.ts +2 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.js +2 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.d.ts +53 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.d.ts.map +1 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.js +13 -0
- package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.js.map +1 -0
- package/build/src/clients/ledger-json-api/operations/v2/users/create-user.d.ts +0 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/create-user.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/get-user.d.ts +0 -2
- package/build/src/clients/ledger-json-api/operations/v2/users/get-user.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/get-user.js +2 -4
- package/build/src/clients/ledger-json-api/operations/v2/users/get-user.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.d.ts +28 -7
- package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.js +7 -4
- package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.d.ts +0 -2
- package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.js +2 -4
- package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.d.ts +0 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.js +5 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/update-user.d.ts +0 -1
- package/build/src/clients/ledger-json-api/operations/v2/users/update-user.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.d.ts +96 -0
- package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.js +107 -1
- package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.js.map +1 -1
- package/build/src/clients/ledger-json-api/schemas/operations/users.d.ts +29 -14
- package/build/src/clients/ledger-json-api/schemas/operations/users.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/schemas/operations/users.js +9 -20
- package/build/src/clients/ledger-json-api/schemas/operations/users.js.map +1 -1
- package/build/src/clients/validator-api/ValidatorApiClient.generated.d.ts +6 -0
- package/build/src/clients/validator-api/ValidatorApiClient.generated.d.ts.map +1 -1
- package/build/src/clients/validator-api/ValidatorApiClient.generated.js +6 -0
- package/build/src/clients/validator-api/ValidatorApiClient.generated.js.map +1 -1
- package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.d.ts +22 -0
- package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.d.ts.map +1 -0
- package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.js +29 -0
- package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.js.map +1 -0
- package/build/src/clients/validator-api/operations/v0/admin/index.d.ts +2 -0
- package/build/src/clients/validator-api/operations/v0/admin/index.d.ts.map +1 -1
- package/build/src/clients/validator-api/operations/v0/admin/index.js +2 -0
- package/build/src/clients/validator-api/operations/v0/admin/index.js.map +1 -1
- package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.d.ts +25 -0
- package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.d.ts.map +1 -0
- package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.js +36 -0
- package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.js.map +1 -0
- package/build/src/clients/validator-api/operations/v0/get-validator-user-info.d.ts +17 -0
- package/build/src/clients/validator-api/operations/v0/get-validator-user-info.d.ts.map +1 -0
- package/build/src/clients/validator-api/operations/v0/get-validator-user-info.js +22 -0
- package/build/src/clients/validator-api/operations/v0/get-validator-user-info.js.map +1 -0
- package/build/src/clients/validator-api/operations/v0/index.d.ts +1 -0
- package/build/src/clients/validator-api/operations/v0/index.d.ts.map +1 -1
- package/build/src/clients/validator-api/operations/v0/index.js +1 -0
- package/build/src/clients/validator-api/operations/v0/index.js.map +1 -1
- package/build/src/core/logging/FileLogger.d.ts.map +1 -1
- package/build/src/core/logging/FileLogger.js +1 -1
- package/build/src/core/logging/FileLogger.js.map +1 -1
- package/build/src/utils/external-signing/allocate-external-party.d.ts +12 -0
- package/build/src/utils/external-signing/allocate-external-party.d.ts.map +1 -0
- package/build/src/utils/external-signing/allocate-external-party.js +13 -0
- package/build/src/utils/external-signing/allocate-external-party.js.map +1 -0
- package/build/src/utils/external-signing/create-external-party-privy.d.ts +74 -0
- package/build/src/utils/external-signing/create-external-party-privy.d.ts.map +1 -0
- package/build/src/utils/external-signing/create-external-party-privy.js +133 -0
- package/build/src/utils/external-signing/create-external-party-privy.js.map +1 -0
- package/build/src/utils/external-signing/create-external-party.d.ts +69 -0
- package/build/src/utils/external-signing/create-external-party.d.ts.map +1 -0
- package/build/src/utils/external-signing/create-external-party.js +81 -0
- package/build/src/utils/external-signing/create-external-party.js.map +1 -0
- package/build/src/utils/external-signing/execute-external-transaction.d.ts +15 -0
- package/build/src/utils/external-signing/execute-external-transaction.d.ts.map +1 -0
- package/build/src/utils/external-signing/execute-external-transaction.js +21 -0
- package/build/src/utils/external-signing/execute-external-transaction.js.map +1 -0
- package/build/src/utils/external-signing/generate-external-party.d.ts +15 -0
- package/build/src/utils/external-signing/generate-external-party.d.ts.map +1 -0
- package/build/src/utils/external-signing/generate-external-party.js +16 -0
- package/build/src/utils/external-signing/generate-external-party.js.map +1 -0
- package/build/src/utils/external-signing/index.d.ts +7 -0
- package/build/src/utils/external-signing/index.d.ts.map +1 -0
- package/build/src/utils/external-signing/index.js +23 -0
- package/build/src/utils/external-signing/index.js.map +1 -0
- package/build/src/utils/external-signing/prepare-external-transaction.d.ts +20 -0
- package/build/src/utils/external-signing/prepare-external-transaction.d.ts.map +1 -0
- package/build/src/utils/external-signing/prepare-external-transaction.js +24 -0
- package/build/src/utils/external-signing/prepare-external-transaction.js.map +1 -0
- package/build/src/utils/external-signing/privy-utils.d.ts +25 -0
- package/build/src/utils/external-signing/privy-utils.d.ts.map +1 -0
- package/build/src/utils/external-signing/privy-utils.js +56 -0
- package/build/src/utils/external-signing/privy-utils.js.map +1 -0
- package/build/src/utils/external-signing/stellar-utils.d.ts +48 -0
- package/build/src/utils/external-signing/stellar-utils.d.ts.map +1 -0
- package/build/src/utils/external-signing/stellar-utils.js +72 -0
- package/build/src/utils/external-signing/stellar-utils.js.map +1 -0
- package/build/src/utils/index.d.ts +1 -0
- package/build/src/utils/index.d.ts.map +1 -1
- package/build/src/utils/index.js +1 -0
- package/build/src/utils/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createExternalParty = createExternalParty;
|
|
4
|
+
const validator_api_1 = require("../../clients/validator-api");
|
|
5
|
+
const stellar_utils_1 = require("./stellar-utils");
|
|
6
|
+
/**
|
|
7
|
+
* Creates an external party in Canton
|
|
8
|
+
*
|
|
9
|
+
* This is a convenience function that combines the three-step process:
|
|
10
|
+
*
|
|
11
|
+
* 1. Generate topology transactions
|
|
12
|
+
* 2. Sign the multi-hash
|
|
13
|
+
* 3. Allocate the party
|
|
14
|
+
*
|
|
15
|
+
* The keypair's private key is used to sign the onboarding transactions, proving ownership of the public key.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { Keypair } from '@stellar/stellar-base';
|
|
20
|
+
* import { createExternalParty } from '@fairmint/canton-node-sdk';
|
|
21
|
+
*
|
|
22
|
+
* const keypair = Keypair.random();
|
|
23
|
+
* const party = await createExternalParty({
|
|
24
|
+
* ledgerClient,
|
|
25
|
+
* keypair,
|
|
26
|
+
* partyName: 'alice',
|
|
27
|
+
* synchronizerId: 'global-synchronizer',
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* console.log('Party ID:', party.partyId);
|
|
31
|
+
* console.log('Public Key Fingerprint:', party.publicKeyFingerprint);
|
|
32
|
+
* ```;
|
|
33
|
+
*
|
|
34
|
+
* @param params - Configuration for external party creation
|
|
35
|
+
* @returns Party details including party ID and key fingerprint
|
|
36
|
+
*/
|
|
37
|
+
async function createExternalParty(params) {
|
|
38
|
+
const { keypair, partyName } = params;
|
|
39
|
+
// Initialize Validator API client
|
|
40
|
+
const validatorClient = new validator_api_1.ValidatorApiClient();
|
|
41
|
+
// Step 1: Convert Stellar public key to hex for Validator API
|
|
42
|
+
const publicKeyHex = (0, stellar_utils_1.stellarPublicKeyToHex)(keypair);
|
|
43
|
+
// Step 2: Generate external party topology using Validator API
|
|
44
|
+
const topology = await validatorClient.generateExternalPartyTopology({
|
|
45
|
+
party_hint: partyName,
|
|
46
|
+
public_key: publicKeyHex,
|
|
47
|
+
});
|
|
48
|
+
const { party_id, topology_txs } = topology;
|
|
49
|
+
if (!party_id) {
|
|
50
|
+
throw new Error('No party ID returned from topology generation');
|
|
51
|
+
}
|
|
52
|
+
if (topology_txs?.length === 0) {
|
|
53
|
+
throw new Error('No topology transactions returned from topology generation');
|
|
54
|
+
}
|
|
55
|
+
// Step 3: Sign each topology transaction hash using the Stellar keypair
|
|
56
|
+
const signedTopologyTxs = topology_txs.map((tx) => ({
|
|
57
|
+
topology_tx: tx.topology_tx,
|
|
58
|
+
signed_hash: (0, stellar_utils_1.signHexWithStellarKeypair)(keypair, tx.hash),
|
|
59
|
+
}));
|
|
60
|
+
// Step 4: Submit the signed topology transactions using Validator API
|
|
61
|
+
const submitResult = await validatorClient.submitExternalPartyTopology({
|
|
62
|
+
public_key: publicKeyHex,
|
|
63
|
+
signed_topology_txs: signedTopologyTxs,
|
|
64
|
+
});
|
|
65
|
+
if (!submitResult.party_id) {
|
|
66
|
+
throw new Error('Failed to submit external party topology - no party ID returned');
|
|
67
|
+
}
|
|
68
|
+
// Note: For external parties, we don't need to create a separate user or grant rights.
|
|
69
|
+
// When preparing transactions, we'll use the validator operator's user ID (fetched automatically
|
|
70
|
+
// by prepareExternalTransaction from the validator API). The external signature itself provides
|
|
71
|
+
// the authorization for the transaction.
|
|
72
|
+
return {
|
|
73
|
+
partyId: submitResult.party_id,
|
|
74
|
+
userId: '', // Will be resolved automatically when preparing transactions
|
|
75
|
+
publicKey: publicKeyHex,
|
|
76
|
+
publicKeyFingerprint: party_id.split('::')[1] ?? '', // Extract fingerprint from party ID
|
|
77
|
+
stellarAddress: keypair.publicKey(),
|
|
78
|
+
stellarSecret: keypair.secret(),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=create-external-party.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-external-party.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/create-external-party.ts"],"names":[],"mappings":";;AAwEA,kDAsDC;AA5HD,+DAAiE;AACjE,mDAAmF;AAsCnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACI,KAAK,UAAU,mBAAmB,CAAC,MAAiC;IACzE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEtC,kCAAkC;IAClC,MAAM,eAAe,GAAG,IAAI,kCAAkB,EAAE,CAAC;IAEjD,8DAA8D;IAC9D,MAAM,YAAY,GAAG,IAAA,qCAAqB,EAAC,OAAO,CAAC,CAAC;IAEpD,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,6BAA6B,CAAC;QACnE,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,YAAY;KACzB,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,YAAY,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,WAAW,EAAE,IAAA,yCAAyB,EAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;KACzD,CAAC,CAAC,CAAC;IAEJ,sEAAsE;IACtE,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,2BAA2B,CAAC;QACrE,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,iBAAiB;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,uFAAuF;IACvF,iGAAiG;IACjG,gGAAgG;IAChG,yCAAyC;IAEzC,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,QAAQ;QAC9B,MAAM,EAAE,EAAE,EAAE,6DAA6D;QACzE,SAAS,EAAE,YAAY;QACvB,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,oCAAoC;QACzF,cAAc,EAAE,OAAO,CAAC,SAAS,EAAE;QACnC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
|
|
2
|
+
import { type InteractiveSubmissionExecuteRequest, type InteractiveSubmissionExecuteResponse } from '../../clients/ledger-json-api/schemas/api/interactive-submission';
|
|
3
|
+
export type PartySignature = InteractiveSubmissionExecuteRequest['partySignatures']['signatures'][number];
|
|
4
|
+
export interface ExecuteExternalTransactionOptions {
|
|
5
|
+
ledgerClient: LedgerJsonApiClient;
|
|
6
|
+
userId: string;
|
|
7
|
+
preparedTransaction: string;
|
|
8
|
+
submissionId: string;
|
|
9
|
+
partySignatures: PartySignature[];
|
|
10
|
+
hashingSchemeVersion?: string;
|
|
11
|
+
deduplicationPeriod?: InteractiveSubmissionExecuteRequest['deduplicationPeriod'];
|
|
12
|
+
}
|
|
13
|
+
/** Submit a previously prepared and externally signed interactive submission to the ledger. */
|
|
14
|
+
export declare function executeExternalTransaction(options: ExecuteExternalTransactionOptions): Promise<InteractiveSubmissionExecuteResponse>;
|
|
15
|
+
//# sourceMappingURL=execute-external-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-external-transaction.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/execute-external-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EAC1C,MAAM,kEAAkE,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,mCAAmC,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1G,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,mCAAmC,CAAC,qBAAqB,CAAC,CAAC;CAClF;AAED,+FAA+F;AAC/F,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,oCAAoC,CAAC,CAe/C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeExternalTransaction = executeExternalTransaction;
|
|
4
|
+
/** Submit a previously prepared and externally signed interactive submission to the ledger. */
|
|
5
|
+
async function executeExternalTransaction(options) {
|
|
6
|
+
return options.ledgerClient.interactiveSubmissionExecute({
|
|
7
|
+
userId: options.userId,
|
|
8
|
+
preparedTransaction: options.preparedTransaction,
|
|
9
|
+
hashingSchemeVersion: options.hashingSchemeVersion ?? 'HASHING_SCHEME_VERSION_V2',
|
|
10
|
+
submissionId: options.submissionId,
|
|
11
|
+
deduplicationPeriod: options.deduplicationPeriod ?? {
|
|
12
|
+
DeduplicationDuration: {
|
|
13
|
+
value: { duration: '30s' },
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
partySignatures: {
|
|
17
|
+
signatures: options.partySignatures,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=execute-external-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-external-transaction.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/execute-external-transaction.ts"],"names":[],"mappings":";;AAmBA,gEAiBC;AAlBD,+FAA+F;AACxF,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,OAAO,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC;QACvD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,2BAA2B;QACjF,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI;YAClD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;aAC3B;SACF;QACD,eAAe,EAAE;YACf,UAAU,EAAE,OAAO,CAAC,eAAe;SACpC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
|
|
2
|
+
import { type GenerateExternalPartyTopologyParams, type GenerateExternalPartyTopologyResponse } from '../../clients/ledger-json-api/operations/v2/parties/external/generate-topology';
|
|
3
|
+
export interface GenerateExternalPartyOptions {
|
|
4
|
+
ledgerClient: LedgerJsonApiClient;
|
|
5
|
+
synchronizerId: string;
|
|
6
|
+
partyHint: string;
|
|
7
|
+
publicKey: GenerateExternalPartyTopologyParams['publicKey'];
|
|
8
|
+
localParticipantObservationOnly?: boolean;
|
|
9
|
+
otherConfirmingParticipantUids?: string[];
|
|
10
|
+
confirmationThreshold?: number;
|
|
11
|
+
observingParticipantUids?: string[];
|
|
12
|
+
}
|
|
13
|
+
/** Helper that invokes the external party topology generation endpoint. */
|
|
14
|
+
export declare function generateExternalPartyTopology(options: GenerateExternalPartyOptions): Promise<GenerateExternalPartyTopologyResponse>;
|
|
15
|
+
//# sourceMappingURL=generate-external-party.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-external-party.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/generate-external-party.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,qCAAqC,EAC3C,MAAM,gFAAgF,CAAC;AAExF,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,mCAAmC,CAAC,WAAW,CAAC,CAAC;IAC5D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAED,2EAA2E;AAC3E,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,qCAAqC,CAAC,CAUhD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateExternalPartyTopology = generateExternalPartyTopology;
|
|
4
|
+
/** Helper that invokes the external party topology generation endpoint. */
|
|
5
|
+
async function generateExternalPartyTopology(options) {
|
|
6
|
+
return options.ledgerClient.generateExternalPartyTopology({
|
|
7
|
+
synchronizer: options.synchronizerId,
|
|
8
|
+
partyHint: options.partyHint,
|
|
9
|
+
publicKey: options.publicKey,
|
|
10
|
+
localParticipantObservationOnly: options.localParticipantObservationOnly ?? false,
|
|
11
|
+
otherConfirmingParticipantUids: options.otherConfirmingParticipantUids,
|
|
12
|
+
confirmationThreshold: options.confirmationThreshold,
|
|
13
|
+
observingParticipantUids: options.observingParticipantUids,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=generate-external-party.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-external-party.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/generate-external-party.ts"],"names":[],"mappings":";;AAkBA,sEAYC;AAbD,2EAA2E;AACpE,KAAK,UAAU,6BAA6B,CACjD,OAAqC;IAErC,OAAO,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC;QACxD,YAAY,EAAE,OAAO,CAAC,cAAc;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,+BAA+B,EAAE,OAAO,CAAC,+BAA+B,IAAI,KAAK;QACjF,8BAA8B,EAAE,OAAO,CAAC,8BAA8B;QACtE,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;KAC3D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './allocate-external-party';
|
|
2
|
+
export * from './create-external-party-privy';
|
|
3
|
+
export * from './execute-external-transaction';
|
|
4
|
+
export * from './generate-external-party';
|
|
5
|
+
export * from './prepare-external-transaction';
|
|
6
|
+
export * from './privy-utils';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./allocate-external-party"), exports);
|
|
18
|
+
__exportStar(require("./create-external-party-privy"), exports);
|
|
19
|
+
__exportStar(require("./execute-external-transaction"), exports);
|
|
20
|
+
__exportStar(require("./generate-external-party"), exports);
|
|
21
|
+
__exportStar(require("./prepare-external-transaction"), exports);
|
|
22
|
+
__exportStar(require("./privy-utils"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,gEAA8C;AAC9C,iEAA+C;AAC/C,4DAA0C;AAC1C,iEAA+C;AAC/C,gDAA8B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
|
|
2
|
+
import { type InteractiveSubmissionPrepareRequest, type InteractiveSubmissionPrepareResponse } from '../../clients/ledger-json-api/schemas/api/interactive-submission';
|
|
3
|
+
export interface PrepareExternalTransactionOptions {
|
|
4
|
+
ledgerClient: LedgerJsonApiClient;
|
|
5
|
+
commands: InteractiveSubmissionPrepareRequest['commands'];
|
|
6
|
+
userId: string;
|
|
7
|
+
actAs: string[];
|
|
8
|
+
synchronizerId: string;
|
|
9
|
+
commandId?: string;
|
|
10
|
+
readAs?: string[];
|
|
11
|
+
disclosedContracts?: InteractiveSubmissionPrepareRequest['disclosedContracts'];
|
|
12
|
+
verboseHashing?: boolean;
|
|
13
|
+
packageIdSelectionPreference?: InteractiveSubmissionPrepareRequest['packageIdSelectionPreference'];
|
|
14
|
+
}
|
|
15
|
+
export interface PrepareExternalTransactionResult extends InteractiveSubmissionPrepareResponse {
|
|
16
|
+
commandId: string;
|
|
17
|
+
}
|
|
18
|
+
/** Convenience helper for preparing an interactive submission that will be signed off-ledger. */
|
|
19
|
+
export declare function prepareExternalTransaction(options: PrepareExternalTransactionOptions): Promise<PrepareExternalTransactionResult>;
|
|
20
|
+
//# sourceMappingURL=prepare-external-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-external-transaction.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/prepare-external-transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EAC1C,MAAM,kEAAkE,CAAC;AAE1E,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,mCAAmC,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,CAAC,EAAE,mCAAmC,CAAC,oBAAoB,CAAC,CAAC;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B,CAAC,EAAE,mCAAmC,CAAC,8BAA8B,CAAC,CAAC;CACpG;AAED,MAAM,WAAW,gCAAiC,SAAQ,oCAAoC;IAC5F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iGAAiG;AACjG,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,gCAAgC,CAAC,CAmB3C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareExternalTransaction = prepareExternalTransaction;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
/** Convenience helper for preparing an interactive submission that will be signed off-ledger. */
|
|
6
|
+
async function prepareExternalTransaction(options) {
|
|
7
|
+
const commandId = options.commandId ?? (0, node_crypto_1.randomUUID)();
|
|
8
|
+
const response = await options.ledgerClient.interactiveSubmissionPrepare({
|
|
9
|
+
commands: options.commands,
|
|
10
|
+
commandId,
|
|
11
|
+
userId: options.userId,
|
|
12
|
+
actAs: options.actAs,
|
|
13
|
+
readAs: options.readAs ?? [],
|
|
14
|
+
disclosedContracts: options.disclosedContracts,
|
|
15
|
+
synchronizerId: options.synchronizerId,
|
|
16
|
+
verboseHashing: options.verboseHashing ?? false,
|
|
17
|
+
packageIdSelectionPreference: options.packageIdSelectionPreference ?? [],
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
...response,
|
|
21
|
+
commandId,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=prepare-external-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-external-transaction.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/prepare-external-transaction.ts"],"names":[],"mappings":";;AAyBA,gEAqBC;AA9CD,6CAAyC;AAwBzC,iGAAiG;AAC1F,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAA,wBAAU,GAAE,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC;QACvE,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;QAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;QAC/C,4BAA4B,EAAE,OAAO,CAAC,4BAA4B,IAAI,EAAE;KACzE,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,QAAQ;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PrivyClient } from '@privy-io/node';
|
|
2
|
+
/**
|
|
3
|
+
* Signs data with a Privy-managed Stellar wallet
|
|
4
|
+
*
|
|
5
|
+
* @param privyClient - Privy client instance
|
|
6
|
+
* @param walletId - Wallet ID to sign with
|
|
7
|
+
* @param data - Data to sign (as Buffer or base64 string)
|
|
8
|
+
* @returns Base64-encoded signature
|
|
9
|
+
*/
|
|
10
|
+
export declare function signWithPrivyWallet(privyClient: PrivyClient, walletId: string, data: Buffer | string): Promise<string>;
|
|
11
|
+
/** Wallet info stored in key files for Privy-based external parties */
|
|
12
|
+
export interface PrivyWalletKeyData {
|
|
13
|
+
partyName: string;
|
|
14
|
+
partyId: string;
|
|
15
|
+
userId: string;
|
|
16
|
+
walletId: string;
|
|
17
|
+
stellarAddress: string;
|
|
18
|
+
publicKey: string;
|
|
19
|
+
publicKeyFingerprint: string;
|
|
20
|
+
synchronizerId: string;
|
|
21
|
+
network: string;
|
|
22
|
+
provider: string;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=privy-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privy-utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/privy-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.signWithPrivyWallet = signWithPrivyWallet;
|
|
37
|
+
/**
|
|
38
|
+
* Signs data with a Privy-managed Stellar wallet
|
|
39
|
+
*
|
|
40
|
+
* @param privyClient - Privy client instance
|
|
41
|
+
* @param walletId - Wallet ID to sign with
|
|
42
|
+
* @param data - Data to sign (as Buffer or base64 string)
|
|
43
|
+
* @returns Base64-encoded signature
|
|
44
|
+
*/
|
|
45
|
+
async function signWithPrivyWallet(privyClient, walletId, data) {
|
|
46
|
+
const { signWithWallet } = await Promise.resolve().then(() => __importStar(require('../privy/signData')));
|
|
47
|
+
// Convert data to hex
|
|
48
|
+
const hexData = typeof data === 'string' ? Buffer.from(data, 'base64').toString('hex') : data.toString('hex');
|
|
49
|
+
const signResult = await signWithWallet(privyClient, {
|
|
50
|
+
walletId,
|
|
51
|
+
data: hexData,
|
|
52
|
+
});
|
|
53
|
+
// Return base64-encoded signature
|
|
54
|
+
return signResult.signatureBase64;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=privy-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privy-utils.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/privy-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,kDAiBC;AAzBD;;;;;;;GAOG;AACI,KAAK,UAAU,mBAAmB,CACvC,WAAwB,EACxB,QAAgB,EAChB,IAAqB;IAErB,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAE7D,sBAAsB;IACtB,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9G,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE;QACnD,QAAQ;QACR,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,kCAAkC;IAClC,OAAO,UAAU,CAAC,eAAe,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Keypair } from '@stellar/stellar-base';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a Stellar public key to base64 format for Canton
|
|
4
|
+
*
|
|
5
|
+
* Stellar Ed25519 keys can be used for Canton external signing. This function extracts the raw 32-byte public key and
|
|
6
|
+
* converts it to base64.
|
|
7
|
+
*
|
|
8
|
+
* @param keypair - Stellar Keypair object
|
|
9
|
+
* @returns Base64-encoded public key
|
|
10
|
+
*/
|
|
11
|
+
export declare function stellarPublicKeyToBase64(keypair: Keypair): string;
|
|
12
|
+
/**
|
|
13
|
+
* Signs data with a Stellar keypair
|
|
14
|
+
*
|
|
15
|
+
* @param keypair - Stellar Keypair object
|
|
16
|
+
* @param data - Data to sign (as Buffer or base64 string)
|
|
17
|
+
* @returns Base64-encoded signature
|
|
18
|
+
*/
|
|
19
|
+
export declare function signWithStellarKeypair(keypair: Keypair, data: Buffer | string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Load a Stellar keypair from a secret key
|
|
22
|
+
*
|
|
23
|
+
* @param secret - Stellar secret key (starts with 'S')
|
|
24
|
+
* @returns Stellar Keypair object
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadStellarKeypair(secret: string): Keypair;
|
|
27
|
+
/**
|
|
28
|
+
* Generate a new random Stellar keypair
|
|
29
|
+
*
|
|
30
|
+
* @returns Stellar Keypair object
|
|
31
|
+
*/
|
|
32
|
+
export declare function generateStellarKeypair(): Keypair;
|
|
33
|
+
/**
|
|
34
|
+
* Convert Stellar public key to hex string (for Validator API)
|
|
35
|
+
*
|
|
36
|
+
* @param keypair - Stellar keypair
|
|
37
|
+
* @returns Hex-encoded public key
|
|
38
|
+
*/
|
|
39
|
+
export declare function stellarPublicKeyToHex(keypair: Keypair): string;
|
|
40
|
+
/**
|
|
41
|
+
* Sign hex-encoded hash with Stellar keypair (for Validator API)
|
|
42
|
+
*
|
|
43
|
+
* @param keypair - Stellar keypair to sign with
|
|
44
|
+
* @param hexHash - Hex-encoded hash to sign
|
|
45
|
+
* @returns Hex-encoded signature
|
|
46
|
+
*/
|
|
47
|
+
export declare function signHexWithStellarKeypair(keypair: Keypair, hexHash: string): string;
|
|
48
|
+
//# sourceMappingURL=stellar-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stellar-utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/stellar-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAItF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAInF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stellarPublicKeyToBase64 = stellarPublicKeyToBase64;
|
|
4
|
+
exports.signWithStellarKeypair = signWithStellarKeypair;
|
|
5
|
+
exports.loadStellarKeypair = loadStellarKeypair;
|
|
6
|
+
exports.generateStellarKeypair = generateStellarKeypair;
|
|
7
|
+
exports.stellarPublicKeyToHex = stellarPublicKeyToHex;
|
|
8
|
+
exports.signHexWithStellarKeypair = signHexWithStellarKeypair;
|
|
9
|
+
const stellar_base_1 = require("@stellar/stellar-base");
|
|
10
|
+
/**
|
|
11
|
+
* Converts a Stellar public key to base64 format for Canton
|
|
12
|
+
*
|
|
13
|
+
* Stellar Ed25519 keys can be used for Canton external signing. This function extracts the raw 32-byte public key and
|
|
14
|
+
* converts it to base64.
|
|
15
|
+
*
|
|
16
|
+
* @param keypair - Stellar Keypair object
|
|
17
|
+
* @returns Base64-encoded public key
|
|
18
|
+
*/
|
|
19
|
+
function stellarPublicKeyToBase64(keypair) {
|
|
20
|
+
return keypair.rawPublicKey().toString('base64');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Signs data with a Stellar keypair
|
|
24
|
+
*
|
|
25
|
+
* @param keypair - Stellar Keypair object
|
|
26
|
+
* @param data - Data to sign (as Buffer or base64 string)
|
|
27
|
+
* @returns Base64-encoded signature
|
|
28
|
+
*/
|
|
29
|
+
function signWithStellarKeypair(keypair, data) {
|
|
30
|
+
const dataBuffer = typeof data === 'string' ? Buffer.from(data, 'base64') : data;
|
|
31
|
+
const signature = keypair.sign(dataBuffer);
|
|
32
|
+
return signature.toString('base64');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load a Stellar keypair from a secret key
|
|
36
|
+
*
|
|
37
|
+
* @param secret - Stellar secret key (starts with 'S')
|
|
38
|
+
* @returns Stellar Keypair object
|
|
39
|
+
*/
|
|
40
|
+
function loadStellarKeypair(secret) {
|
|
41
|
+
return stellar_base_1.Keypair.fromSecret(secret);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Generate a new random Stellar keypair
|
|
45
|
+
*
|
|
46
|
+
* @returns Stellar Keypair object
|
|
47
|
+
*/
|
|
48
|
+
function generateStellarKeypair() {
|
|
49
|
+
return stellar_base_1.Keypair.random();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert Stellar public key to hex string (for Validator API)
|
|
53
|
+
*
|
|
54
|
+
* @param keypair - Stellar keypair
|
|
55
|
+
* @returns Hex-encoded public key
|
|
56
|
+
*/
|
|
57
|
+
function stellarPublicKeyToHex(keypair) {
|
|
58
|
+
return keypair.rawPublicKey().toString('hex');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Sign hex-encoded hash with Stellar keypair (for Validator API)
|
|
62
|
+
*
|
|
63
|
+
* @param keypair - Stellar keypair to sign with
|
|
64
|
+
* @param hexHash - Hex-encoded hash to sign
|
|
65
|
+
* @returns Hex-encoded signature
|
|
66
|
+
*/
|
|
67
|
+
function signHexWithStellarKeypair(keypair, hexHash) {
|
|
68
|
+
const dataBuffer = Buffer.from(hexHash, 'hex');
|
|
69
|
+
const signature = keypair.sign(dataBuffer);
|
|
70
|
+
return signature.toString('hex');
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=stellar-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stellar-utils.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/stellar-utils.ts"],"names":[],"mappings":";;AAWA,4DAEC;AASD,wDAIC;AAQD,gDAEC;AAOD,wDAEC;AAQD,sDAEC;AASD,8DAIC;AApED,wDAAgD;AAEhD;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,OAAgB,EAAE,IAAqB;IAC5E,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,sBAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB;IACpC,OAAO,sBAAO,CAAC,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,OAAgB,EAAE,OAAe;IACzE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
|
package/build/src/utils/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./amulet"), exports);
|
|
18
18
|
__exportStar(require("./contracts"), exports);
|
|
19
|
+
__exportStar(require("./external-signing"), exports);
|
|
19
20
|
__exportStar(require("./mining"), exports);
|
|
20
21
|
__exportStar(require("./parsers"), exports);
|
|
21
22
|
__exportStar(require("./party"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,qDAAmC;AACnC,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fairmint/canton-node-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.120",
|
|
4
4
|
"description": "Canton Node SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"canton",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"format": "prettier --check .",
|
|
37
37
|
"format:fix": "prettier --write .",
|
|
38
38
|
"generate:openapi-types": "tsx scripts/generate-openapi-types.ts",
|
|
39
|
+
"grant-user-rights": "tsx scripts/grant-user-rights.ts",
|
|
39
40
|
"lint": "eslint .",
|
|
40
41
|
"lint:fix": "eslint . --fix",
|
|
41
42
|
"lint:npm": "npmPkgJsonLint . --fix",
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"test:watch": "jest --watch"
|
|
56
57
|
},
|
|
57
58
|
"dependencies": {
|
|
59
|
+
"@canton-network/wallet-sdk": "0.15.0",
|
|
58
60
|
"@privy-io/node": "^0.3.0",
|
|
59
61
|
"@stellar/stellar-base": "^14.0.1",
|
|
60
62
|
"axios": "1.12.2",
|
|
@@ -62,6 +64,7 @@
|
|
|
62
64
|
"glob": "11.0.3",
|
|
63
65
|
"openapi-fetch": "0.15.0",
|
|
64
66
|
"openapi-typescript": "7.10.1",
|
|
67
|
+
"pino": "^9.0.0",
|
|
65
68
|
"ws": "8.18.3",
|
|
66
69
|
"zod": "4.1.12"
|
|
67
70
|
},
|