@canton-network/wallet-gateway-remote 0.9.1 → 0.10.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/README.md +1 -1
- package/dist/config/Config.d.ts +8 -8
- package/dist/config/Config.js +4 -4
- package/dist/config/ConfigUtils.d.ts.map +1 -1
- package/dist/config/ConfigUtils.js +4 -2
- package/dist/dapp-api/controller.d.ts +1 -1
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +35 -19
- package/dist/dapp-api/rpc-gen/typings.d.ts +68 -25
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/dapp-api/server.d.ts.map +1 -1
- package/dist/dapp-api/server.js +7 -4
- package/dist/dapp-api/server.test.js +7 -10
- package/dist/example-config.d.ts +1 -1
- package/dist/example-config.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -8
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +22 -4
- package/dist/ledger/party-allocation-service.d.ts +7 -0
- package/dist/ledger/party-allocation-service.d.ts.map +1 -1
- package/dist/ledger/party-allocation-service.js +37 -1
- package/dist/ledger/party-allocation-service.test.js +3 -1
- package/dist/ledger/wallet-sync-service.d.ts +11 -1
- package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
- package/dist/ledger/wallet-sync-service.js +121 -10
- package/dist/ledger/wallet-sync-service.test.d.ts +2 -0
- package/dist/ledger/wallet-sync-service.test.d.ts.map +1 -0
- package/dist/ledger/wallet-sync-service.test.js +163 -0
- package/dist/middleware/jsonRpcHandler.d.ts.map +1 -1
- package/dist/middleware/jsonRpcHandler.js +8 -0
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +33 -9
- package/dist/user-api/rpc-gen/typings.d.ts +8 -0
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +9 -0
- package/dist/web/frontend/404/index.html +2 -2
- package/dist/web/frontend/approve/index.html +3 -3
- package/dist/web/frontend/assets/{404-Dget2-k2.js → 404-D9f6dBKB.js} +1 -1
- package/dist/web/frontend/assets/{approve-ChuS996j.js → approve-CvvaOTF9.js} +13 -11
- package/dist/web/frontend/assets/{callback-2I6lJV7y.js → callback-C2tlJhDI.js} +1 -1
- package/dist/web/frontend/assets/{index-DyLgNi-5.js → index-ChQxMkmX.js} +25 -25
- package/dist/web/frontend/assets/{login-DvWCqhsk.js → login-295tArUb.js} +1 -1
- package/dist/web/frontend/assets/settings-DI34Qjg8.js +29 -0
- package/dist/web/frontend/assets/{state-Ck_F88ae.js → state-DxRr-Cgg.js} +1 -1
- package/dist/web/frontend/assets/{wallets-DcuGVzJf.js → wallets-CMKMTBj2.js} +1 -1
- package/dist/web/frontend/callback/index.html +2 -2
- package/dist/web/frontend/index.html +1 -1
- package/dist/web/frontend/login/index.html +3 -3
- package/dist/web/frontend/settings/index.html +3 -3
- package/dist/web/frontend/wallets/index.html +3 -3
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +5 -0
- package/package.json +17 -17
- package/dist/web/frontend/assets/settings-DOn2WYJx.js +0 -26
|
@@ -77,7 +77,9 @@ describe('PartyAllocationService', () => {
|
|
|
77
77
|
});
|
|
78
78
|
afterEach(() => jest.restoreAllMocks());
|
|
79
79
|
it('allocates an internal party', async () => {
|
|
80
|
-
mockLedgerGet.mockResolvedValueOnce({
|
|
80
|
+
mockLedgerGet.mockResolvedValueOnce({
|
|
81
|
+
participantId: 'participant1::participantid',
|
|
82
|
+
});
|
|
81
83
|
mockLedgerPost.mockResolvedValueOnce({
|
|
82
84
|
partyDetails: { party: 'party1::participantid' },
|
|
83
85
|
});
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { LedgerClient } from '@canton-network/core-ledger-client';
|
|
2
2
|
import { AuthContext } from '@canton-network/core-wallet-auth';
|
|
3
3
|
import { Store, Wallet } from '@canton-network/core-wallet-store';
|
|
4
|
+
import { SigningDriverInterface, SigningProvider } from '@canton-network/core-signing-lib';
|
|
4
5
|
import { Logger } from 'pino';
|
|
6
|
+
import { PartyAllocationService } from './party-allocation-service.js';
|
|
5
7
|
export type WalletSyncReport = {
|
|
6
8
|
added: Wallet[];
|
|
7
9
|
removed: Wallet[];
|
|
@@ -11,8 +13,16 @@ export declare class WalletSyncService {
|
|
|
11
13
|
private ledgerClient;
|
|
12
14
|
private authContext;
|
|
13
15
|
private logger;
|
|
14
|
-
|
|
16
|
+
private signingDrivers;
|
|
17
|
+
private partyAllocator;
|
|
18
|
+
constructor(store: Store, ledgerClient: LedgerClient, authContext: AuthContext, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, partyAllocator: PartyAllocationService);
|
|
15
19
|
run(timeoutMs: number): Promise<void>;
|
|
20
|
+
protected resolveSigningProvider(namespace: string): Promise<{
|
|
21
|
+
signingProviderId: SigningProvider.PARTICIPANT;
|
|
22
|
+
} | {
|
|
23
|
+
signingProviderId: Exclude<SigningProvider, SigningProvider.PARTICIPANT>;
|
|
24
|
+
publicKey: string;
|
|
25
|
+
} | null>;
|
|
16
26
|
syncWallets(): Promise<WalletSyncReport>;
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=wallet-sync-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-sync-service.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,YAAY,EAEf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"wallet-sync-service.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,YAAY,EAEf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AACD,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,cAAc;gBAPd,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,CAC3B,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,YAAK,EACE,cAAc,EAAE,sBAAsB;IAG5C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAU3B,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAC5D;QAAE,iBAAiB,EAAE,eAAe,CAAC,WAAW,CAAA;KAAE,GAClD;QACI,iBAAiB,EAAE,OAAO,CACtB,eAAe,EACf,eAAe,CAAC,WAAW,CAC9B,CAAA;QACD,SAAS,EAAE,MAAM,CAAA;KACpB,GACD,IAAI,CACT;IAiHK,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAkJjD"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { defaultRetryableOptions, } from '@canton-network/core-ledger-client';
|
|
4
|
+
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
4
5
|
export class WalletSyncService {
|
|
5
|
-
constructor(store, ledgerClient, authContext, logger) {
|
|
6
|
+
constructor(store, ledgerClient, authContext, logger, signingDrivers = {}, partyAllocator) {
|
|
6
7
|
this.store = store;
|
|
7
8
|
this.ledgerClient = ledgerClient;
|
|
8
9
|
this.authContext = authContext;
|
|
9
10
|
this.logger = logger;
|
|
11
|
+
this.signingDrivers = signingDrivers;
|
|
12
|
+
this.partyAllocator = partyAllocator;
|
|
10
13
|
}
|
|
11
14
|
async run(timeoutMs) {
|
|
12
15
|
this.logger.info(`Starting wallet sync service with ${timeoutMs}ms interval`);
|
|
@@ -15,6 +18,86 @@ export class WalletSyncService {
|
|
|
15
18
|
await new Promise((res) => setTimeout(res, timeoutMs));
|
|
16
19
|
}
|
|
17
20
|
}
|
|
21
|
+
async resolveSigningProvider(namespace) {
|
|
22
|
+
try {
|
|
23
|
+
// Check if namespace matches participant namespace first
|
|
24
|
+
// (participant parties have namespace === participantId's namespace)
|
|
25
|
+
let participantNamespace;
|
|
26
|
+
try {
|
|
27
|
+
const { participantId } = await this.ledgerClient.getWithRetry('/v2/parties/participant-id', defaultRetryableOptions);
|
|
28
|
+
// Extract the namespace part from participantId
|
|
29
|
+
// Format is hint::namespace
|
|
30
|
+
const [, extractedNamespace] = participantId.split('::');
|
|
31
|
+
if (extractedNamespace) {
|
|
32
|
+
participantNamespace = extractedNamespace;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.logger.warn({ participantId }, `Invalid participantId format: expected "hint::namespace", got "${participantId}"`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
this.logger.warn({ err }, 'Failed to get participant namespace');
|
|
40
|
+
}
|
|
41
|
+
if (participantNamespace && namespace === participantNamespace) {
|
|
42
|
+
return { signingProviderId: SigningProvider.PARTICIPANT };
|
|
43
|
+
}
|
|
44
|
+
// Get keys from signing providers try to match
|
|
45
|
+
const userId = this.authContext?.userId;
|
|
46
|
+
for (const [providerId, driver] of Object.entries(this.signingDrivers)) {
|
|
47
|
+
if (!driver)
|
|
48
|
+
continue;
|
|
49
|
+
// Participant already handled above
|
|
50
|
+
if (providerId === SigningProvider.PARTICIPANT) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const controller = driver.controller(userId);
|
|
55
|
+
const result = await controller.getKeys();
|
|
56
|
+
// In case of error getKeys resolve Promise but with error object
|
|
57
|
+
if ('error' in result) {
|
|
58
|
+
this.logger.debug({
|
|
59
|
+
providerId,
|
|
60
|
+
error: result.error,
|
|
61
|
+
error_description: result.error_description,
|
|
62
|
+
}, 'Failed to get keys from signing provider');
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// Try to match namespace with public keys
|
|
66
|
+
if (result.keys) {
|
|
67
|
+
for (const key of result.keys) {
|
|
68
|
+
const normalizedKey = this.partyAllocator.normalizePublicKeyToBase64(key.publicKey);
|
|
69
|
+
if (!normalizedKey)
|
|
70
|
+
continue;
|
|
71
|
+
const keyNamespace = this.partyAllocator.createFingerprintFromKey(normalizedKey);
|
|
72
|
+
if (keyNamespace === namespace) {
|
|
73
|
+
this.logger.debug({
|
|
74
|
+
namespace,
|
|
75
|
+
providerId,
|
|
76
|
+
keyId: key.id,
|
|
77
|
+
publicKey: key.publicKey,
|
|
78
|
+
}, 'Matched namespace with signing provider');
|
|
79
|
+
return {
|
|
80
|
+
signingProviderId: providerId,
|
|
81
|
+
publicKey: key.publicKey,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
this.logger.debug({ err, providerId }, 'Error getting keys from signing provider');
|
|
89
|
+
// Continue to next signing provider
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// No match found - reject this wallet
|
|
93
|
+
this.logger.warn({ namespace }, 'No signing provider match found for namespace, rejecting wallet');
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
this.logger.error({ err, namespace }, 'Error resolving signing provider, rejecting wallet');
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
18
101
|
async syncWallets() {
|
|
19
102
|
this.logger.info('Starting wallet sync...');
|
|
20
103
|
try {
|
|
@@ -47,30 +130,58 @@ export class WalletSyncService {
|
|
|
47
130
|
!partiesWithRights.has(party))
|
|
48
131
|
partiesWithRights.set(party, rightType);
|
|
49
132
|
});
|
|
50
|
-
this.logger.info(partiesWithRights, 'Found new parties to sync with Wallet Gateway');
|
|
133
|
+
this.logger.info([...partiesWithRights], 'Found new parties to sync with Wallet Gateway');
|
|
51
134
|
// Add new Wallets given the found parties
|
|
52
135
|
const existingWallets = await this.store.getWallets();
|
|
53
136
|
this.logger.info(existingWallets, 'Existing wallets');
|
|
54
137
|
const existingPartyIdToSigningProvider = new Map(existingWallets.map((w) => [w.partyId, w.signingProviderId]));
|
|
55
|
-
|
|
56
|
-
|
|
138
|
+
// Resolve signing providers for all new parties
|
|
139
|
+
const newParties = Array.from(partiesWithRights.keys()).filter((party) => !existingPartyIdToSigningProvider.has(party)
|
|
57
140
|
// todo: filter on idp id
|
|
58
|
-
)
|
|
59
|
-
|
|
141
|
+
);
|
|
142
|
+
const walletResults = await Promise.all(newParties.map(async (party) => {
|
|
60
143
|
const [hint, namespace] = party.split('::');
|
|
144
|
+
const resolvedSigningProvider = await this.resolveSigningProvider(namespace);
|
|
145
|
+
// Reject wallets where no signing provider match was found
|
|
146
|
+
if (!resolvedSigningProvider) {
|
|
147
|
+
this.logger.warn({ party, hint, namespace }, 'Rejecting wallet - no signing provider match found');
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
// Namespace is saved as public key in case of participant
|
|
151
|
+
const walletPublicKey = resolvedSigningProvider.signingProviderId ===
|
|
152
|
+
SigningProvider.PARTICIPANT
|
|
153
|
+
? namespace
|
|
154
|
+
: resolvedSigningProvider.publicKey;
|
|
155
|
+
this.logger.info({
|
|
156
|
+
primary: false,
|
|
157
|
+
status: 'allocated',
|
|
158
|
+
partyId: party,
|
|
159
|
+
hint: hint,
|
|
160
|
+
publicKey: walletPublicKey,
|
|
161
|
+
namespace: namespace,
|
|
162
|
+
networkId: network.id,
|
|
163
|
+
signingProviderId: resolvedSigningProvider.signingProviderId,
|
|
164
|
+
}, 'Wallet sync result');
|
|
61
165
|
return {
|
|
62
166
|
primary: false,
|
|
63
167
|
status: 'allocated',
|
|
64
168
|
partyId: party,
|
|
65
169
|
hint: hint,
|
|
66
|
-
publicKey:
|
|
170
|
+
publicKey: walletPublicKey,
|
|
67
171
|
namespace: namespace,
|
|
68
172
|
networkId: network.id,
|
|
69
|
-
signingProviderId:
|
|
173
|
+
signingProviderId: resolvedSigningProvider.signingProviderId,
|
|
70
174
|
};
|
|
71
|
-
})
|
|
175
|
+
}));
|
|
176
|
+
// Filter out rejected wallets
|
|
177
|
+
const newParticipantWallets = walletResults.filter((wallet) => wallet !== null);
|
|
72
178
|
await Promise.all(newParticipantWallets.map((wallet) => this.store.addWallet(wallet)));
|
|
73
|
-
this.logger.info(newParticipantWallets, 'Created new wallets');
|
|
179
|
+
this.logger.info({ newParticipantWallets }, 'Created new wallets');
|
|
180
|
+
this.logger.info({
|
|
181
|
+
totalProcessed: newParties.length,
|
|
182
|
+
rejected: newParties.length - newParticipantWallets.length,
|
|
183
|
+
added: newParticipantWallets.length,
|
|
184
|
+
}, 'Wallet sync summary');
|
|
74
185
|
// Set primary wallet if none exists
|
|
75
186
|
const wallets = await this.store.getWallets();
|
|
76
187
|
const hasPrimary = wallets.some((w) => w.primary);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-sync-service.test.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { jest, describe, it, expect, beforeEach, afterEach, } from '@jest/globals';
|
|
4
|
+
import { pino } from 'pino';
|
|
5
|
+
import { sink } from 'pino-test';
|
|
6
|
+
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
7
|
+
import { InternalSigningDriver } from '@canton-network/core-signing-internal';
|
|
8
|
+
import { ParticipantSigningDriver } from '@canton-network/core-signing-participant';
|
|
9
|
+
import { StoreSql, connection, migrator, } from '@canton-network/core-signing-store-sql';
|
|
10
|
+
import { WalletSyncService } from './wallet-sync-service.js';
|
|
11
|
+
import { PartyAllocationService } from './party-allocation-service.js';
|
|
12
|
+
const mockLedgerGet = jest.fn();
|
|
13
|
+
jest.unstable_mockModule('@canton-network/core-ledger-client', () => ({
|
|
14
|
+
LedgerClient: jest.fn().mockImplementation(() => {
|
|
15
|
+
return {
|
|
16
|
+
getWithRetry: mockLedgerGet,
|
|
17
|
+
};
|
|
18
|
+
}),
|
|
19
|
+
defaultRetryableOptions: {},
|
|
20
|
+
}));
|
|
21
|
+
// Test subclass to expose protected method
|
|
22
|
+
class TestableWalletSyncService extends WalletSyncService {
|
|
23
|
+
async resolveSigningProvider(namespace) {
|
|
24
|
+
return super.resolveSigningProvider(namespace);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
describe('WalletSyncService - resolveSigningProvider', () => {
|
|
28
|
+
const authContext = {
|
|
29
|
+
userId: 'test-user-id',
|
|
30
|
+
accessToken: 'test-access-token',
|
|
31
|
+
};
|
|
32
|
+
let mockLogger;
|
|
33
|
+
let store;
|
|
34
|
+
let ledgerClient;
|
|
35
|
+
let partyAllocator;
|
|
36
|
+
let service;
|
|
37
|
+
beforeEach(async () => {
|
|
38
|
+
mockLogger = pino(sink());
|
|
39
|
+
// Create in-memory SQLite store for InternalSigningDriver
|
|
40
|
+
const db = connection({
|
|
41
|
+
connection: {
|
|
42
|
+
type: 'sqlite',
|
|
43
|
+
database: ':memory:',
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const umzug = migrator(db);
|
|
47
|
+
const pending = await umzug.pending();
|
|
48
|
+
if (pending.length > 0) {
|
|
49
|
+
await umzug.up();
|
|
50
|
+
}
|
|
51
|
+
const signingStore = new StoreSql(db, mockLogger, authContext);
|
|
52
|
+
// Create real InternalSigningDriver with real store
|
|
53
|
+
const internalDriver = new InternalSigningDriver(signingStore);
|
|
54
|
+
// Store is not used in resolveSigningProvider tests
|
|
55
|
+
store = {};
|
|
56
|
+
// Create real PartyAllocationService
|
|
57
|
+
partyAllocator = new PartyAllocationService({
|
|
58
|
+
synchronizerId: 'test-sync-id',
|
|
59
|
+
accessTokenProvider: {
|
|
60
|
+
getUserAccessToken: async () => 'user.jwt',
|
|
61
|
+
getAdminAccessToken: async () => 'admin.jwt',
|
|
62
|
+
},
|
|
63
|
+
httpLedgerUrl: 'http://test',
|
|
64
|
+
logger: mockLogger,
|
|
65
|
+
});
|
|
66
|
+
// Create mocked ledger client (whole module is already mocked)
|
|
67
|
+
const ledgerModule = await import('@canton-network/core-ledger-client');
|
|
68
|
+
ledgerClient = new ledgerModule.LedgerClient({
|
|
69
|
+
baseUrl: new URL('http://test'),
|
|
70
|
+
logger: mockLogger,
|
|
71
|
+
accessTokenProvider: {
|
|
72
|
+
getUserAccessToken: async () => 'token',
|
|
73
|
+
getAdminAccessToken: async () => 'token',
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
// Create service with real drivers
|
|
77
|
+
service = new TestableWalletSyncService(store, ledgerClient, authContext, mockLogger, {
|
|
78
|
+
[SigningProvider.WALLET_KERNEL]: internalDriver,
|
|
79
|
+
[SigningProvider.PARTICIPANT]: new ParticipantSigningDriver(),
|
|
80
|
+
}, partyAllocator);
|
|
81
|
+
});
|
|
82
|
+
afterEach(() => {
|
|
83
|
+
jest.restoreAllMocks();
|
|
84
|
+
mockLedgerGet.mockClear();
|
|
85
|
+
});
|
|
86
|
+
it('resolves participant when namespace matches participant namespace', async () => {
|
|
87
|
+
const participantNamespace = 'participant-namespace-123';
|
|
88
|
+
const participantId = `participant1::${participantNamespace}`;
|
|
89
|
+
mockLedgerGet.mockResolvedValueOnce({
|
|
90
|
+
participantId,
|
|
91
|
+
});
|
|
92
|
+
const result = await service.resolveSigningProvider(participantNamespace);
|
|
93
|
+
expect(result).not.toBeNull();
|
|
94
|
+
expect(result).toEqual({
|
|
95
|
+
signingProviderId: SigningProvider.PARTICIPANT,
|
|
96
|
+
});
|
|
97
|
+
if (result) {
|
|
98
|
+
expect('publicKey' in result).toBe(false);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
it('resolves wallet-kernel when namespace matches internal key', async () => {
|
|
102
|
+
const internalDriver = service['signingDrivers'][SigningProvider.WALLET_KERNEL];
|
|
103
|
+
const controller = internalDriver.controller(authContext.userId);
|
|
104
|
+
const key = await controller.createKey({ name: 'test-key' });
|
|
105
|
+
const namespace = partyAllocator.createFingerprintFromKey(key.publicKey);
|
|
106
|
+
mockLedgerGet.mockResolvedValueOnce({
|
|
107
|
+
participantId: 'participant1::different-participant-namespace',
|
|
108
|
+
});
|
|
109
|
+
const result = await service.resolveSigningProvider(namespace);
|
|
110
|
+
expect(result).not.toBeNull();
|
|
111
|
+
if (result) {
|
|
112
|
+
expect(result.signingProviderId).toBe(SigningProvider.WALLET_KERNEL);
|
|
113
|
+
if (result.signingProviderId !== SigningProvider.PARTICIPANT) {
|
|
114
|
+
expect(result.publicKey).toBe(key.publicKey);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
it('resolves fireblocks when namespace matches fireblocks key', async () => {
|
|
119
|
+
const fireblocksPublicKeyHex = '02fefbcc9aebc8a479f211167a9f564df53aefd603a8662d9449a98c1ead2eba';
|
|
120
|
+
// Convert hex to base64, then calculate namespace
|
|
121
|
+
const normalizedKey = partyAllocator.normalizePublicKeyToBase64(fireblocksPublicKeyHex);
|
|
122
|
+
const namespace = partyAllocator.createFingerprintFromKey(normalizedKey);
|
|
123
|
+
const mockFireblocksDriver = {
|
|
124
|
+
controller: jest.fn().mockReturnValue({
|
|
125
|
+
getKeys: jest
|
|
126
|
+
.fn()
|
|
127
|
+
.mockResolvedValue({
|
|
128
|
+
keys: [
|
|
129
|
+
{
|
|
130
|
+
id: '44-6767-1-0-0',
|
|
131
|
+
name: 'test-vault',
|
|
132
|
+
publicKey: fireblocksPublicKeyHex,
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
}),
|
|
136
|
+
}),
|
|
137
|
+
partyMode: 'EXTERNAL',
|
|
138
|
+
signingProvider: SigningProvider.FIREBLOCKS,
|
|
139
|
+
};
|
|
140
|
+
const serviceWithFireblocks = new TestableWalletSyncService(store, ledgerClient, authContext, mockLogger, {
|
|
141
|
+
[SigningProvider.FIREBLOCKS]: mockFireblocksDriver,
|
|
142
|
+
}, partyAllocator);
|
|
143
|
+
mockLedgerGet.mockResolvedValueOnce({
|
|
144
|
+
participantId: 'participant1::different-participant-namespace',
|
|
145
|
+
});
|
|
146
|
+
const result = await serviceWithFireblocks.resolveSigningProvider(namespace);
|
|
147
|
+
expect(result).not.toBeNull();
|
|
148
|
+
if (result) {
|
|
149
|
+
expect(result.signingProviderId).toBe(SigningProvider.FIREBLOCKS);
|
|
150
|
+
if (result.signingProviderId !== SigningProvider.PARTICIPANT) {
|
|
151
|
+
expect(result.publicKey).toBe(fireblocksPublicKeyHex);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
it('returns null when no signing provider match is found', async () => {
|
|
156
|
+
const unknownNamespace = 'unknown-namespace-123';
|
|
157
|
+
mockLedgerGet.mockResolvedValueOnce({
|
|
158
|
+
participantId: 'participant1::different-participant-namespace',
|
|
159
|
+
});
|
|
160
|
+
const result = await service.resolveSigningProvider(unknownNamespace);
|
|
161
|
+
expect(result).toBeNull();
|
|
162
|
+
});
|
|
163
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonRpcHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/jsonRpcHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonRpcHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/jsonRpcHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAc7B,UAAU,kBAAkB,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,CAAC,CAAA;CAChB;AAiED,eAAO,MAAM,cAAc,GAEtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,kCAGjD,kBAAkB,CAAC,CAAC,CAAC,MAMZ,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,SA4E1D,CAAA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { JsonRpcError, rpcErrors, toHttpErrorCode, } from '@canton-network/core-rpc-errors';
|
|
4
4
|
import { ErrorResponse, JsonRpcRequest, jsonRpcResponse, } from '@canton-network/core-types';
|
|
5
|
+
import { isJsCantonError } from '@canton-network/core-ledger-client';
|
|
5
6
|
/**
|
|
6
7
|
* Handles JSON-RPC errors and maps them to HTTP responses.
|
|
7
8
|
* @param error The error that occurred.
|
|
@@ -26,6 +27,13 @@ const handleRpcError = (error, id, logger, method) => {
|
|
|
26
27
|
const httpCode = toHttpErrorCode(error.code);
|
|
27
28
|
return [httpCode, jsonRpcResponse(id, response)];
|
|
28
29
|
}
|
|
30
|
+
if (isJsCantonError(error)) {
|
|
31
|
+
response.error = {
|
|
32
|
+
code: rpcErrors.internal().code,
|
|
33
|
+
message: error.cause,
|
|
34
|
+
data: error,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
29
37
|
if (error instanceof Error) {
|
|
30
38
|
response.error.message = error.message;
|
|
31
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/user-api/controller.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,KAAK,EAIR,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAGH,WAAW,EAId,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AAazC,KAAK,uBAAuB,GAAG,OAAO,CAClC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,cAAc,GACvB,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,aAAa,WAAW,GAAG,SAAS,EACpC,SAAS,uBAAuB,EAChC,SAAS,MAAM;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/user-api/controller.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,KAAK,EAIR,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAGH,WAAW,EAId,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AAazC,KAAK,uBAAuB,GAAG,OAAO,CAClC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,cAAc,GACvB,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,aAAa,WAAW,GAAG,SAAS,EACpC,SAAS,uBAAuB,EAChC,SAAS,MAAM;;;;;;;;;;;;;;;;;;;CAyqBlB,CAAA"}
|
|
@@ -244,7 +244,7 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
244
244
|
throw new Error('Failed to sign transaction: ' +
|
|
245
245
|
JSON.stringify(signature));
|
|
246
246
|
}
|
|
247
|
-
// Get existing transaction to preserve createdAt if
|
|
247
|
+
// Get existing transaction to preserve createdAt and origin if they exist
|
|
248
248
|
const existingTx = await store.getTransaction(commandId);
|
|
249
249
|
const now = new Date();
|
|
250
250
|
const signedTx = {
|
|
@@ -252,6 +252,7 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
252
252
|
status: 'signed',
|
|
253
253
|
preparedTransaction,
|
|
254
254
|
preparedTransactionHash,
|
|
255
|
+
origin: existingTx?.origin ?? null,
|
|
255
256
|
...(existingTx?.createdAt && {
|
|
256
257
|
createdAt: existingTx.createdAt,
|
|
257
258
|
}),
|
|
@@ -310,7 +311,8 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
310
311
|
return res;
|
|
311
312
|
}
|
|
312
313
|
catch (error) {
|
|
313
|
-
|
|
314
|
+
logger.error(error, 'Failed to submit transaction');
|
|
315
|
+
throw error;
|
|
314
316
|
}
|
|
315
317
|
}
|
|
316
318
|
case SigningProvider.WALLET_KERNEL: {
|
|
@@ -344,6 +346,7 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
344
346
|
preparedTransaction: transaction.preparedTransaction,
|
|
345
347
|
preparedTransactionHash: transaction.preparedTransactionHash,
|
|
346
348
|
payload: result,
|
|
349
|
+
origin: transaction.origin ?? null,
|
|
347
350
|
...(transaction.createdAt && {
|
|
348
351
|
createdAt: transaction.createdAt,
|
|
349
352
|
}),
|
|
@@ -377,14 +380,23 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
377
380
|
});
|
|
378
381
|
const status = await networkStatus(ledgerClient);
|
|
379
382
|
notifier.emit('onConnected', {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
383
|
+
kernel: {
|
|
384
|
+
...kernelInfo,
|
|
385
|
+
userUrl: `${userUrl}/login/`,
|
|
386
|
+
},
|
|
387
|
+
isConnected: true,
|
|
388
|
+
isNetworkConnected: status.isConnected,
|
|
389
|
+
networkReason: status.reason ? status.reason : 'OK',
|
|
390
|
+
network: {
|
|
385
391
|
networkId: network.id,
|
|
392
|
+
ledgerApi: {
|
|
393
|
+
baseUrl: network.ledgerApi.baseUrl,
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
session: {
|
|
397
|
+
accessToken: accessToken,
|
|
398
|
+
userId: userId,
|
|
386
399
|
},
|
|
387
|
-
sessionToken: accessToken,
|
|
388
400
|
});
|
|
389
401
|
return Promise.resolve({
|
|
390
402
|
accessToken,
|
|
@@ -447,11 +459,17 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
447
459
|
getUserAccessToken: async () => authContext.accessToken,
|
|
448
460
|
getAdminAccessToken: async () => authContext.accessToken,
|
|
449
461
|
};
|
|
462
|
+
const partyAllocator = new PartyAllocationService({
|
|
463
|
+
synchronizerId: network.synchronizerId,
|
|
464
|
+
accessTokenProvider: userAccessTokenProvider,
|
|
465
|
+
httpLedgerUrl: network.ledgerApi.baseUrl,
|
|
466
|
+
logger,
|
|
467
|
+
});
|
|
450
468
|
const service = new WalletSyncService(store, new LedgerClient({
|
|
451
469
|
baseUrl: new URL(network.ledgerApi.baseUrl),
|
|
452
470
|
logger,
|
|
453
471
|
accessTokenProvider: userAccessTokenProvider,
|
|
454
|
-
}), authContext, logger);
|
|
472
|
+
}), authContext, logger, drivers, partyAllocator);
|
|
455
473
|
const result = await service.syncWallets();
|
|
456
474
|
if (result.added.length === 0 && result.removed.length === 0) {
|
|
457
475
|
return result;
|
|
@@ -474,6 +492,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
474
492
|
payload: transaction.payload
|
|
475
493
|
? JSON.stringify(transaction.payload)
|
|
476
494
|
: '',
|
|
495
|
+
...(transaction.origin !== null && {
|
|
496
|
+
origin: transaction.origin,
|
|
497
|
+
}),
|
|
477
498
|
...(transaction.createdAt && {
|
|
478
499
|
createdAt: transaction.createdAt.toISOString(),
|
|
479
500
|
}),
|
|
@@ -492,6 +513,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
492
513
|
payload: transaction.payload
|
|
493
514
|
? JSON.stringify(transaction.payload)
|
|
494
515
|
: '',
|
|
516
|
+
...(transaction.origin !== null && {
|
|
517
|
+
origin: transaction.origin,
|
|
518
|
+
}),
|
|
495
519
|
...(transaction.createdAt && {
|
|
496
520
|
createdAt: transaction.createdAt.toISOString(),
|
|
497
521
|
}),
|
|
@@ -276,12 +276,19 @@ export type Sessions = Session[];
|
|
|
276
276
|
*
|
|
277
277
|
*/
|
|
278
278
|
export type Payload = string;
|
|
279
|
+
/**
|
|
280
|
+
*
|
|
281
|
+
* The origin (dApp URL) that initiated this transaction request.
|
|
282
|
+
*
|
|
283
|
+
*/
|
|
284
|
+
export type Origin = string;
|
|
279
285
|
export interface Transaction {
|
|
280
286
|
commandId: CommandId;
|
|
281
287
|
status: Status;
|
|
282
288
|
preparedTransaction: PreparedTransaction;
|
|
283
289
|
preparedTransactionHash: PreparedTransactionHash;
|
|
284
290
|
payload?: Payload;
|
|
291
|
+
origin?: Origin;
|
|
285
292
|
[k: string]: any;
|
|
286
293
|
}
|
|
287
294
|
export type Transactions = Transaction[];
|
|
@@ -411,6 +418,7 @@ export interface GetTransactionResult {
|
|
|
411
418
|
preparedTransaction: PreparedTransaction;
|
|
412
419
|
preparedTransactionHash: PreparedTransactionHash;
|
|
413
420
|
payload?: Payload;
|
|
421
|
+
origin?: Origin;
|
|
414
422
|
[k: string]: any;
|
|
415
423
|
}
|
|
416
424
|
export interface ListTransactionsResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/user-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/user-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,eAAe,KAAc,CAAA"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
8
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
|
|
9
|
+
export const GATEWAY_VERSION = pkg.version;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<title>Wallet Kernel - Not found</title>
|
|
6
|
-
<script type="module" crossorigin src="/assets/404-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="/assets/index-
|
|
6
|
+
<script type="module" crossorigin src="/assets/404-D9f6dBKB.js"></script>
|
|
7
|
+
<link rel="modulepreload" crossorigin href="/assets/index-ChQxMkmX.js">
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CgbJtyud.css">
|
|
9
9
|
</head>
|
|
10
10
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<title>Wallet Kernel - Approve Write Request</title>
|
|
6
|
-
<script type="module" crossorigin src="/assets/approve-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="/assets/index-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/assets/state-
|
|
6
|
+
<script type="module" crossorigin src="/assets/approve-CvvaOTF9.js"></script>
|
|
7
|
+
<link rel="modulepreload" crossorigin href="/assets/index-ChQxMkmX.js">
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/assets/state-DxRr-Cgg.js">
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-CgbJtyud.css">
|
|
10
10
|
</head>
|
|
11
11
|
|