diff --git a/package-lock.json b/package-lock.json index 106661da..d667227c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@0xpolygonid/js-sdk", - "version": "1.39.3", + "version": "1.39.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@0xpolygonid/js-sdk", - "version": "1.39.3", + "version": "1.39.4", "license": "MIT or Apache-2.0", "dependencies": { "@iden3/onchain-non-merklized-issuer-base-abi": "0.0.3", diff --git a/package.json b/package.json index 0ddb8f97..e6d628a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@0xpolygonid/js-sdk", - "version": "1.39.3", + "version": "1.39.4", "description": "SDK to work with Polygon ID", "source": "./src/index.ts", "exports": { diff --git a/src/iden3comm/packers/zkp-default.ts b/src/iden3comm/packers/zkp-default.ts index 4f1dada0..45a0fff6 100644 --- a/src/iden3comm/packers/zkp-default.ts +++ b/src/iden3comm/packers/zkp-default.ts @@ -42,10 +42,9 @@ export class DefaultZKPPacker extends ZKPPacker { * @throws If the circuit data (proving key or wasm) is not found for the given circuit ID. */ async pack(payload: Uint8Array, params: ZKPPackerParams): Promise { - const provingMethodAlg = params.provingMethodAlg; - const circuitId = provingMethodAlg.circuitId as CircuitId; - const provingParamsKey = provingMethodAlg.toString(); - + this.validateZKPPackerParams(params); + const provingParamsKey = params.provingMethodAlg.toString(); + const circuitId = params.provingMethodAlg.circuitId; if (!this.provingParamsMap.has(provingParamsKey)) { const { provingKey, wasm } = await this.circuitStorage.loadCircuitData( circuitId as CircuitId, diff --git a/src/iden3comm/packers/zkp.ts b/src/iden3comm/packers/zkp.ts index 9a1e3bfa..c54a859a 100644 --- a/src/iden3comm/packers/zkp.ts +++ b/src/iden3comm/packers/zkp.ts @@ -128,6 +128,7 @@ export class ZKPPacker implements IPacker { * @returns `Promise` */ async pack(payload: Uint8Array, params: ZKPPackerParams): Promise { + this.validateZKPPackerParams(params); const provingMethod = await getProvingMethod(params.provingMethodAlg); const provingParams = this.provingParamsMap.get(params.provingMethodAlg.toString()); @@ -229,6 +230,19 @@ export class ZKPPacker implements IPacker { !alg?.length || alg.some((a) => supportedAlgArr.includes(a as AcceptJwzAlgorithms)); return algSupported && circuitIdSupported; } + + protected validateZKPPackerParams(value: ZKPPackerParams) { + const { provingMethodAlg } = value; + if (!(provingMethodAlg instanceof ProvingMethodAlg)) { + throw new TypeError('provingMethodAlg must be an instance of ProvingMethodAlg'); + } + if (!provingMethodAlg.alg) { + throw new Error(`provingMethodAlg.alg is required and must be a non-empty string`); + } + if (!provingMethodAlg.circuitId) { + throw new Error(`provingMethodAlg.circuitId is required and must be a non-empty string`); + } + } } const verifySender = async (token: Token, msg: BasicMessage): Promise => {