@canton-network/core-signing-blockdaemon 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +9 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -135,10 +135,18 @@ var BlockdaemonSigningDriver = class {
|
|
|
135
135
|
__publicField(this, "controller", (_userId) => coreSigningLib.buildController({
|
|
136
136
|
signTransaction: async (params) => {
|
|
137
137
|
try {
|
|
138
|
+
if (!params.keyIdentifier.publicKey) {
|
|
139
|
+
return {
|
|
140
|
+
error: "key_not_found",
|
|
141
|
+
error_description: "The provided key identifier must include a publicKey."
|
|
142
|
+
};
|
|
143
|
+
}
|
|
138
144
|
const tx = await this.client.signTransaction({
|
|
139
145
|
tx: params.tx,
|
|
140
146
|
txHash: params.txHash,
|
|
141
|
-
|
|
147
|
+
keyIdentifier: {
|
|
148
|
+
publicKey: params.keyIdentifier.publicKey
|
|
149
|
+
},
|
|
142
150
|
internalTxId: params.internalTxId
|
|
143
151
|
});
|
|
144
152
|
return {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/signing-api-sdk.ts","../src/index.ts"],"names":["PartyMode","SigningProvider","buildController"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n Key,\n Transaction,\n SignTransactionParams,\n GetTransactionParams,\n GetTransactionsParams,\n CreateKeyParams,\n} from '@canton-network/core-signing-lib'\n\n/**\n * A TypeScript SDK client for the Wallet Signing API.\n */\nexport class SigningAPIClient {\n private baseUrl: string\n private apiKey: string | undefined\n private masterKey: string\n private testNetwork: boolean\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\n this.masterKey = 'Default'\n this.testNetwork = true\n }\n\n private async post<I extends Record<string, unknown>, O>(\n endpoint: string,\n params: I\n ): Promise<O> {\n const url = `${this.baseUrl}${endpoint}`\n\n // Merge context params (masterKey and testNetwork) into the request body\n const bodyToSend = {\n ...params,\n masterKey: this.masterKey,\n testNetwork: this.testNetwork,\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(bodyToSend),\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(\n `API call to ${endpoint} failed (${response.status}): ${errorText}`\n )\n }\n\n // Handle 204 No Content for methods that return empty objects or null/void\n if (\n response.status === 204 ||\n response.headers.get('content-length') === '0'\n ) {\n // SetConfiguration/GetConfiguration return map[string]any which might be empty\n return {} as O\n }\n\n return response.json() as Promise<O>\n }\n\n /**\n * Uses the Wallet Provider to sign a transaction.\n * @param params - The transaction signing parameters.\n */\n public async signTransaction(\n params: SignTransactionParams\n ): Promise<Transaction> {\n return this.post<SignTransactionParams, Transaction>(\n '/signTransaction',\n params\n )\n }\n\n /**\n * Get the status of a single transaction by its ID.\n * @param params - The transaction ID parameters.\n */\n public async getTransaction(\n params: GetTransactionParams\n ): Promise<Transaction> {\n return this.post<GetTransactionParams, Transaction>(\n '/getTransaction',\n params\n )\n }\n\n /**\n * Get the status of multiple transactions.\n * @param params - Filters for transactions.\n */\n public async getTransactions(\n params: GetTransactionsParams\n ): Promise<Transaction[]> {\n // Note: The Go handler returns []Transaction, the HTTP handler wraps it in JSON array.\n return this.post<GetTransactionsParams, Transaction[]>(\n '/getTransactions',\n params\n )\n }\n\n /**\n * Get a list of public keys available for signing.\n */\n public async getKeys(): Promise<Key[]> {\n // Go's addDummyArg is used for no-arg handlers, so we send an empty body.\n return this.post<Record<string, never>, Key[]>('/getKeys', {})\n }\n\n /**\n * Create a new key at the Wallet Provider.\n * @param params - The key creation parameters.\n */\n public async createKey(params: CreateKeyParams): Promise<Key> {\n return this.post<CreateKeyParams, Key>('/createKey', params)\n }\n\n /**\n * Get configuration parameters (client-side only).\n * Returns the current BaseURL, ApiKey, MasterKey, and TestNetwork settings.\n */\n public getConfiguration(): Record<string, unknown> {\n return {\n BaseURL: this.baseUrl,\n ApiKey: this.apiKey,\n MasterKey: this.masterKey,\n TestNetwork: this.testNetwork,\n }\n }\n\n /**\n * Set configuration parameters (client-side only).\n * Updates only the provided configuration fields.\n * @param params - Configuration parameters to set. All fields are optional.\n */\n public setConfiguration(params: {\n BaseURL?: string\n ApiKey?: string\n MasterKey?: string\n TestNetwork?: boolean\n }): Record<string, unknown> {\n if (params.BaseURL !== undefined) {\n this.baseUrl = params.BaseURL.endsWith('/')\n ? params.BaseURL.slice(0, -1)\n : params.BaseURL\n }\n if (params.ApiKey !== undefined) {\n this.apiKey = params.ApiKey\n }\n if (params.MasterKey !== undefined) {\n this.masterKey = params.MasterKey\n }\n if (params.TestNetwork !== undefined) {\n this.testNetwork = params.TestNetwork\n }\n return this.getConfiguration()\n }\n}\n","// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n buildController,\n type CreateKeyParams,\n type CreateKeyResult,\n type GetConfigurationResult,\n type GetKeysResult,\n type GetTransactionParams,\n type GetTransactionResult,\n type GetTransactionsParams,\n type GetTransactionsResult,\n PartyMode,\n type SetConfigurationParams,\n type SetConfigurationResult,\n type SigningDriverInterface,\n SigningProvider,\n type SignTransactionParams,\n type SignTransactionResult,\n type SubscribeTransactionsParams,\n type SubscribeTransactionsResult,\n} from '@canton-network/core-signing-lib'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\nimport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport interface BlockdaemonConfig {\n baseUrl: string\n apiKey: string\n}\n\nexport default class BlockdaemonSigningDriver implements SigningDriverInterface {\n private client: SigningAPIClient\n\n constructor(config: BlockdaemonConfig) {\n this.client = new SigningAPIClient(config.baseUrl)\n this.client.setConfiguration({ ApiKey: config.apiKey })\n }\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.BLOCKDAEMON\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n try {\n const tx = await this.client.signTransaction({\n tx: params.tx,\n txHash: params.txHash,\n publicKey: params.publicKey,\n internalTxId: params.internalTxId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'signing_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n try {\n const tx = await this.client.getTransaction({\n txId: params.txId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'transaction_not_found',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (params.publicKeys || params.txIds) {\n try {\n const transactions = await this.client.getTransactions({\n txIds: params.txIds,\n publicKeys: params.publicKeys,\n })\n return {\n transactions: transactions.map((tx) => ({\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n } else {\n return {\n error: 'bad_arguments',\n error_description:\n 'either public key or txIds must be supplied',\n }\n }\n },\n\n getKeys: async (): Promise<GetKeysResult> => {\n try {\n const keys = await this.client.getKeys()\n return {\n keys: keys.map((k) => ({\n id: k.id,\n name: k.name,\n publicKey: k.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n try {\n const key = await this.client.createKey({\n name: params.name,\n })\n return {\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n }\n } catch (error) {\n return {\n error: 'create_key_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> => {\n const config = this.client.getConfiguration()\n return {\n ...config,\n ApiKey: config.ApiKey ? '***HIDDEN***' : undefined,\n MasterKey: config.MasterKey ? '***HIDDEN***' : undefined,\n }\n },\n\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> => {\n this.client.setConfiguration({\n BaseURL: params['BaseURL'] as string | undefined,\n ApiKey: params['ApiKey'] as string | undefined,\n MasterKey: params['MasterKey'] as string | undefined,\n TestNetwork: params['TestNetwork'] as boolean | undefined,\n })\n return params\n },\n\n subscribeTransactions: async (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/signing-api-sdk.ts","../src/index.ts"],"names":["PartyMode","SigningProvider","buildController"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n Key,\n Transaction,\n SignTransactionParams,\n GetTransactionParams,\n GetTransactionsParams,\n CreateKeyParams,\n} from '@canton-network/core-signing-lib'\n\n/**\n * A TypeScript SDK client for the Wallet Signing API.\n */\nexport class SigningAPIClient {\n private baseUrl: string\n private apiKey: string | undefined\n private masterKey: string\n private testNetwork: boolean\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\n this.masterKey = 'Default'\n this.testNetwork = true\n }\n\n private async post<I extends Record<string, unknown>, O>(\n endpoint: string,\n params: I\n ): Promise<O> {\n const url = `${this.baseUrl}${endpoint}`\n\n // Merge context params (masterKey and testNetwork) into the request body\n const bodyToSend = {\n ...params,\n masterKey: this.masterKey,\n testNetwork: this.testNetwork,\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(bodyToSend),\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(\n `API call to ${endpoint} failed (${response.status}): ${errorText}`\n )\n }\n\n // Handle 204 No Content for methods that return empty objects or null/void\n if (\n response.status === 204 ||\n response.headers.get('content-length') === '0'\n ) {\n // SetConfiguration/GetConfiguration return map[string]any which might be empty\n return {} as O\n }\n\n return response.json() as Promise<O>\n }\n\n /**\n * Uses the Wallet Provider to sign a transaction.\n * @param params - The transaction signing parameters.\n */\n public async signTransaction(\n params: SignTransactionParams\n ): Promise<Transaction> {\n return this.post<SignTransactionParams, Transaction>(\n '/signTransaction',\n params\n )\n }\n\n /**\n * Get the status of a single transaction by its ID.\n * @param params - The transaction ID parameters.\n */\n public async getTransaction(\n params: GetTransactionParams\n ): Promise<Transaction> {\n return this.post<GetTransactionParams, Transaction>(\n '/getTransaction',\n params\n )\n }\n\n /**\n * Get the status of multiple transactions.\n * @param params - Filters for transactions.\n */\n public async getTransactions(\n params: GetTransactionsParams\n ): Promise<Transaction[]> {\n // Note: The Go handler returns []Transaction, the HTTP handler wraps it in JSON array.\n return this.post<GetTransactionsParams, Transaction[]>(\n '/getTransactions',\n params\n )\n }\n\n /**\n * Get a list of public keys available for signing.\n */\n public async getKeys(): Promise<Key[]> {\n // Go's addDummyArg is used for no-arg handlers, so we send an empty body.\n return this.post<Record<string, never>, Key[]>('/getKeys', {})\n }\n\n /**\n * Create a new key at the Wallet Provider.\n * @param params - The key creation parameters.\n */\n public async createKey(params: CreateKeyParams): Promise<Key> {\n return this.post<CreateKeyParams, Key>('/createKey', params)\n }\n\n /**\n * Get configuration parameters (client-side only).\n * Returns the current BaseURL, ApiKey, MasterKey, and TestNetwork settings.\n */\n public getConfiguration(): Record<string, unknown> {\n return {\n BaseURL: this.baseUrl,\n ApiKey: this.apiKey,\n MasterKey: this.masterKey,\n TestNetwork: this.testNetwork,\n }\n }\n\n /**\n * Set configuration parameters (client-side only).\n * Updates only the provided configuration fields.\n * @param params - Configuration parameters to set. All fields are optional.\n */\n public setConfiguration(params: {\n BaseURL?: string\n ApiKey?: string\n MasterKey?: string\n TestNetwork?: boolean\n }): Record<string, unknown> {\n if (params.BaseURL !== undefined) {\n this.baseUrl = params.BaseURL.endsWith('/')\n ? params.BaseURL.slice(0, -1)\n : params.BaseURL\n }\n if (params.ApiKey !== undefined) {\n this.apiKey = params.ApiKey\n }\n if (params.MasterKey !== undefined) {\n this.masterKey = params.MasterKey\n }\n if (params.TestNetwork !== undefined) {\n this.testNetwork = params.TestNetwork\n }\n return this.getConfiguration()\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n buildController,\n type CreateKeyParams,\n type CreateKeyResult,\n type GetConfigurationResult,\n type GetKeysResult,\n type GetTransactionParams,\n type GetTransactionResult,\n type GetTransactionsParams,\n type GetTransactionsResult,\n PartyMode,\n type SetConfigurationParams,\n type SetConfigurationResult,\n type SigningDriverInterface,\n SigningProvider,\n type SignTransactionParams,\n type SignTransactionResult,\n type SubscribeTransactionsParams,\n type SubscribeTransactionsResult,\n} from '@canton-network/core-signing-lib'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\nimport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport interface BlockdaemonConfig {\n baseUrl: string\n apiKey: string\n}\n\nexport default class BlockdaemonSigningDriver implements SigningDriverInterface {\n private client: SigningAPIClient\n\n constructor(config: BlockdaemonConfig) {\n this.client = new SigningAPIClient(config.baseUrl)\n this.client.setConfiguration({ ApiKey: config.apiKey })\n }\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.BLOCKDAEMON\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n try {\n if (!params.keyIdentifier.publicKey) {\n return {\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n }\n }\n const tx = await this.client.signTransaction({\n tx: params.tx,\n txHash: params.txHash,\n keyIdentifier: {\n publicKey: params.keyIdentifier.publicKey,\n },\n internalTxId: params.internalTxId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'signing_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n try {\n const tx = await this.client.getTransaction({\n txId: params.txId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'transaction_not_found',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (params.publicKeys || params.txIds) {\n try {\n const transactions = await this.client.getTransactions({\n txIds: params.txIds,\n publicKeys: params.publicKeys,\n })\n return {\n transactions: transactions.map((tx) => ({\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n } else {\n return {\n error: 'bad_arguments',\n error_description:\n 'either public key or txIds must be supplied',\n }\n }\n },\n\n getKeys: async (): Promise<GetKeysResult> => {\n try {\n const keys = await this.client.getKeys()\n return {\n keys: keys.map((k) => ({\n id: k.id,\n name: k.name,\n publicKey: k.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n try {\n const key = await this.client.createKey({\n name: params.name,\n })\n return {\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n }\n } catch (error) {\n return {\n error: 'create_key_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> => {\n const config = this.client.getConfiguration()\n return {\n ...config,\n ApiKey: config.ApiKey ? '***HIDDEN***' : undefined,\n MasterKey: config.MasterKey ? '***HIDDEN***' : undefined,\n }\n },\n\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> => {\n this.client.setConfiguration({\n BaseURL: params['BaseURL'] as string | undefined,\n ApiKey: params['ApiKey'] as string | undefined,\n MasterKey: params['MasterKey'] as string | undefined,\n TestNetwork: params['TestNetwork'] as boolean | undefined,\n })\n return params\n },\n\n subscribeTransactions: async (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAUH,SAAS,EAGT,KAAK,sBAAsB,EAC3B,eAAe,EAKlB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,CAAC,OAAO,OAAO,wBAAyB,YAAW,sBAAsB;IAC3E,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,iBAAiB;IAK9B,SAAS,YAAqB;IAC9B,eAAe,kBAA8B;IAG7C,UAAU,GAAI,SAAS,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAUH,SAAS,EAGT,KAAK,sBAAsB,EAC3B,eAAe,EAKlB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,CAAC,OAAO,OAAO,wBAAyB,YAAW,sBAAsB;IAC3E,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,iBAAiB;IAK9B,SAAS,YAAqB;IAC9B,eAAe,kBAA8B;IAG7C,UAAU,GAAI,SAAS,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS;;;;;;;;;MAwJzD;CACT"}
|
package/dist/index.js
CHANGED
|
@@ -131,10 +131,18 @@ var BlockdaemonSigningDriver = class {
|
|
|
131
131
|
__publicField(this, "controller", (_userId) => buildController({
|
|
132
132
|
signTransaction: async (params) => {
|
|
133
133
|
try {
|
|
134
|
+
if (!params.keyIdentifier.publicKey) {
|
|
135
|
+
return {
|
|
136
|
+
error: "key_not_found",
|
|
137
|
+
error_description: "The provided key identifier must include a publicKey."
|
|
138
|
+
};
|
|
139
|
+
}
|
|
134
140
|
const tx = await this.client.signTransaction({
|
|
135
141
|
tx: params.tx,
|
|
136
142
|
txHash: params.txHash,
|
|
137
|
-
|
|
143
|
+
keyIdentifier: {
|
|
144
|
+
publicKey: params.keyIdentifier.publicKey
|
|
145
|
+
},
|
|
138
146
|
internalTxId: params.internalTxId
|
|
139
147
|
});
|
|
140
148
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/signing-api-sdk.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n Key,\n Transaction,\n SignTransactionParams,\n GetTransactionParams,\n GetTransactionsParams,\n CreateKeyParams,\n} from '@canton-network/core-signing-lib'\n\n/**\n * A TypeScript SDK client for the Wallet Signing API.\n */\nexport class SigningAPIClient {\n private baseUrl: string\n private apiKey: string | undefined\n private masterKey: string\n private testNetwork: boolean\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\n this.masterKey = 'Default'\n this.testNetwork = true\n }\n\n private async post<I extends Record<string, unknown>, O>(\n endpoint: string,\n params: I\n ): Promise<O> {\n const url = `${this.baseUrl}${endpoint}`\n\n // Merge context params (masterKey and testNetwork) into the request body\n const bodyToSend = {\n ...params,\n masterKey: this.masterKey,\n testNetwork: this.testNetwork,\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(bodyToSend),\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(\n `API call to ${endpoint} failed (${response.status}): ${errorText}`\n )\n }\n\n // Handle 204 No Content for methods that return empty objects or null/void\n if (\n response.status === 204 ||\n response.headers.get('content-length') === '0'\n ) {\n // SetConfiguration/GetConfiguration return map[string]any which might be empty\n return {} as O\n }\n\n return response.json() as Promise<O>\n }\n\n /**\n * Uses the Wallet Provider to sign a transaction.\n * @param params - The transaction signing parameters.\n */\n public async signTransaction(\n params: SignTransactionParams\n ): Promise<Transaction> {\n return this.post<SignTransactionParams, Transaction>(\n '/signTransaction',\n params\n )\n }\n\n /**\n * Get the status of a single transaction by its ID.\n * @param params - The transaction ID parameters.\n */\n public async getTransaction(\n params: GetTransactionParams\n ): Promise<Transaction> {\n return this.post<GetTransactionParams, Transaction>(\n '/getTransaction',\n params\n )\n }\n\n /**\n * Get the status of multiple transactions.\n * @param params - Filters for transactions.\n */\n public async getTransactions(\n params: GetTransactionsParams\n ): Promise<Transaction[]> {\n // Note: The Go handler returns []Transaction, the HTTP handler wraps it in JSON array.\n return this.post<GetTransactionsParams, Transaction[]>(\n '/getTransactions',\n params\n )\n }\n\n /**\n * Get a list of public keys available for signing.\n */\n public async getKeys(): Promise<Key[]> {\n // Go's addDummyArg is used for no-arg handlers, so we send an empty body.\n return this.post<Record<string, never>, Key[]>('/getKeys', {})\n }\n\n /**\n * Create a new key at the Wallet Provider.\n * @param params - The key creation parameters.\n */\n public async createKey(params: CreateKeyParams): Promise<Key> {\n return this.post<CreateKeyParams, Key>('/createKey', params)\n }\n\n /**\n * Get configuration parameters (client-side only).\n * Returns the current BaseURL, ApiKey, MasterKey, and TestNetwork settings.\n */\n public getConfiguration(): Record<string, unknown> {\n return {\n BaseURL: this.baseUrl,\n ApiKey: this.apiKey,\n MasterKey: this.masterKey,\n TestNetwork: this.testNetwork,\n }\n }\n\n /**\n * Set configuration parameters (client-side only).\n * Updates only the provided configuration fields.\n * @param params - Configuration parameters to set. All fields are optional.\n */\n public setConfiguration(params: {\n BaseURL?: string\n ApiKey?: string\n MasterKey?: string\n TestNetwork?: boolean\n }): Record<string, unknown> {\n if (params.BaseURL !== undefined) {\n this.baseUrl = params.BaseURL.endsWith('/')\n ? params.BaseURL.slice(0, -1)\n : params.BaseURL\n }\n if (params.ApiKey !== undefined) {\n this.apiKey = params.ApiKey\n }\n if (params.MasterKey !== undefined) {\n this.masterKey = params.MasterKey\n }\n if (params.TestNetwork !== undefined) {\n this.testNetwork = params.TestNetwork\n }\n return this.getConfiguration()\n }\n}\n","// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n buildController,\n type CreateKeyParams,\n type CreateKeyResult,\n type GetConfigurationResult,\n type GetKeysResult,\n type GetTransactionParams,\n type GetTransactionResult,\n type GetTransactionsParams,\n type GetTransactionsResult,\n PartyMode,\n type SetConfigurationParams,\n type SetConfigurationResult,\n type SigningDriverInterface,\n SigningProvider,\n type SignTransactionParams,\n type SignTransactionResult,\n type SubscribeTransactionsParams,\n type SubscribeTransactionsResult,\n} from '@canton-network/core-signing-lib'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\nimport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport interface BlockdaemonConfig {\n baseUrl: string\n apiKey: string\n}\n\nexport default class BlockdaemonSigningDriver implements SigningDriverInterface {\n private client: SigningAPIClient\n\n constructor(config: BlockdaemonConfig) {\n this.client = new SigningAPIClient(config.baseUrl)\n this.client.setConfiguration({ ApiKey: config.apiKey })\n }\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.BLOCKDAEMON\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n try {\n const tx = await this.client.signTransaction({\n tx: params.tx,\n txHash: params.txHash,\n publicKey: params.publicKey,\n internalTxId: params.internalTxId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'signing_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n try {\n const tx = await this.client.getTransaction({\n txId: params.txId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'transaction_not_found',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (params.publicKeys || params.txIds) {\n try {\n const transactions = await this.client.getTransactions({\n txIds: params.txIds,\n publicKeys: params.publicKeys,\n })\n return {\n transactions: transactions.map((tx) => ({\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n } else {\n return {\n error: 'bad_arguments',\n error_description:\n 'either public key or txIds must be supplied',\n }\n }\n },\n\n getKeys: async (): Promise<GetKeysResult> => {\n try {\n const keys = await this.client.getKeys()\n return {\n keys: keys.map((k) => ({\n id: k.id,\n name: k.name,\n publicKey: k.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n try {\n const key = await this.client.createKey({\n name: params.name,\n })\n return {\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n }\n } catch (error) {\n return {\n error: 'create_key_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> => {\n const config = this.client.getConfiguration()\n return {\n ...config,\n ApiKey: config.ApiKey ? '***HIDDEN***' : undefined,\n MasterKey: config.MasterKey ? '***HIDDEN***' : undefined,\n }\n },\n\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> => {\n this.client.setConfiguration({\n BaseURL: params['BaseURL'] as string | undefined,\n ApiKey: params['ApiKey'] as string | undefined,\n MasterKey: params['MasterKey'] as string | undefined,\n TestNetwork: params['TestNetwork'] as boolean | undefined,\n })\n return params\n },\n\n subscribeTransactions: async (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/signing-api-sdk.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n Key,\n Transaction,\n SignTransactionParams,\n GetTransactionParams,\n GetTransactionsParams,\n CreateKeyParams,\n} from '@canton-network/core-signing-lib'\n\n/**\n * A TypeScript SDK client for the Wallet Signing API.\n */\nexport class SigningAPIClient {\n private baseUrl: string\n private apiKey: string | undefined\n private masterKey: string\n private testNetwork: boolean\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\n this.masterKey = 'Default'\n this.testNetwork = true\n }\n\n private async post<I extends Record<string, unknown>, O>(\n endpoint: string,\n params: I\n ): Promise<O> {\n const url = `${this.baseUrl}${endpoint}`\n\n // Merge context params (masterKey and testNetwork) into the request body\n const bodyToSend = {\n ...params,\n masterKey: this.masterKey,\n testNetwork: this.testNetwork,\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(bodyToSend),\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(\n `API call to ${endpoint} failed (${response.status}): ${errorText}`\n )\n }\n\n // Handle 204 No Content for methods that return empty objects or null/void\n if (\n response.status === 204 ||\n response.headers.get('content-length') === '0'\n ) {\n // SetConfiguration/GetConfiguration return map[string]any which might be empty\n return {} as O\n }\n\n return response.json() as Promise<O>\n }\n\n /**\n * Uses the Wallet Provider to sign a transaction.\n * @param params - The transaction signing parameters.\n */\n public async signTransaction(\n params: SignTransactionParams\n ): Promise<Transaction> {\n return this.post<SignTransactionParams, Transaction>(\n '/signTransaction',\n params\n )\n }\n\n /**\n * Get the status of a single transaction by its ID.\n * @param params - The transaction ID parameters.\n */\n public async getTransaction(\n params: GetTransactionParams\n ): Promise<Transaction> {\n return this.post<GetTransactionParams, Transaction>(\n '/getTransaction',\n params\n )\n }\n\n /**\n * Get the status of multiple transactions.\n * @param params - Filters for transactions.\n */\n public async getTransactions(\n params: GetTransactionsParams\n ): Promise<Transaction[]> {\n // Note: The Go handler returns []Transaction, the HTTP handler wraps it in JSON array.\n return this.post<GetTransactionsParams, Transaction[]>(\n '/getTransactions',\n params\n )\n }\n\n /**\n * Get a list of public keys available for signing.\n */\n public async getKeys(): Promise<Key[]> {\n // Go's addDummyArg is used for no-arg handlers, so we send an empty body.\n return this.post<Record<string, never>, Key[]>('/getKeys', {})\n }\n\n /**\n * Create a new key at the Wallet Provider.\n * @param params - The key creation parameters.\n */\n public async createKey(params: CreateKeyParams): Promise<Key> {\n return this.post<CreateKeyParams, Key>('/createKey', params)\n }\n\n /**\n * Get configuration parameters (client-side only).\n * Returns the current BaseURL, ApiKey, MasterKey, and TestNetwork settings.\n */\n public getConfiguration(): Record<string, unknown> {\n return {\n BaseURL: this.baseUrl,\n ApiKey: this.apiKey,\n MasterKey: this.masterKey,\n TestNetwork: this.testNetwork,\n }\n }\n\n /**\n * Set configuration parameters (client-side only).\n * Updates only the provided configuration fields.\n * @param params - Configuration parameters to set. All fields are optional.\n */\n public setConfiguration(params: {\n BaseURL?: string\n ApiKey?: string\n MasterKey?: string\n TestNetwork?: boolean\n }): Record<string, unknown> {\n if (params.BaseURL !== undefined) {\n this.baseUrl = params.BaseURL.endsWith('/')\n ? params.BaseURL.slice(0, -1)\n : params.BaseURL\n }\n if (params.ApiKey !== undefined) {\n this.apiKey = params.ApiKey\n }\n if (params.MasterKey !== undefined) {\n this.masterKey = params.MasterKey\n }\n if (params.TestNetwork !== undefined) {\n this.testNetwork = params.TestNetwork\n }\n return this.getConfiguration()\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n buildController,\n type CreateKeyParams,\n type CreateKeyResult,\n type GetConfigurationResult,\n type GetKeysResult,\n type GetTransactionParams,\n type GetTransactionResult,\n type GetTransactionsParams,\n type GetTransactionsResult,\n PartyMode,\n type SetConfigurationParams,\n type SetConfigurationResult,\n type SigningDriverInterface,\n SigningProvider,\n type SignTransactionParams,\n type SignTransactionResult,\n type SubscribeTransactionsParams,\n type SubscribeTransactionsResult,\n} from '@canton-network/core-signing-lib'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\nimport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport { SigningAPIClient } from './signing-api-sdk.js'\n\nexport interface BlockdaemonConfig {\n baseUrl: string\n apiKey: string\n}\n\nexport default class BlockdaemonSigningDriver implements SigningDriverInterface {\n private client: SigningAPIClient\n\n constructor(config: BlockdaemonConfig) {\n this.client = new SigningAPIClient(config.baseUrl)\n this.client.setConfiguration({ ApiKey: config.apiKey })\n }\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.BLOCKDAEMON\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n try {\n if (!params.keyIdentifier.publicKey) {\n return {\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n }\n }\n const tx = await this.client.signTransaction({\n tx: params.tx,\n txHash: params.txHash,\n keyIdentifier: {\n publicKey: params.keyIdentifier.publicKey,\n },\n internalTxId: params.internalTxId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'signing_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n try {\n const tx = await this.client.getTransaction({\n txId: params.txId,\n })\n return {\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n } catch (error) {\n return {\n error: 'transaction_not_found',\n error_description: (error as Error).message,\n }\n }\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (params.publicKeys || params.txIds) {\n try {\n const transactions = await this.client.getTransactions({\n txIds: params.txIds,\n publicKeys: params.publicKeys,\n })\n return {\n transactions: transactions.map((tx) => ({\n txId: tx.txId,\n status: tx.status,\n signature: tx.signature,\n publicKey: tx.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n } else {\n return {\n error: 'bad_arguments',\n error_description:\n 'either public key or txIds must be supplied',\n }\n }\n },\n\n getKeys: async (): Promise<GetKeysResult> => {\n try {\n const keys = await this.client.getKeys()\n return {\n keys: keys.map((k) => ({\n id: k.id,\n name: k.name,\n publicKey: k.publicKey,\n })),\n }\n } catch (error) {\n return {\n error: 'fetch_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n try {\n const key = await this.client.createKey({\n name: params.name,\n })\n return {\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n }\n } catch (error) {\n return {\n error: 'create_key_error',\n error_description: (error as Error).message,\n }\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> => {\n const config = this.client.getConfiguration()\n return {\n ...config,\n ApiKey: config.ApiKey ? '***HIDDEN***' : undefined,\n MasterKey: config.MasterKey ? '***HIDDEN***' : undefined,\n }\n },\n\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> => {\n this.client.setConfiguration({\n BaseURL: params['BaseURL'] as string | undefined,\n ApiKey: params['ApiKey'] as string | undefined,\n MasterKey: params['MasterKey'] as string | undefined,\n TestNetwork: params['TestNetwork'] as boolean | undefined,\n })\n return params\n },\n\n subscribeTransactions: async (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canton-network/core-signing-blockdaemon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Wallet Gateway signing driver for Blockdaemon",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"clean": "rm -rf ./dist"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@canton-network/core-signing-lib": "^0.
|
|
25
|
-
"@canton-network/core-wallet-auth": "^0.16.
|
|
24
|
+
"@canton-network/core-signing-lib": "^0.19.0",
|
|
25
|
+
"@canton-network/core-wallet-auth": "^0.16.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^24.10.1",
|