@0xpolygonid/js-sdk 1.21.1 → 1.23.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.
Files changed (82) hide show
  1. package/dist/browser/esm/index.js +1394 -278
  2. package/dist/browser/esm/index.js.map +1 -1
  3. package/dist/browser/umd/index.js +1399 -278
  4. package/dist/browser/umd/index.js.map +1 -1
  5. package/dist/node/cjs/iden3comm/constants.js +25 -1
  6. package/dist/node/cjs/iden3comm/handlers/auth.js +52 -8
  7. package/dist/node/cjs/iden3comm/handlers/common.js +13 -1
  8. package/dist/node/cjs/iden3comm/handlers/contract-request.js +5 -1
  9. package/dist/node/cjs/iden3comm/handlers/credential-proposal.js +14 -3
  10. package/dist/node/cjs/iden3comm/handlers/fetch.js +12 -2
  11. package/dist/node/cjs/iden3comm/handlers/message-handler.js +4 -0
  12. package/dist/node/cjs/iden3comm/handlers/payment.js +240 -28
  13. package/dist/node/cjs/iden3comm/handlers/revocation-status.js +4 -0
  14. package/dist/node/cjs/iden3comm/index.js +1 -0
  15. package/dist/node/cjs/iden3comm/packageManager.js +12 -0
  16. package/dist/node/cjs/iden3comm/packers/jws.js +21 -0
  17. package/dist/node/cjs/iden3comm/packers/plain.js +19 -0
  18. package/dist/node/cjs/iden3comm/packers/zkp.js +25 -0
  19. package/dist/node/cjs/iden3comm/types/index.js +1 -0
  20. package/dist/node/cjs/iden3comm/types/protocol/accept-profile.js +2 -0
  21. package/dist/node/cjs/iden3comm/utils/accept-profile.js +107 -0
  22. package/dist/node/cjs/iden3comm/utils/index.js +1 -0
  23. package/dist/node/cjs/proof/provers/inputs-generator.js +2 -1
  24. package/dist/node/cjs/storage/blockchain/abi/ERC20Permit.json +1 -0
  25. package/dist/node/cjs/storage/blockchain/erc20-permit-sig.js +46 -0
  26. package/dist/node/cjs/storage/blockchain/index.js +1 -0
  27. package/dist/node/cjs/storage/filters/jsonQuery.js +5 -3
  28. package/dist/node/cjs/verifiable/constants.js +28 -11
  29. package/dist/node/esm/iden3comm/constants.js +24 -0
  30. package/dist/node/esm/iden3comm/handlers/auth.js +55 -11
  31. package/dist/node/esm/iden3comm/handlers/common.js +11 -0
  32. package/dist/node/esm/iden3comm/handlers/contract-request.js +7 -3
  33. package/dist/node/esm/iden3comm/handlers/credential-proposal.js +15 -4
  34. package/dist/node/esm/iden3comm/handlers/fetch.js +12 -2
  35. package/dist/node/esm/iden3comm/handlers/message-handler.js +4 -0
  36. package/dist/node/esm/iden3comm/handlers/payment.js +240 -29
  37. package/dist/node/esm/iden3comm/handlers/revocation-status.js +4 -0
  38. package/dist/node/esm/iden3comm/index.js +1 -0
  39. package/dist/node/esm/iden3comm/packageManager.js +12 -0
  40. package/dist/node/esm/iden3comm/packers/jws.js +22 -1
  41. package/dist/node/esm/iden3comm/packers/plain.js +19 -0
  42. package/dist/node/esm/iden3comm/packers/zkp.js +26 -1
  43. package/dist/node/esm/iden3comm/types/index.js +1 -0
  44. package/dist/node/esm/iden3comm/types/protocol/accept-profile.js +1 -0
  45. package/dist/node/esm/iden3comm/utils/accept-profile.js +102 -0
  46. package/dist/node/esm/iden3comm/utils/index.js +1 -0
  47. package/dist/node/esm/proof/provers/inputs-generator.js +2 -1
  48. package/dist/node/esm/storage/blockchain/abi/ERC20Permit.json +1 -0
  49. package/dist/node/esm/storage/blockchain/erc20-permit-sig.js +39 -0
  50. package/dist/node/esm/storage/blockchain/index.js +1 -0
  51. package/dist/node/esm/storage/filters/jsonQuery.js +5 -3
  52. package/dist/node/esm/verifiable/constants.js +27 -10
  53. package/dist/types/iden3comm/constants.d.ts +16 -0
  54. package/dist/types/iden3comm/handlers/auth.d.ts +19 -7
  55. package/dist/types/iden3comm/handlers/common.d.ts +7 -1
  56. package/dist/types/iden3comm/handlers/contract-request.d.ts +2 -2
  57. package/dist/types/iden3comm/handlers/credential-proposal.d.ts +9 -4
  58. package/dist/types/iden3comm/handlers/fetch.d.ts +22 -6
  59. package/dist/types/iden3comm/handlers/message-handler.d.ts +6 -0
  60. package/dist/types/iden3comm/handlers/payment.d.ts +70 -10
  61. package/dist/types/iden3comm/handlers/revocation-status.d.ts +2 -2
  62. package/dist/types/iden3comm/index.d.ts +1 -0
  63. package/dist/types/iden3comm/packageManager.d.ts +4 -0
  64. package/dist/types/iden3comm/packers/jws.d.ts +5 -0
  65. package/dist/types/iden3comm/packers/plain.d.ts +4 -0
  66. package/dist/types/iden3comm/packers/zkp.d.ts +6 -0
  67. package/dist/types/iden3comm/types/index.d.ts +1 -0
  68. package/dist/types/iden3comm/types/packageManager.d.ts +14 -0
  69. package/dist/types/iden3comm/types/packer.d.ts +25 -0
  70. package/dist/types/iden3comm/types/protocol/accept-profile.d.ts +7 -0
  71. package/dist/types/iden3comm/types/protocol/auth.d.ts +1 -0
  72. package/dist/types/iden3comm/types/protocol/credentials.d.ts +6 -6
  73. package/dist/types/iden3comm/types/protocol/messages.d.ts +2 -2
  74. package/dist/types/iden3comm/types/protocol/payment.d.ts +87 -13
  75. package/dist/types/iden3comm/types/protocol/proof.d.ts +3 -3
  76. package/dist/types/iden3comm/types/protocol/revocation.d.ts +2 -2
  77. package/dist/types/iden3comm/utils/accept-profile.d.ts +3 -0
  78. package/dist/types/iden3comm/utils/index.d.ts +1 -0
  79. package/dist/types/storage/blockchain/erc20-permit-sig.d.ts +12 -0
  80. package/dist/types/storage/blockchain/index.d.ts +1 -0
  81. package/dist/types/verifiable/constants.d.ts +27 -11
  82. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_AUTH_VERIFY_DELAY = exports.DEFAULT_PROOF_VERIFY_DELAY = exports.SUPPORTED_PUBLIC_KEY_TYPES = exports.MediaType = exports.PROTOCOL_MESSAGE_TYPE = void 0;
