🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@canton-network/core-signing-internal

Package Overview
Dependencies
Maintainers
3
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@canton-network/core-signing-internal - npm Package Compare versions

Comparing version
1.2.3
to
1.3.1
+1
-0
dist/controller.d.ts

@@ -10,2 +10,3 @@ import { PartyMode, SigningDriverInterface, SigningProvider, SigningDriverStore } from '@canton-network/core-signing-lib';

signTransaction: import("@canton-network/core-signing-lib").SignTransaction;
signMessage: import("@canton-network/core-signing-lib").SignMessage;
getTransaction: import("@canton-network/core-signing-lib").GetTransaction;

@@ -12,0 +13,0 @@ getTransactions: import("@canton-network/core-signing-lib").GetTransactions;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,SAAS,EACT,sBAAsB,EACtB,eAAe,EAGf,kBAAkB,EAGrB,MAAM,kCAAkC,CAAA;AAoBzC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAyB9D,qBAAa,qBAAsB,YAAW,sBAAsB;IAChE,OAAO,CAAC,KAAK,CAAoB;IAE1B,SAAS,YAAqB;IAC9B,eAAe,kBAAgC;gBAE1C,KAAK,EAAE,kBAAkB;IAI9B,UAAU,GAAI,SAAS,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS;;;;;;;;;MAyMzD;CACT"}
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,SAAS,EACT,sBAAsB,EACtB,eAAe,EAIf,kBAAkB,EAGrB,MAAM,kCAAkC,CAAA;AAsBzC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAyB9D,qBAAa,qBAAsB,YAAW,sBAAsB;IAChE,OAAO,CAAC,KAAK,CAAoB;IAE1B,SAAS,YAAqB;IAC9B,eAAe,kBAAgC;gBAE1C,KAAK,EAAE,kBAAkB;IAI9B,UAAU,GAAI,SAAS,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS;;;;;;;;;;MAmOzD;CACT"}

