@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.
- package/dist/browser/esm/index.js +1394 -278
- package/dist/browser/esm/index.js.map +1 -1
- package/dist/browser/umd/index.js +1399 -278
- package/dist/browser/umd/index.js.map +1 -1
- package/dist/node/cjs/iden3comm/constants.js +25 -1
- package/dist/node/cjs/iden3comm/handlers/auth.js +52 -8
- package/dist/node/cjs/iden3comm/handlers/common.js +13 -1
- package/dist/node/cjs/iden3comm/handlers/contract-request.js +5 -1
- package/dist/node/cjs/iden3comm/handlers/credential-proposal.js +14 -3
- package/dist/node/cjs/iden3comm/handlers/fetch.js +12 -2
- package/dist/node/cjs/iden3comm/handlers/message-handler.js +4 -0
- package/dist/node/cjs/iden3comm/handlers/payment.js +240 -28
- package/dist/node/cjs/iden3comm/handlers/revocation-status.js +4 -0
- package/dist/node/cjs/iden3comm/index.js +1 -0
- package/dist/node/cjs/iden3comm/packageManager.js +12 -0
- package/dist/node/cjs/iden3comm/packers/jws.js +21 -0
- package/dist/node/cjs/iden3comm/packers/plain.js +19 -0
- package/dist/node/cjs/iden3comm/packers/zkp.js +25 -0
- package/dist/node/cjs/iden3comm/types/index.js +1 -0
- package/dist/node/cjs/iden3comm/types/protocol/accept-profile.js +2 -0
- package/dist/node/cjs/iden3comm/utils/accept-profile.js +107 -0
- package/dist/node/cjs/iden3comm/utils/index.js +1 -0
- package/dist/node/cjs/proof/provers/inputs-generator.js +2 -1
- package/dist/node/cjs/storage/blockchain/abi/ERC20Permit.json +1 -0
- package/dist/node/cjs/storage/blockchain/erc20-permit-sig.js +46 -0
- package/dist/node/cjs/storage/blockchain/index.js +1 -0
- package/dist/node/cjs/storage/filters/jsonQuery.js +5 -3
- package/dist/node/cjs/verifiable/constants.js +28 -11
- package/dist/node/esm/iden3comm/constants.js +24 -0
- package/dist/node/esm/iden3comm/handlers/auth.js +55 -11
- package/dist/node/esm/iden3comm/handlers/common.js +11 -0
- package/dist/node/esm/iden3comm/handlers/contract-request.js +7 -3
- package/dist/node/esm/iden3comm/handlers/credential-proposal.js +15 -4
- package/dist/node/esm/iden3comm/handlers/fetch.js +12 -2
- package/dist/node/esm/iden3comm/handlers/message-handler.js +4 -0
- package/dist/node/esm/iden3comm/handlers/payment.js +240 -29
- package/dist/node/esm/iden3comm/handlers/revocation-status.js +4 -0
- package/dist/node/esm/iden3comm/index.js +1 -0
- package/dist/node/esm/iden3comm/packageManager.js +12 -0
- package/dist/node/esm/iden3comm/packers/jws.js +22 -1
- package/dist/node/esm/iden3comm/packers/plain.js +19 -0
- package/dist/node/esm/iden3comm/packers/zkp.js +26 -1
- package/dist/node/esm/iden3comm/types/index.js +1 -0
- package/dist/node/esm/iden3comm/types/protocol/accept-profile.js +1 -0
- package/dist/node/esm/iden3comm/utils/accept-profile.js +102 -0
- package/dist/node/esm/iden3comm/utils/index.js +1 -0
- package/dist/node/esm/proof/provers/inputs-generator.js +2 -1
- package/dist/node/esm/storage/blockchain/abi/ERC20Permit.json +1 -0
- package/dist/node/esm/storage/blockchain/erc20-permit-sig.js +39 -0
- package/dist/node/esm/storage/blockchain/index.js +1 -0
- package/dist/node/esm/storage/filters/jsonQuery.js +5 -3
- package/dist/node/esm/verifiable/constants.js +27 -10
- package/dist/types/iden3comm/constants.d.ts +16 -0
- package/dist/types/iden3comm/handlers/auth.d.ts +19 -7
- package/dist/types/iden3comm/handlers/common.d.ts +7 -1
- package/dist/types/iden3comm/handlers/contract-request.d.ts +2 -2
- package/dist/types/iden3comm/handlers/credential-proposal.d.ts +9 -4
- package/dist/types/iden3comm/handlers/fetch.d.ts +22 -6
- package/dist/types/iden3comm/handlers/message-handler.d.ts +6 -0
- package/dist/types/iden3comm/handlers/payment.d.ts +70 -10
- package/dist/types/iden3comm/handlers/revocation-status.d.ts +2 -2
- package/dist/types/iden3comm/index.d.ts +1 -0
- package/dist/types/iden3comm/packageManager.d.ts +4 -0
- package/dist/types/iden3comm/packers/jws.d.ts +5 -0
- package/dist/types/iden3comm/packers/plain.d.ts +4 -0
- package/dist/types/iden3comm/packers/zkp.d.ts +6 -0
- package/dist/types/iden3comm/types/index.d.ts +1 -0
- package/dist/types/iden3comm/types/packageManager.d.ts +14 -0
- package/dist/types/iden3comm/types/packer.d.ts +25 -0
- package/dist/types/iden3comm/types/protocol/accept-profile.d.ts +7 -0
- package/dist/types/iden3comm/types/protocol/auth.d.ts +1 -0
- package/dist/types/iden3comm/types/protocol/credentials.d.ts +6 -6
- package/dist/types/iden3comm/types/protocol/messages.d.ts +2 -2
- package/dist/types/iden3comm/types/protocol/payment.d.ts +87 -13
- package/dist/types/iden3comm/types/protocol/proof.d.ts +3 -3
- package/dist/types/iden3comm/types/protocol/revocation.d.ts +2 -2
- package/dist/types/iden3comm/utils/accept-profile.d.ts +3 -0
- package/dist/types/iden3comm/utils/index.d.ts +1 -0
- package/dist/types/storage/blockchain/erc20-permit-sig.d.ts +12 -0
- package/dist/types/storage/blockchain/index.d.ts +1 -0
- package/dist/types/verifiable/constants.d.ts +27 -11
- 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:
|
|
138
|
-
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');
|