3
+ exports.DEFAULT_AUTH_VERIFY_DELAY = exports.DEFAULT_PROOF_VERIFY_DELAY = exports.defaultAcceptProfile = exports.AcceptJwsAlgorithms = exports.AcceptJwzAlgorithms = exports.AcceptAuthCircuits = exports.ProtocolVersion = exports.SUPPORTED_PUBLIC_KEY_TYPES = exports.MediaType = exports.PROTOCOL_MESSAGE_TYPE = void 0;
4
4
  const IDEN3_PROTOCOL = 'https://iden3-communication.io/';
5
5
  /**
6
6
  * Constants for Iden3 protocol
@@ -76,5 +76,29 @@ exports.SUPPORTED_PUBLIC_KEY_TYPES = {
76
76
  'JsonWebKey2020'
77
77
  ]
78
78
  };
79
+ var ProtocolVersion;
80
+ (function (ProtocolVersion) {
81
+ ProtocolVersion["V1"] = "iden3comm/v1";
82
+ })(ProtocolVersion = exports.ProtocolVersion || (exports.ProtocolVersion = {}));
83
+ var AcceptAuthCircuits;
84
+ (function (AcceptAuthCircuits) {
85
+ AcceptAuthCircuits["AuthV2"] = "authV2";
86
+ AcceptAuthCircuits["AuthV3"] = "authV3";
87
+ })(AcceptAuthCircuits = exports.AcceptAuthCircuits || (exports.AcceptAuthCircuits = {}));
88
+ var AcceptJwzAlgorithms;
89
+ (function (AcceptJwzAlgorithms) {
90
+ AcceptJwzAlgorithms["Groth16"] = "groth16";
91
+ })(AcceptJwzAlgorithms = exports.AcceptJwzAlgorithms || (exports.AcceptJwzAlgorithms = {}));
92
+ var AcceptJwsAlgorithms;
93
+ (function (AcceptJwsAlgorithms) {
94
+ AcceptJwsAlgorithms["ES256K"] = "ES256K";
95
+ AcceptJwsAlgorithms["ES256KR"] = "ES256K-R";
96
+ })(AcceptJwsAlgorithms = exports.AcceptJwsAlgorithms || (exports.AcceptJwsAlgorithms = {}));
97
+ exports.defaultAcceptProfile = {
98
+ protocolVersion: ProtocolVersion.V1,
99
+ env: MediaType.ZKPMessage,
100
+ circuits: [AcceptAuthCircuits.AuthV2],
101
+ alg: [AcceptJwzAlgorithms.Groth16]
102
+ };
79
103
  exports.DEFAULT_PROOF_VERIFY_DELAY = 1 * 60 * 60 * 1000; // 1 hour
80
104
  exports.DEFAULT_AUTH_VERIFY_DELAY = 5 * 60 * 1000; // 5 minutes
@@ -33,15 +33,17 @@ const utils_1 = require("../../utils");
33
33
  const common_1 = require("./common");
34
34
  const circuits_1 = require("../../circuits");
35
35
  const message_handler_1 = require("./message-handler");
36
+ const utils_2 = require("../utils");
36
37
  /**
37
38
  * createAuthorizationRequest is a function to create protocol authorization request
38
39
  * @param {string} reason - reason to request proof
39
40
  * @param {string} sender - sender did
40
41
  * @param {string} callbackUrl - callback that user should use to send response
42
+ * @param {AuthorizationRequestCreateOptions} opts - authorization request options
41
43
  * @returns `Promise<AuthorizationRequestMessage>`
42
44
  */