@@ -72,2 +72,22 @@ 'use strict';

},
signMessage: async (params) => {
if (!params.keyIdentifier?.publicKey) {
return Promise.resolve({
error: "key_not_found",
error_description: "The provided key identifier must include a publicKey."
});
}
const key = await this.store.getSigningKeyByPublicKey(
params.keyIdentifier.publicKey
);
if (!key?.privateKey) {
return Promise.resolve({
error: "key_not_found",
error_description: "The provided key identifier must include a privateKey."
});
}
return Promise.resolve({
signature: coreSigningLib.signMessage(params.message, key.privateKey)
});
},
getTransaction: async (params) => {

@@ -74,0 +94,0 @@ if (!_userId) {

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/controller.ts"],"names":["PartyMode","SigningProvider","buildController","randomUUID","signTransactionHash","createKeyPair"],"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\n// Disabled unused vars rule to allow for future implementations\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n buildController,\n PartyMode,\n SigningDriverInterface,\n SigningProvider,\n signTransactionHash,\n createKeyPair,\n SigningDriverStore,\n SigningTransaction,\n SigningKey,\n} from '@canton-network/core-signing-lib'\n\nimport {\n SignTransactionParams,\n SignTransactionResult,\n GetTransactionParams,\n GetTransactionResult,\n GetTransactionsResult,\n GetTransactionsParams,\n GetKeysResult,\n CreateKeyParams,\n CreateKeyResult,\n GetConfigurationResult,\n SetConfigurationParams,\n SubscribeTransactionsParams,\n SubscribeTransactionsResult,\n SetConfigurationResult,\n Transaction,\n} from '@canton-network/core-signing-lib'\nimport { randomUUID } from 'node:crypto'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\n\ninterface InternalKey {\n id: string\n name: string\n publicKey: string\n privateKey: string\n}\n\ninterface InternalTransaction {\n id: string\n hash: string\n signature: string\n publicKey: string\n createdAt: Date\n}\nconst convertInternalTransaction = (tx: InternalTransaction): Transaction => {\n return {\n txId: tx.id,\n status: 'signed',\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n}\n\nexport class InternalSigningDriver implements SigningDriverInterface {\n private store: SigningDriverStore\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.WALLET_KERNEL\n\n constructor(store: SigningDriverStore) {\n this.store = store\n }\n\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n // TODO: validate transaction here\n\n if (!params.keyIdentifier.publicKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n })\n }\n\n const key = await this.store.getSigningKeyByPublicKey(\n params.keyIdentifier.publicKey\n )\n\n if (key?.privateKey && _userId) {\n const txId = randomUUID()\n const signature = signTransactionHash(\n params.txHash,\n key.privateKey\n )\n\n const now = new Date()\n const internalTransaction: SigningTransaction = {\n id: txId,\n hash: params.txHash,\n signature,\n publicKey: params.keyIdentifier.publicKey,\n createdAt: now,\n status: 'signed',\n updatedAt: now,\n signedAt: now,\n }\n\n this.store.setSigningTransaction(\n _userId,\n internalTransaction\n )\n\n return Promise.resolve({\n txId,\n status: 'signed',\n signature,\n } as SignTransactionResult)\n } else {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided public key does not exist in the signing.',\n })\n }\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const storedTx = await this.store.getSigningTransaction(\n _userId,\n params.txId\n )\n if (storedTx) {\n return {\n txId: storedTx.id,\n status: storedTx.status,\n signature: storedTx.signature || '',\n publicKey: storedTx.publicKey,\n }\n }\n return Promise.resolve({\n error: 'transaction_not_found',\n error_description:\n 'The requested transaction does not exist.',\n })\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n if (params.publicKeys || params.txIds) {\n const transactions =\n await this.store.listSigningTransactionsByTxIdsAndPublicKeys(\n params.txIds || [],\n params.publicKeys || []\n )\n\n return Promise.resolve({\n transactions: transactions.map(\n (tx: SigningTransaction) =>\n convertInternalTransaction({\n ...tx,\n signature: tx.signature || 'signed',\n createdAt: new Date(tx.createdAt),\n })\n ),\n })\n } else {\n return Promise.resolve({\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 if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const keys = await this.store.listSigningKeys(_userId)\n if (keys.length > 0) {\n return Promise.resolve({\n keys: Array.from(keys).map((key) => ({\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n })),\n } as GetKeysResult)\n }\n\n return Promise.resolve({\n keys: [],\n })\n },\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const { publicKey, privateKey } = createKeyPair()\n const id = randomUUID()\n\n const now = new Date()\n const internalKey: SigningKey = {\n id,\n name: params.name,\n publicKey,\n privateKey,\n createdAt: now,\n updatedAt: now,\n }\n\n await this.store.setSigningKey(_userId, internalKey)\n\n return {\n id,\n publicKey,\n name: params.name,\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> =>\n Promise.resolve({} as GetConfigurationResult),\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> =>\n Promise.resolve({} as SetConfigurationResult),\n\n // TODO: implement subscribeTransactions - we will need to figure out how to handle subscriptions\n // when the controller is not running in a server context\n subscribeTransactions: async (\n params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
{"version":3,"sources":["../src/controller.ts"],"names":["PartyMode","SigningProvider","buildController","randomUUID","signTransactionHash","signMessage","createKeyPair"],"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\n// Disabled unused vars rule to allow for future implementations\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n buildController,\n PartyMode,\n SigningDriverInterface,\n SigningProvider,\n signTransactionHash,\n signMessage,\n createKeyPair,\n SigningDriverStore,\n SigningTransaction,\n SigningKey,\n} from '@canton-network/core-signing-lib'\n\nimport {\n SignTransactionParams,\n SignTransactionResult,\n GetTransactionParams,\n GetTransactionResult,\n GetTransactionsResult,\n GetTransactionsParams,\n GetKeysResult,\n CreateKeyParams,\n CreateKeyResult,\n GetConfigurationResult,\n SetConfigurationParams,\n SubscribeTransactionsParams,\n SubscribeTransactionsResult,\n SetConfigurationResult,\n Transaction,\n SignMessageParams,\n SignMessageResult,\n} from '@canton-network/core-signing-lib'\nimport { randomUUID } from 'node:crypto'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\n\ninterface InternalKey {\n id: string\n name: string\n publicKey: string\n privateKey: string\n}\n\ninterface InternalTransaction {\n id: string\n hash: string\n signature: string\n publicKey: string\n createdAt: Date\n}\nconst convertInternalTransaction = (tx: InternalTransaction): Transaction => {\n return {\n txId: tx.id,\n status: 'signed',\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n}\n\nexport class InternalSigningDriver implements SigningDriverInterface {\n private store: SigningDriverStore\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.WALLET_KERNEL\n\n constructor(store: SigningDriverStore) {\n this.store = store\n }\n\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n // TODO: validate transaction here\n\n if (!params.keyIdentifier.publicKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n })\n }\n\n const key = await this.store.getSigningKeyByPublicKey(\n params.keyIdentifier.publicKey\n )\n\n if (key?.privateKey && _userId) {\n const txId = randomUUID()\n const signature = signTransactionHash(\n params.txHash,\n key.privateKey\n )\n\n const now = new Date()\n const internalTransaction: SigningTransaction = {\n id: txId,\n hash: params.txHash,\n signature,\n publicKey: params.keyIdentifier.publicKey,\n createdAt: now,\n status: 'signed',\n updatedAt: now,\n signedAt: now,\n }\n\n this.store.setSigningTransaction(\n _userId,\n internalTransaction\n )\n\n return Promise.resolve({\n txId,\n status: 'signed',\n signature,\n } as SignTransactionResult)\n } else {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided public key does not exist in the signing.',\n })\n }\n },\n\n signMessage: async (\n params: SignMessageParams\n ): Promise<SignMessageResult> => {\n if (!params.keyIdentifier?.publicKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n })\n }\n\n const key = await this.store.getSigningKeyByPublicKey(\n params.keyIdentifier.publicKey\n )\n if (!key?.privateKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a privateKey.',\n })\n }\n return Promise.resolve({\n signature: signMessage(params.message, key.privateKey),\n })\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const storedTx = await this.store.getSigningTransaction(\n _userId,\n params.txId\n )\n if (storedTx) {\n return {\n txId: storedTx.id,\n status: storedTx.status,\n signature: storedTx.signature || '',\n publicKey: storedTx.publicKey,\n }\n }\n return Promise.resolve({\n error: 'transaction_not_found',\n error_description:\n 'The requested transaction does not exist.',\n })\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n if (params.publicKeys || params.txIds) {\n const transactions =\n await this.store.listSigningTransactionsByTxIdsAndPublicKeys(\n params.txIds || [],\n params.publicKeys || []\n )\n\n return Promise.resolve({\n transactions: transactions.map(\n (tx: SigningTransaction) =>\n convertInternalTransaction({\n ...tx,\n signature: tx.signature || 'signed',\n createdAt: new Date(tx.createdAt),\n })\n ),\n })\n } else {\n return Promise.resolve({\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 if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const keys = await this.store.listSigningKeys(_userId)\n if (keys.length > 0) {\n return Promise.resolve({\n keys: Array.from(keys).map((key) => ({\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n })),\n } as GetKeysResult)\n }\n\n return Promise.resolve({\n keys: [],\n })\n },\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const { publicKey, privateKey } = createKeyPair()\n const id = randomUUID()\n\n const now = new Date()\n const internalKey: SigningKey = {\n id,\n name: params.name,\n publicKey,\n privateKey,\n createdAt: now,\n updatedAt: now,\n }\n\n await this.store.setSigningKey(_userId, internalKey)\n\n return {\n id,\n publicKey,\n name: params.name,\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> =>\n Promise.resolve({} as GetConfigurationResult),\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> =>\n Promise.resolve({} as SetConfigurationResult),\n\n // TODO: implement subscribeTransactions - we will need to figure out how to handle subscriptions\n // when the controller is not running in a server context\n subscribeTransactions: async (\n params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}

@@ -1,2 +0,2 @@

import { PartyMode, SigningProvider, buildController, createKeyPair, signTransactionHash } from '@canton-network/core-signing-lib';
import { PartyMode, SigningProvider, buildController, createKeyPair, signMessage, signTransactionHash } from '@canton-network/core-signing-lib';
import { randomUUID } from 'crypto';

@@ -70,2 +70,22 @@

},
signMessage: async (params) => {
if (!params.keyIdentifier?.publicKey) {
return Promise.resolve({
error: "key_not_found",
error_description: "The provided key identifier must include a publicKey."
});
}
const key = await this.store.getSigningKeyByPublicKey(
params.keyIdentifier.publicKey
);
if (!key?.privateKey) {
return Promise.resolve({
error: "key_not_found",
error_description: "The provided key identifier must include a privateKey."
});
}
return Promise.resolve({
signature: signMessage(params.message, key.privateKey)
});
},
getTransaction: async (params) => {

@@ -72,0 +92,0 @@ if (!_userId) {

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/controller.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\n// Disabled unused vars rule to allow for future implementations\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n buildController,\n PartyMode,\n SigningDriverInterface,\n SigningProvider,\n signTransactionHash,\n createKeyPair,\n SigningDriverStore,\n SigningTransaction,\n SigningKey,\n} from '@canton-network/core-signing-lib'\n\nimport {\n SignTransactionParams,\n SignTransactionResult,\n GetTransactionParams,\n GetTransactionResult,\n GetTransactionsResult,\n GetTransactionsParams,\n GetKeysResult,\n CreateKeyParams,\n CreateKeyResult,\n GetConfigurationResult,\n SetConfigurationParams,\n SubscribeTransactionsParams,\n SubscribeTransactionsResult,\n SetConfigurationResult,\n Transaction,\n} from '@canton-network/core-signing-lib'\nimport { randomUUID } from 'node:crypto'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\n\ninterface InternalKey {\n id: string\n name: string\n publicKey: string\n privateKey: string\n}\n\ninterface InternalTransaction {\n id: string\n hash: string\n signature: string\n publicKey: string\n createdAt: Date\n}\nconst convertInternalTransaction = (tx: InternalTransaction): Transaction => {\n return {\n txId: tx.id,\n status: 'signed',\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n}\n\nexport class InternalSigningDriver implements SigningDriverInterface {\n private store: SigningDriverStore\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.WALLET_KERNEL\n\n constructor(store: SigningDriverStore) {\n this.store = store\n }\n\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n // TODO: validate transaction here\n\n if (!params.keyIdentifier.publicKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n })\n }\n\n const key = await this.store.getSigningKeyByPublicKey(\n params.keyIdentifier.publicKey\n )\n\n if (key?.privateKey && _userId) {\n const txId = randomUUID()\n const signature = signTransactionHash(\n params.txHash,\n key.privateKey\n )\n\n const now = new Date()\n const internalTransaction: SigningTransaction = {\n id: txId,\n hash: params.txHash,\n signature,\n publicKey: params.keyIdentifier.publicKey,\n createdAt: now,\n status: 'signed',\n updatedAt: now,\n signedAt: now,\n }\n\n this.store.setSigningTransaction(\n _userId,\n internalTransaction\n )\n\n return Promise.resolve({\n txId,\n status: 'signed',\n signature,\n } as SignTransactionResult)\n } else {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided public key does not exist in the signing.',\n })\n }\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const storedTx = await this.store.getSigningTransaction(\n _userId,\n params.txId\n )\n if (storedTx) {\n return {\n txId: storedTx.id,\n status: storedTx.status,\n signature: storedTx.signature || '',\n publicKey: storedTx.publicKey,\n }\n }\n return Promise.resolve({\n error: 'transaction_not_found',\n error_description:\n 'The requested transaction does not exist.',\n })\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n if (params.publicKeys || params.txIds) {\n const transactions =\n await this.store.listSigningTransactionsByTxIdsAndPublicKeys(\n params.txIds || [],\n params.publicKeys || []\n )\n\n return Promise.resolve({\n transactions: transactions.map(\n (tx: SigningTransaction) =>\n convertInternalTransaction({\n ...tx,\n signature: tx.signature || 'signed',\n createdAt: new Date(tx.createdAt),\n })\n ),\n })\n } else {\n return Promise.resolve({\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 if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const keys = await this.store.listSigningKeys(_userId)\n if (keys.length > 0) {\n return Promise.resolve({\n keys: Array.from(keys).map((key) => ({\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n })),\n } as GetKeysResult)\n }\n\n return Promise.resolve({\n keys: [],\n })\n },\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const { publicKey, privateKey } = createKeyPair()\n const id = randomUUID()\n\n const now = new Date()\n const internalKey: SigningKey = {\n id,\n name: params.name,\n publicKey,\n privateKey,\n createdAt: now,\n updatedAt: now,\n }\n\n await this.store.setSigningKey(_userId, internalKey)\n\n return {\n id,\n publicKey,\n name: params.name,\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> =>\n Promise.resolve({} as GetConfigurationResult),\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> =>\n Promise.resolve({} as SetConfigurationResult),\n\n // TODO: implement subscribeTransactions - we will need to figure out how to handle subscriptions\n // when the controller is not running in a server context\n subscribeTransactions: async (\n params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
{"version":3,"sources":["../src/controller.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\n// Disabled unused vars rule to allow for future implementations\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n buildController,\n PartyMode,\n SigningDriverInterface,\n SigningProvider,\n signTransactionHash,\n signMessage,\n createKeyPair,\n SigningDriverStore,\n SigningTransaction,\n SigningKey,\n} from '@canton-network/core-signing-lib'\n\nimport {\n SignTransactionParams,\n SignTransactionResult,\n GetTransactionParams,\n GetTransactionResult,\n GetTransactionsResult,\n GetTransactionsParams,\n GetKeysResult,\n CreateKeyParams,\n CreateKeyResult,\n GetConfigurationResult,\n SetConfigurationParams,\n SubscribeTransactionsParams,\n SubscribeTransactionsResult,\n SetConfigurationResult,\n Transaction,\n SignMessageParams,\n SignMessageResult,\n} from '@canton-network/core-signing-lib'\nimport { randomUUID } from 'node:crypto'\nimport { AuthContext } from '@canton-network/core-wallet-auth'\n\ninterface InternalKey {\n id: string\n name: string\n publicKey: string\n privateKey: string\n}\n\ninterface InternalTransaction {\n id: string\n hash: string\n signature: string\n publicKey: string\n createdAt: Date\n}\nconst convertInternalTransaction = (tx: InternalTransaction): Transaction => {\n return {\n txId: tx.id,\n status: 'signed',\n signature: tx.signature,\n publicKey: tx.publicKey,\n }\n}\n\nexport class InternalSigningDriver implements SigningDriverInterface {\n private store: SigningDriverStore\n\n public partyMode = PartyMode.EXTERNAL\n public signingProvider = SigningProvider.WALLET_KERNEL\n\n constructor(store: SigningDriverStore) {\n this.store = store\n }\n\n public controller = (_userId: AuthContext['userId'] | undefined) =>\n buildController({\n signTransaction: async (\n params: SignTransactionParams\n ): Promise<SignTransactionResult> => {\n // TODO: validate transaction here\n\n if (!params.keyIdentifier.publicKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n })\n }\n\n const key = await this.store.getSigningKeyByPublicKey(\n params.keyIdentifier.publicKey\n )\n\n if (key?.privateKey && _userId) {\n const txId = randomUUID()\n const signature = signTransactionHash(\n params.txHash,\n key.privateKey\n )\n\n const now = new Date()\n const internalTransaction: SigningTransaction = {\n id: txId,\n hash: params.txHash,\n signature,\n publicKey: params.keyIdentifier.publicKey,\n createdAt: now,\n status: 'signed',\n updatedAt: now,\n signedAt: now,\n }\n\n this.store.setSigningTransaction(\n _userId,\n internalTransaction\n )\n\n return Promise.resolve({\n txId,\n status: 'signed',\n signature,\n } as SignTransactionResult)\n } else {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided public key does not exist in the signing.',\n })\n }\n },\n\n signMessage: async (\n params: SignMessageParams\n ): Promise<SignMessageResult> => {\n if (!params.keyIdentifier?.publicKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a publicKey.',\n })\n }\n\n const key = await this.store.getSigningKeyByPublicKey(\n params.keyIdentifier.publicKey\n )\n if (!key?.privateKey) {\n return Promise.resolve({\n error: 'key_not_found',\n error_description:\n 'The provided key identifier must include a privateKey.',\n })\n }\n return Promise.resolve({\n signature: signMessage(params.message, key.privateKey),\n })\n },\n\n getTransaction: async (\n params: GetTransactionParams\n ): Promise<GetTransactionResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const storedTx = await this.store.getSigningTransaction(\n _userId,\n params.txId\n )\n if (storedTx) {\n return {\n txId: storedTx.id,\n status: storedTx.status,\n signature: storedTx.signature || '',\n publicKey: storedTx.publicKey,\n }\n }\n return Promise.resolve({\n error: 'transaction_not_found',\n error_description:\n 'The requested transaction does not exist.',\n })\n },\n\n getTransactions: async (\n params: GetTransactionsParams\n ): Promise<GetTransactionsResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n if (params.publicKeys || params.txIds) {\n const transactions =\n await this.store.listSigningTransactionsByTxIdsAndPublicKeys(\n params.txIds || [],\n params.publicKeys || []\n )\n\n return Promise.resolve({\n transactions: transactions.map(\n (tx: SigningTransaction) =>\n convertInternalTransaction({\n ...tx,\n signature: tx.signature || 'signed',\n createdAt: new Date(tx.createdAt),\n })\n ),\n })\n } else {\n return Promise.resolve({\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 if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const keys = await this.store.listSigningKeys(_userId)\n if (keys.length > 0) {\n return Promise.resolve({\n keys: Array.from(keys).map((key) => ({\n id: key.id,\n name: key.name,\n publicKey: key.publicKey,\n })),\n } as GetKeysResult)\n }\n\n return Promise.resolve({\n keys: [],\n })\n },\n createKey: async (\n params: CreateKeyParams\n ): Promise<CreateKeyResult> => {\n if (!_userId) {\n return Promise.resolve({\n error: 'userId_not_found',\n error_description:\n 'User ID is required for all signing operations.',\n })\n }\n\n const { publicKey, privateKey } = createKeyPair()\n const id = randomUUID()\n\n const now = new Date()\n const internalKey: SigningKey = {\n id,\n name: params.name,\n publicKey,\n privateKey,\n createdAt: now,\n updatedAt: now,\n }\n\n await this.store.setSigningKey(_userId, internalKey)\n\n return {\n id,\n publicKey,\n name: params.name,\n }\n },\n\n getConfiguration: async (): Promise<GetConfigurationResult> =>\n Promise.resolve({} as GetConfigurationResult),\n setConfiguration: async (\n params: SetConfigurationParams\n ): Promise<SetConfigurationResult> =>\n Promise.resolve({} as SetConfigurationResult),\n\n // TODO: implement subscribeTransactions - we will need to figure out how to handle subscriptions\n // when the controller is not running in a server context\n subscribeTransactions: async (\n params: SubscribeTransactionsParams\n ): Promise<SubscribeTransactionsResult> =>\n Promise.resolve({} as SubscribeTransactionsResult),\n })\n}\n"]}
{
"name": "@canton-network/core-signing-internal",
"version": "1.2.3",
"version": "1.3.1",
"type": "module",

@@ -28,5 +28,5 @@ "description": "Wallet Gateway driver for offline Ed25519 keypairs",

"dependencies": {
"@canton-network/core-signing-lib": "^1.2.3",
"@canton-network/core-signing-store-sql": "^1.2.3",
"@canton-network/core-wallet-auth": "^1.2.3",
"@canton-network/core-signing-lib": "^1.3.1",
"@canton-network/core-signing-store-sql": "^1.3.1",
"@canton-network/core-wallet-auth": "^1.3.1",
"fs-extra": "^11.3.3",

@@ -55,5 +55,5 @@ "lodash": "^4.18.1",

"type": "git",
"url": "git+https://github.com/canton-network/wallet-gateway.git",
"url": "git+https://github.com/canton-network/wallet.git",
"directory": "core/signing-internal"
}
}