Skip to content

Commit 49848f5

Browse files
authored
Fix: Add missing ensurePublicKeySignatureIsValid method to PublicKeyService (#677)
1 parent 11ac8b9 commit 49848f5

File tree

12 files changed

+66
-42
lines changed

12 files changed

+66
-42
lines changed

chain-api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gala-chain/api",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"description": "Common types, DTOs (Data Transfer Objects), APIs, signatures, and utils for GalaChain.",
55
"license": "Apache-2.0",
66
"dependencies": {

chain-cli/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ $ npm install -g @gala-chain/cli
2020
$ galachain COMMAND
2121
running command...
2222
$ galachain (--version)
23-
@gala-chain/cli/2.5.0 linux-x64 node-v18.20.8
23+
@gala-chain/cli/2.5.1 linux-x64 node-v18.20.8
2424
$ galachain --help [COMMAND]
2525
USAGE
2626
$ galachain COMMAND

chain-cli/chaincode-template/package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

chain-cli/chaincode-template/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@galachain/product",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"description": "Product Chaincode",
55
"main": "lib/src/index.js",
66
"types": "lib/src/index.d.ts",
@@ -24,17 +24,17 @@
2424
"update-snapshot": "jest --updateSnapshot"
2525
},
2626
"dependencies": {
27-
"@gala-chain/api": "2.5.0",
28-
"@gala-chain/chaincode": "2.5.0",
27+
"@gala-chain/api": "2.5.1",
28+
"@gala-chain/chaincode": "2.5.1",
2929
"@grpc/grpc-js": "1.10.10",
3030
"dotenv": "^16.0.1",
3131
"fabric-contract-api": "2.5.6",
3232
"fabric-shim": "2.5.6"
3333
},
3434
"devDependencies": {
35-
"@gala-chain/cli": "2.5.0",
36-
"@gala-chain/client": "2.5.0",
37-
"@gala-chain/test": "2.5.0",
35+
"@gala-chain/cli": "2.5.1",
36+
"@gala-chain/client": "2.5.1",
37+
"@gala-chain/test": "2.5.1",
3838
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
3939
"@types/jest": "^29.5.12",
4040
"@types/node": "18.11.9",

chain-cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gala-chain/cli",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"description": "CLI for GalaChain to manage and deploy chaincodes",
55
"license": "Apache-2.0",
66
"bin": {
@@ -14,7 +14,7 @@
1414
"/oclif.manifest.json"
1515
],
1616
"dependencies": {
17-
"@gala-chain/api": "2.5.0",
17+
"@gala-chain/api": "2.5.1",
1818
"@noble/secp256k1": "^1.7.1",
1919
"@oclif/core": "^3",
2020
"@oclif/plugin-help": "^3",

chain-client/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gala-chain/client",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"description": "GalaChain client library",
55
"license": "Apache-2.0",
66
"scripts": {
@@ -21,7 +21,7 @@
2121
"lib"
2222
],
2323
"dependencies": {
24-
"@gala-chain/api": "2.5.0",
24+
"@gala-chain/api": "2.5.1",
2525
"axios": "^1.6.0",
2626
"jsonschema": "^1.4.1",
2727
"tslib": "^2.6.2"

chain-connect/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "@gala-chain/connect",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"dependencies": {
5-
"@gala-chain/api": "2.5.0",
5+
"@gala-chain/api": "2.5.1",
66
"ethers": "^6.12.1",
77
"tslib": "^2.3.0",
88
"bignumber.js": "9.1.2",

chain-test/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
{
22
"name": "@gala-chain/test",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"description": "Unit testing and integration testing for GalaChain",
55
"license": "Apache-2.0",
66
"dependencies": {
7-
"@gala-chain/client": "2.5.0",
7+
"@gala-chain/client": "2.5.1",
88
"nanoid": "^3.3.6",
99
"tslib": "^2.6.2",
1010
"@jest/globals": "29.7.0"
1111
},
1212
"peerDependencies": {
13-
"@gala-chain/api": "2.5.0",
13+
"@gala-chain/api": "2.5.1",
1414
"bignumber.js": "*",
1515
"class-transformer": "0.5.1",
1616
"fabric-contract-api": "*",

chaincode/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gala-chain/chaincode",
3-
"version": "2.5.0",
3+
"version": "2.5.1",
44
"description": "Framework for building chaincodes on GalaChain",
55
"license": "Apache-2.0",
66
"type": "commonjs",
@@ -22,7 +22,7 @@
2222
"update-snapshot": "jest --updateSnapshot"
2323
},
2424
"dependencies": {
25-
"@gala-chain/api": "2.5.0",
25+
"@gala-chain/api": "2.5.1",
2626
"@grpc/grpc-js": "1.10.10",
2727
"fabric-contract-api": "2.5.6",
2828
"fabric-shim": "2.5.6",

chaincode/src/services/PublicKeyService.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* limitations under the License.
1414
*/
1515
import {
16+
ChainCallDTO,
1617
ChainObject,
1718
NotImplementedError,
1819
PK_INDEX_KEY,
@@ -33,6 +34,7 @@ import { Context } from "fabric-contract-api";
3334

3435
import { GalaChainContext } from "../types";
3536
import {
37+
PkInvalidSignatureError,
3638
PkMismatchError,
3739
PkMissingError,
3840
PkNotFoundError,
@@ -229,7 +231,6 @@ export class PublicKeyService {
229231
return undefined;
230232
}
231233

232-
// TODO test to verify that all user profile entries are saved
233234
public static async registerUser(
234235
ctx: GalaChainContext,
235236
publicKeys: string[],
@@ -515,4 +516,27 @@ export class PublicKeyService {
515516
}
516517
}
517518
}
519+
520+
/**
521+
* Verifies if the data is properly signed. Throws exception instead.
522+
*/
523+
public static async ensurePublicKeySignatureIsValid(
524+
ctx: GalaChainContext,
525+
userAlias: UserAlias,
526+
dto: ChainCallDTO
527+
): Promise<PublicKey> {
528+
const pk = await PublicKeyService.getPublicKey(ctx, userAlias);
529+
530+
if (pk === undefined) {
531+
throw new PkMissingError(userAlias);
532+
}
533+
534+
const isSignatureValid = dto.isSignatureValid(pk.publicKey ?? "");
535+
536+
if (!isSignatureValid) {
537+
throw new PkInvalidSignatureError(userAlias);
538+
}
539+
540+
return pk;
541+
}
518542
}

0 commit comments

Comments
 (0)