43
- function createAuthorizationRequest(reason, sender, callbackUrl) {
44
- return createAuthorizationRequestWithMessage(reason, '', sender, callbackUrl);
45
+ function createAuthorizationRequest(reason, sender, callbackUrl, opts) {
46
+ return createAuthorizationRequestWithMessage(reason, '', sender, callbackUrl, opts);
45
47
  }
46
48
  exports.createAuthorizationRequest = createAuthorizationRequest;
47
49
  /**
@@ -50,9 +52,10 @@ exports.createAuthorizationRequest = createAuthorizationRequest;
50
52
  * @param {string} message - message to sign in the response
51
53
  * @param {string} sender - sender did
52
54
  * @param {string} callbackUrl - callback that user should use to send response
55
+ * @param {AuthorizationRequestCreateOptions} opts - authorization request options
53
56
  * @returns `Promise<AuthorizationRequestMessage>`
54
57
  */
55
- function createAuthorizationRequestWithMessage(reason, message, sender, callbackUrl) {
58
+ function createAuthorizationRequestWithMessage(reason, message, sender, callbackUrl, opts) {
56
59
  const uuidv4 = uuid.v4();
57
60
  const request = {
58
61
  id: uuidv4,
@@ -61,11 +64,14 @@ function createAuthorizationRequestWithMessage(reason, message, sender, callback
61
64
  typ: constants_1.MediaType.PlainMessage,
62
65
  type: constants_2.PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_REQUEST_MESSAGE_TYPE,
63
66
  body: {
67
+ accept: opts?.accept,
64
68
  reason: reason,
65
69
  message: message,
66
70
  callbackUrl: callbackUrl,
67
- scope: []
68
- }
71
+ scope: opts?.scope ?? []
72
+ },
73
+ created_time: (0, js_iden3_core_1.getUnixTimestamp)(new Date()),
74
+ expires_time: opts?.expires_time ? (0, js_iden3_core_1.getUnixTimestamp)(opts.expires_time) : undefined
69
75
  };
70
76
  return request;
71
77
  }
@@ -125,17 +131,18 @@ class AuthHandler extends message_handler_1.AbstractMessageHandler {
125
131
  }
126
132
  // override sender did if it's explicitly specified in the auth request
127
133
  const to = authRequest.to ? js_iden3_core_1.DID.parse(authRequest.to) : ctx.senderDid;
128
- const mediaType = ctx.mediaType || constants_1.MediaType.ZKPMessage;
129
134
  const guid = uuid.v4();
130
135
  if (!authRequest.from) {
131
136
  throw new Error('auth request should contain from field');
132
137
  }
138
+ const responseType = constants_2.PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_RESPONSE_MESSAGE_TYPE;
139
+ const mediaType = this.getSupportedMediaTypeByProfile(ctx, responseType, authRequest.body.accept);
133
140
  const from = js_iden3_core_1.DID.parse(authRequest.from);
134
141
  const responseScope = await (0, common_1.processZeroKnowledgeProofRequests)(to, authRequest?.body.scope, from, this._proofService, { mediaType, supportedCircuits: this._supportedCircuits });
135
142
  return {
136
143
  id: guid,
137
- typ: ctx.mediaType,
138
- type: constants_2.PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_RESPONSE_MESSAGE_TYPE,
144
+ typ: mediaType,
145
+ type: responseType,
139
146
  thid: authRequest.thid ?? guid,
140
147
  body: {
141
148
  message: authRequest?.body?.message,
@@ -150,6 +157,9 @@ class AuthHandler extends message_handler_1.AbstractMessageHandler {
150
157
  */
151
158
  async handleAuthorizationRequest(did, request, opts) {
152
159
  const authRequest = await this.parseAuthorizationRequest(request);
160
+ if (!opts?.allowExpiredMessages) {
161
+ (0, common_1.verifyExpiresTime)(authRequest);
162
+ }
153
163
  if (!opts) {
154
164
  opts = {
155
165
  mediaType: constants_1.MediaType.ZKPMessage
@@ -239,6 +249,9 @@ class AuthHandler extends message_handler_1.AbstractMessageHandler {
239
249
  * @inheritdoc IAuthHandler#handleAuthorizationResponse
240
250
  */
241
251
  async handleAuthorizationResponse(response, request, opts) {
252
+ if (!opts?.allowExpiredMessages) {
253
+ (0, common_1.verifyExpiresTime)(response);
254
+ }
242
255
  const authResp = (await this.handleAuthResponse(response, {
243
256
  request,
244
257
  acceptedStateTransitionDelay: opts?.acceptedStateTransitionDelay,
@@ -272,5 +285,36 @@ class AuthHandler extends message_handler_1.AbstractMessageHandler {
272
285
  }
273
286
  }
274
287
  }
288
+ getSupportedMediaTypeByProfile(ctx, responseType, profile) {
289
+ let mediaType;
290
+ if (profile?.length) {
291
+ const supportedMediaTypes = [];
292
+ for (const acceptProfile of profile) {
293
+ // 1. check protocol version
294
+ const { protocolVersion, env } = (0, utils_2.parseAcceptProfile)(acceptProfile);
295
+ const responseTypeVersion = Number(responseType.split('/').at(-2));
296
+ if (protocolVersion !== constants_1.ProtocolVersion.V1 ||
297
+ (protocolVersion === constants_1.ProtocolVersion.V1 &&
298
+ (responseTypeVersion < 1 || responseTypeVersion >= 2))) {
299
+ continue;
300
+ }
301
+ // 2. check packer support
302
+ if (this._packerMgr.isProfileSupported(env, acceptProfile)) {
303
+ supportedMediaTypes.push(env);
304
+ }
305
+ }
306
+ if (!supportedMediaTypes.length) {
307
+ throw new Error('no packer with profile which meets `accept` header requirements');
308
+ }
309
+ mediaType = supportedMediaTypes[0];
310
+ if (ctx.mediaType && supportedMediaTypes.includes(ctx.mediaType)) {
311
+ mediaType = ctx.mediaType;
312
+ }
313
+ }
314
+ else {
315
+ mediaType = ctx.mediaType || constants_1.MediaType.ZKPMessage;
316
+ }
317
+ return mediaType;
318
+ }
275
319
  }
276
320
  exports.AuthHandler = AuthHandler;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processZeroKnowledgeProofRequests = void 0;
3
+ exports.verifyExpiresTime = exports.processZeroKnowledgeProofRequests = void 0;
4
4
  const js_crypto_1 = require("@iden3/js-crypto");
5
5
  const utils_1 = require("../../utils");
6
+ const js_iden3_core_1 = require("@iden3/js-iden3-core");
6
7
  /**
7
8
  * Groups the ZeroKnowledgeProofRequest objects based on their groupId.
8
9
  * Returns a Map where the key is the groupId and the value is an object containing the query and linkNonce.
@@ -83,3 +84,14 @@ const processZeroKnowledgeProofRequests = async (to, requests, from, proofServic
83
84
  return zkpResponses;
84
85
  };
85
86
  exports.processZeroKnowledgeProofRequests = processZeroKnowledgeProofRequests;
87
+ /**
88
+ * Verifies that the expires_time field of a message is not in the past. Throws an error if it is.
89
+ *
90
+ * @param message - Basic message to verify.
91
+ */
92
+ const verifyExpiresTime = (message) => {
93
+ if (message?.expires_time && message.expires_time < (0, js_iden3_core_1.getUnixTimestamp)(new Date())) {
94
+ throw new Error('Message expired');
95
+ }
96
+ };
97
+ exports.verifyExpiresTime = verifyExpiresTime;
@@ -110,7 +110,8 @@ class ContractRequestHandler extends message_handler_1.AbstractMessageHandler {
110
110
  body: {
111
111
  transaction_data: request.body.transaction_data,
112
112
  scope: []
113
- }
113
+ },
114
+ created_time: (0, js_iden3_core_1.getUnixTimestamp)(new Date())
114
115
  };
115
116
  for (const [txHash, zkpResponses] of txHashToZkpResponseMap) {
116
117
  for (const zkpResponse of zkpResponses) {
@@ -134,6 +135,9 @@ class ContractRequestHandler extends message_handler_1.AbstractMessageHandler {
134
135
  */
135
136
  async handleContractInvokeRequest(did, request, opts) {
136
137
  const ciRequest = await this.parseContractInvokeRequest(request);
138
+ if (!opts.allowExpiredMessages) {
139
+ (0, common_1.verifyExpiresTime)(ciRequest);
140
+ }
137
141
  if (ciRequest.body.transaction_data.method_id !== storage_1.FunctionSignatures.SubmitZKPResponseV1) {
138
142
  throw new Error(`please use handle method to work with other method ids`);
139
143
  }
@@ -30,6 +30,7 @@ const uuid = __importStar(require("uuid"));
30
30
  const js_jwz_1 = require("@iden3/js-jwz");
31
31
  const utils_1 = require("../../utils");
32
32
  const message_handler_1 = require("./message-handler");
33
+ const common_1 = require("./common");
33
34
  /**
34
35
  * @beta
35
36
  * createProposalRequest is a function to create protocol proposal-request protocol message
@@ -47,7 +48,9 @@ function createProposalRequest(sender, receiver, opts) {
47
48
  to: receiver.string(),
48
49
  typ: constants_1.MediaType.PlainMessage,
49
50
  type: constants_1.PROTOCOL_MESSAGE_TYPE.PROPOSAL_REQUEST_MESSAGE_TYPE,
50
- body: opts
51
+ body: opts,
52
+ created_time: (0, js_iden3_core_1.getUnixTimestamp)(new Date()),
53
+ expires_time: opts?.expires_time ? (0, js_iden3_core_1.getUnixTimestamp)(opts.expires_time) : undefined
51
54
  };
52
55
  return request;
53
56
  }
@@ -60,7 +63,7 @@ exports.createProposalRequest = createProposalRequest;
60
63
  * @param {Proposal[]} proposals - proposals
61
64
  * @returns `Promise<ProposalRequestMessage>`
62
65
  */
63
- function createProposal(sender, receiver, proposals) {
66
+ function createProposal(sender, receiver, proposals, opts) {
64
67
  const uuidv4 = uuid.v4();
65
68
  const request = {
66
69
  id: uuidv4,
@@ -71,7 +74,9 @@ function createProposal(sender, receiver, proposals) {
71
74
  type: constants_1.PROTOCOL_MESSAGE_TYPE.PROPOSAL_MESSAGE_TYPE,
72
75
  body: {
73
76
  proposals: proposals || []
74
- }
77
+ },
78
+ created_time: (0, js_iden3_core_1.getUnixTimestamp)(new Date()),
79
+ expires_time: opts?.expires_time ? (0, js_iden3_core_1.getUnixTimestamp)(opts.expires_time) : undefined
75
80
  };
76
81
  return request;
77
82
  }
@@ -210,6 +215,9 @@ class CredentialProposalHandler extends message_handler_1.AbstractMessageHandler
210
215
  if (!proposalRequest.from) {
211
216
  throw new Error(`failed request. empty 'from' field`);
212
217
  }
218
+ if (!opts?.allowExpiredMessages) {
219
+ (0, common_1.verifyExpiresTime)(proposalRequest);
220
+ }
213
221
  const senderDID = js_iden3_core_1.DID.parse(proposalRequest.from);
214
222
  const message = await this.handleProposalRequestMessage(proposalRequest);
215
223
  const response = utils_1.byteEncoder.encode(JSON.stringify(message));
@@ -227,6 +235,9 @@ class CredentialProposalHandler extends message_handler_1.AbstractMessageHandler
227
235
  * @inheritdoc ICredentialProposalHandler#handleProposal
228
236
  */
229
237
  async handleProposal(proposal, opts) {
238
+ if (!opts?.allowExpiredMessages) {
239
+ (0, common_1.verifyExpiresTime)(proposal);
240
+ }
230
241
  if (opts?.proposalRequest && opts.proposalRequest.from !== proposal.to) {
231
242
  throw new Error(`sender of the request is not a target of response - expected ${opts.proposalRequest.from}, given ${proposal.to}`);
232
243
  }
@@ -33,6 +33,7 @@ const js_jwz_1 = require("@iden3/js-jwz");
33
33
  const js_iden3_core_1 = require("@iden3/js-iden3-core");
34
34
  const uuid = __importStar(require("uuid"));
35
35
  const message_handler_1 = require("./message-handler");
36
+ const common_1 = require("./common");
36
37
  /**
37
38
  *
38
39
  * Allows to handle Credential offer protocol message and return fetched credential
@@ -147,6 +148,9 @@ class FetchHandler extends message_handler_1.AbstractMessageHandler {
147
148
  throw new Error(`jws packer options are required for ${constants_1.MediaType.SignedMessage}`);
148
149
  }
149
150
  const offerMessage = await FetchHandler.unpackMessage(this._packerMgr, offer, constants_2.PROTOCOL_MESSAGE_TYPE.CREDENTIAL_OFFER_MESSAGE_TYPE);
151
+ if (!opts?.allowExpiredMessages) {
152
+ (0, common_1.verifyExpiresTime)(offerMessage);
153
+ }
150
154
  const result = await this.handleOfferMessage(offerMessage, {
151
155
  mediaType: opts?.mediaType,
152
156
  headers: opts?.headers,
@@ -194,8 +198,11 @@ class FetchHandler extends message_handler_1.AbstractMessageHandler {
194
198
  /**
195
199
  * @inheritdoc IFetchHandler#handleCredentialFetchRequest
196
200
  */
197
- async handleCredentialFetchRequest(envelope) {
201
+ async handleCredentialFetchRequest(envelope, opts) {
198
202
  const msgRequest = await FetchHandler.unpackMessage(this._packerMgr, envelope, constants_2.PROTOCOL_MESSAGE_TYPE.CREDENTIAL_FETCH_REQUEST_MESSAGE_TYPE);
203
+ if (!opts?.allowExpiredMessages) {
204
+ (0, common_1.verifyExpiresTime)(msgRequest);
205
+ }
199
206
  const request = await this.handleFetchRequest(msgRequest);
200
207
  return this._packerMgr.pack(constants_1.MediaType.PlainMessage, utils_1.byteEncoder.encode(JSON.stringify(request)), {});
201
208
  }
@@ -212,8 +219,11 @@ class FetchHandler extends message_handler_1.AbstractMessageHandler {
212
219
  /**
213
220
  * @inheritdoc IFetchHandler#handleIssuanceResponseMessage
214
221
  */
215
- async handleIssuanceResponseMessage(envelop) {
222
+ async handleIssuanceResponseMessage(envelop, opts) {
216
223
  const issuanceMsg = await FetchHandler.unpackMessage(this._packerMgr, envelop, constants_2.PROTOCOL_MESSAGE_TYPE.CREDENTIAL_ISSUANCE_RESPONSE_MESSAGE_TYPE);
224
+ if (!opts?.allowExpiredMessages) {
225
+ (0, common_1.verifyExpiresTime)(issuanceMsg);
226
+ }
217
227
  await this.handleIssuanceResponseMsg(issuanceMsg);
218
228
  return Uint8Array.from([]);
219
229
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageHandler = exports.AbstractMessageHandler = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const js_jwz_1 = require("@iden3/js-jwz");
6
+ const common_1 = require("./common");
6
7
  /**
7
8
  * Base implementation of protocol message handler
8
9
  *
@@ -17,6 +18,9 @@ class AbstractMessageHandler {
17
18
  return messageHandler;
18
19
  }
19
20
  async handle(message, context) {
21
+ if (!context.allowExpiredMessages) {
22
+ (0, common_1.verifyExpiresTime)(message);
23
+ }
20
24
  if (this.nextMessageHandler)
21
25
  return this.nextMessageHandler.handle(message, context);
22
26
  return Promise.reject('Message handler not provided or message not supported');