@frequency-chain/ethereum-utils 1.17.0-rc5 → 1.17.0-rc6

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/cjs/index.js CHANGED
@@ -36,12 +36,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- const address = __importStar(require("./address"));
40
- const payloads = __importStar(require("./payloads"));
41
- const signature = __importStar(require("./signature"));
42
- const signatureDefinitions = __importStar(require("./signature.definitions"));
43
- __exportStar(require("./payloads"), exports);
44
- __exportStar(require("./signature"), exports);
45
- __exportStar(require("./signature.definitions"), exports);
46
- __exportStar(require("./address"), exports);
39
+ const address = __importStar(require("./address.js"));
40
+ const payloads = __importStar(require("./payloads.js"));
41
+ const signature = __importStar(require("./signature.js"));
42
+ const signatureDefinitions = __importStar(require("./signature.definitions.js"));
43
+ __exportStar(require("./payloads.js"), exports);
44
+ __exportStar(require("./signature.js"), exports);
45
+ __exportStar(require("./signature.definitions.js"), exports);
46
+ __exportStar(require("./address.js"), exports);
47
47
  exports.default = { ...payloads, ...address, ...signatureDefinitions, ...signature };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PASSKEY_PUBLIC_KEY_DEFINITION = exports.CLAIM_HANDLE_PAYLOAD_DEFINITION = exports.ADD_KEY_DATA_DEFINITION = exports.ADD_PROVIDER_DEFINITION = exports.EIP712_DOMAIN_DEFAULT = exports.EIP712_DOMAIN_DEFINITION = void 0;
3
+ exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PASSKEY_PUBLIC_KEY_DEFINITION = exports.CLAIM_HANDLE_PAYLOAD_DEFINITION = exports.AUTHORIZED_KEY_DATA_DEFINITION = exports.ADD_KEY_DATA_DEFINITION = exports.ADD_PROVIDER_DEFINITION = exports.EIP712_DOMAIN_DEFAULT = exports.EIP712_DOMAIN_DEFINITION = void 0;
4
4
  exports.EIP712_DOMAIN_DEFINITION = {
5
5
  EIP712Domain: [
6
6
  {
@@ -60,6 +60,22 @@ exports.ADD_KEY_DATA_DEFINITION = {
60
60
  },
61
61
  ],
62
62
  };
63
+ exports.AUTHORIZED_KEY_DATA_DEFINITION = {
64
+ AuthorizedKeyData: [
65
+ {
66
+ name: 'msaId',
67
+ type: 'uint64',
68
+ },
69
+ {
70
+ name: 'expiration',
71
+ type: 'uint32',
72
+ },
73
+ {
74
+ name: 'authorizedPublicKey',
75
+ type: 'address',
76
+ },
77
+ ],
78
+ };
63
79
  exports.CLAIM_HANDLE_PAYLOAD_DEFINITION = {
64
80
  ClaimHandlePayload: [
65
81
  {
@@ -149,3 +165,30 @@ exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2 = {
149
165
  { name: 'index', type: 'uint16' },
150
166
  ],
151
167
  };
168
+ exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = {
169
+ SiwfSignedRequestPayload: [
170
+ {
171
+ name: 'callback',
172
+ type: 'string',
173
+ },
174
+ {
175
+ name: 'permissions',
176
+ type: 'uint16[]',
177
+ },
178
+ {
179
+ name: 'userIdentifierAdminUrl',
180
+ type: 'string',
181
+ },
182
+ ],
183
+ };
184
+ const PAYLOAD_DEFINITIONS = [
185
+ exports.ADD_PROVIDER_DEFINITION,
186
+ exports.ADD_KEY_DATA_DEFINITION,
187
+ exports.AUTHORIZED_KEY_DATA_DEFINITION,
188
+ exports.CLAIM_HANDLE_PAYLOAD_DEFINITION,
189
+ exports.PASSKEY_PUBLIC_KEY_DEFINITION,
190
+ exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,
191
+ exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,
192
+ exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,
193
+ exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
194
+ ];
package/cjs/signature.js CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.signEip712 = signEip712;
4
- exports.verifyEip712Signature = verifyEip712Signature;
3
+ exports.sign = sign;
4
+ exports.verifySignature = verifySignature;
5
5
  exports.createAddKeyData = createAddKeyData;
6
+ exports.createAuthorizedKeyData = createAuthorizedKeyData;
6
7
  exports.createAddProvider = createAddProvider;
7
8
  exports.createClaimHandlePayload = createClaimHandlePayload;
8
9
  exports.createPasskeyPublicKey = createPasskeyPublicKey;
@@ -11,48 +12,72 @@ exports.createItemizedDeleteAction = createItemizedDeleteAction;
11
12
  exports.createItemizedSignaturePayloadV2 = createItemizedSignaturePayloadV2;
12
13
  exports.createPaginatedDeleteSignaturePayloadV2 = createPaginatedDeleteSignaturePayloadV2;
13
14
  exports.createPaginatedUpsertSignaturePayloadV2 = createPaginatedUpsertSignaturePayloadV2;
15
+ exports.createSiwfSignedRequestPayload = createSiwfSignedRequestPayload;
16
+ exports.createSiwfLoginRequestPayload = createSiwfLoginRequestPayload;
14
17
  exports.getEip712BrowserRequestAddKeyData = getEip712BrowserRequestAddKeyData;
18
+ exports.getEip712BrowserRequestAuthorizedKeyData = getEip712BrowserRequestAuthorizedKeyData;
15
19
  exports.getEip712BrowserRequestAddProvider = getEip712BrowserRequestAddProvider;
16
20
  exports.getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2 = getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2;
17
21
  exports.getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2 = getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2;
18
22
  exports.getEip712BrowserRequestItemizedSignaturePayloadV2 = getEip712BrowserRequestItemizedSignaturePayloadV2;
19
23
  exports.getEip712BrowserRequestClaimHandlePayload = getEip712BrowserRequestClaimHandlePayload;
20
24
  exports.getEip712BrowserRequestPasskeyPublicKey = getEip712BrowserRequestPasskeyPublicKey;
25
+ exports.getEip712BrowserRequestSiwfSignedRequestPayload = getEip712BrowserRequestSiwfSignedRequestPayload;
21
26
  exports.getEthereumRegularSigner = getEthereumRegularSigner;
22
27
  exports.getEthereumMessageSigner = getEthereumMessageSigner;
23
- const utils_1 = require("./utils");
24
- const address_1 = require("./address");
28
+ const utils_js_1 = require("./utils.js");
29
+ const address_js_1 = require("./address.js");
25
30
  const ethers_1 = require("ethers");
26
31
  const util_1 = require("@polkadot/util");
27
- const signature_definitions_1 = require("./signature.definitions");
32
+ const signature_definitions_js_1 = require("./signature.definitions.js");
28
33
  /**
29
- * Signing EIP-712 compatible signature for payload
34
+ * Signing EIP-712 or ERC-191 compatible signature based on payload
30
35
  * @param secretKey
31
36
  * @param payload
32
37
  * @param chain
33
38
  */
34
- async function signEip712(secretKey, payload, chain = 'Mainnet-Frequency') {
35
- const types = getTypesFor(payload.type);
39
+ async function sign(secretKey, payload, chain = 'Mainnet-Frequency') {
40
+ const signatureType = getSignatureType(payload.type);
36
41
  const normalizedPayload = normalizePayload(payload);
37
42
  const wallet = new ethers_1.ethers.Wallet(secretKey);
38
- // TODO: use correct chainID for different networks
39
- // TODO: use correct contract address for different payloads
40
- const signature = await wallet.signTypedData(signature_definitions_1.EIP712_DOMAIN_DEFAULT, types, normalizedPayload);
43
+ let signature;
44
+ switch (signatureType) {
45
+ case 'EIP-712':
46
+ // TODO: use correct chainID for different networks
47
+ // TODO: use correct contract address for different payloads
48
+ signature = await wallet.signTypedData(signature_definitions_js_1.EIP712_DOMAIN_DEFAULT, getTypesFor(payload.type), normalizedPayload);
49
+ break;
50
+ case 'EIP-191':
51
+ signature = await wallet.signMessage(payload.message);
52
+ break;
53
+ default:
54
+ throw new Error(`Unsupported signature type : ${signatureType}`);
55
+ }
41
56
  return { Ecdsa: signature };
42
57
  }
43
58
  /**
44
- * Verify EIP-712 signatures
59
+ * Verify EIP-712 and ERC-191 signatures based on payload
45
60
  * @param ethereumAddress
46
61
  * @param signature
47
62
  * @param payload
48
63
  * @param chain
49
64
  */
50
- function verifyEip712Signature(ethereumAddress, signature, payload, chain = 'Mainnet-Frequency') {
51
- const types = getTypesFor(payload.type);
65
+ function verifySignature(ethereumAddress, signature, payload, chain = 'Mainnet-Frequency') {
66
+ const signatureType = getSignatureType(payload.type);
52
67
  const normalizedPayload = normalizePayload(payload);
53
- // TODO: use correct chainID for different networks
54
- // TODO: use correct contract address for different payloads
55
- const recoveredAddress = ethers_1.ethers.verifyTypedData(signature_definitions_1.EIP712_DOMAIN_DEFAULT, types, normalizedPayload, signature);
68
+ let recoveredAddress;
69
+ switch (signatureType) {
70
+ case 'EIP-712':
71
+ // TODO: use correct chainID for different networks
72
+ // TODO: use correct contract address for different payloads
73
+ recoveredAddress = ethers_1.ethers.verifyTypedData(signature_definitions_js_1.EIP712_DOMAIN_DEFAULT, getTypesFor(payload.type), normalizedPayload, signature);
74
+ break;
75
+ case 'EIP-191':
76
+ recoveredAddress = ethers_1.ethers.verifyMessage(payload.message, signature);
77
+ break;
78
+ default:
79
+ throw new Error(`Unsupported signature type : ${signatureType}`);
80
+ }
56
81
  return recoveredAddress.toLowerCase() === ethereumAddress.toLowerCase();
57
82
  }
58
83
  function normalizePayload(payload) {
@@ -64,14 +89,27 @@ function normalizePayload(payload) {
64
89
  case 'PasskeyPublicKey':
65
90
  case 'ClaimHandlePayload':
66
91
  case 'AddProvider':
92
+ case 'SiwfLoginRequestPayload':
67
93
  break;
68
94
  case 'AddKeyData':
69
95
  // convert to 20 bytes ethereum address for signature
70
96
  if (clonedPayload.newPublicKey.length !== 42) {
71
- clonedPayload.newPublicKey = (0, address_1.reverseUnifiedAddressToEthereumAddress)(payload.newPublicKey);
97
+ clonedPayload.newPublicKey = (0, address_js_1.reverseUnifiedAddressToEthereumAddress)(payload.newPublicKey);
72
98
  }
73
99
  clonedPayload.newPublicKey = clonedPayload.newPublicKey.toLowerCase();
74
100
  break;
101
+ case 'AuthorizedKeyData':
102
+ // convert to 20 bytes ethereum address for signature
103
+ if (clonedPayload.authorizedPublicKey.length !== 42) {
104
+ clonedPayload.authorizedPublicKey = (0, address_js_1.reverseUnifiedAddressToEthereumAddress)(payload.authorizedPublicKey);
105
+ }
106
+ clonedPayload.authorizedPublicKey = clonedPayload.authorizedPublicKey.toLowerCase();
107
+ break;
108
+ case 'SiwfSignedRequestPayload':
109
+ if (clonedPayload.userIdentifierAdminUrl == null) {
110
+ clonedPayload.userIdentifierAdminUrl = '';
111
+ }
112
+ break;
75
113
  default:
76
114
  throw new Error(`Unsupported payload type: ${JSON.stringify(payload)}`);
77
115
  }
@@ -81,13 +119,16 @@ function normalizePayload(payload) {
81
119
  }
82
120
  function getTypesFor(payloadType) {
83
121
  const PAYLOAD_TYPE_DEFINITIONS = {
84
- PaginatedUpsertSignaturePayloadV2: signature_definitions_1.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,
85
- PaginatedDeleteSignaturePayloadV2: signature_definitions_1.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,
86
- ItemizedSignaturePayloadV2: signature_definitions_1.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,
87
- PasskeyPublicKey: signature_definitions_1.PASSKEY_PUBLIC_KEY_DEFINITION,
88
- ClaimHandlePayload: signature_definitions_1.CLAIM_HANDLE_PAYLOAD_DEFINITION,
89
- AddKeyData: signature_definitions_1.ADD_KEY_DATA_DEFINITION,
90
- AddProvider: signature_definitions_1.ADD_PROVIDER_DEFINITION,
122
+ PaginatedUpsertSignaturePayloadV2: signature_definitions_js_1.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,
123
+ PaginatedDeleteSignaturePayloadV2: signature_definitions_js_1.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,
124
+ ItemizedSignaturePayloadV2: signature_definitions_js_1.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,
125
+ PasskeyPublicKey: signature_definitions_js_1.PASSKEY_PUBLIC_KEY_DEFINITION,
126
+ ClaimHandlePayload: signature_definitions_js_1.CLAIM_HANDLE_PAYLOAD_DEFINITION,
127
+ AddKeyData: signature_definitions_js_1.ADD_KEY_DATA_DEFINITION,
128
+ AuthorizedKeyData: signature_definitions_js_1.AUTHORIZED_KEY_DATA_DEFINITION,
129
+ AddProvider: signature_definitions_js_1.ADD_PROVIDER_DEFINITION,
130
+ // offchain signatures
131
+ SiwfSignedRequestPayload: signature_definitions_js_1.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
91
132
  };
92
133
  const definition = PAYLOAD_TYPE_DEFINITIONS[payloadType];
93
134
  if (!definition) {
@@ -95,6 +136,12 @@ function getTypesFor(payloadType) {
95
136
  }
96
137
  return definition;
97
138
  }
139
+ function getSignatureType(payloadType) {
140
+ if (payloadType === 'SiwfLoginRequestPayload') {
141
+ return 'EIP-191';
142
+ }
143
+ return 'EIP-712';
144
+ }
98
145
  /**
99
146
  * Build an AddKeyData payload for signature.
100
147
  *
@@ -105,9 +152,9 @@ function getTypesFor(payloadType) {
105
152
  function createAddKeyData(msaId, newPublicKey, expirationBlock) {
106
153
  const parsedMsaId = typeof msaId === 'string' ? msaId : `${msaId}`;
107
154
  const parsedNewPublicKey = typeof newPublicKey === 'object' ? (0, util_1.u8aToHex)(newPublicKey) : newPublicKey;
108
- (0, utils_1.assert)((0, utils_1.isValidUint64String)(parsedMsaId), 'msaId should be a valid uint64');
109
- (0, utils_1.assert)((0, utils_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
110
- (0, utils_1.assert)((0, utils_1.isHexString)(parsedNewPublicKey), 'newPublicKey should be valid hex');
155
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint64String)(parsedMsaId), 'msaId should be a valid uint64');
156
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
157
+ (0, utils_js_1.assert)((0, utils_js_1.isHexString)(parsedNewPublicKey), 'newPublicKey should be valid hex');
111
158
  return {
112
159
  type: 'AddKeyData',
113
160
  msaId: parsedMsaId,
@@ -115,6 +162,26 @@ function createAddKeyData(msaId, newPublicKey, expirationBlock) {
115
162
  newPublicKey: parsedNewPublicKey,
116
163
  };
117
164
  }
165
+ /**
166
+ * Build an AuthorizedKeyData payload for signature.
167
+ *
168
+ * @param msaId MSA ID (uint64) to add the key
169
+ * @param authorizedPublicKey 32 bytes public key to authorize in hex or Uint8Array
170
+ * @param expirationBlock Block number after which this payload is invalid
171
+ */
172
+ function createAuthorizedKeyData(msaId, newPublicKey, expirationBlock) {
173
+ const parsedMsaId = typeof msaId === 'string' ? msaId : `${msaId}`;
174
+ const parsedNewPublicKey = typeof newPublicKey === 'object' ? (0, util_1.u8aToHex)(newPublicKey) : newPublicKey;
175
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint64String)(parsedMsaId), 'msaId should be a valid uint64');
176
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
177
+ (0, utils_js_1.assert)((0, utils_js_1.isHexString)(parsedNewPublicKey), 'newPublicKey should be valid hex');
178
+ return {
179
+ type: 'AuthorizedKeyData',
180
+ msaId: parsedMsaId,
181
+ expiration: expirationBlock,
182
+ authorizedPublicKey: parsedNewPublicKey,
183
+ };
184
+ }
118
185
  /**
119
186
  * Build an AddProvider payload for signature.
120
187
  *
@@ -123,10 +190,10 @@ function createAddKeyData(msaId, newPublicKey, expirationBlock) {
123
190
  * @param expirationBlock Block number after which this payload is invalid
124
191
  */
125
192
  function createAddProvider(authorizedMsaId, schemaIds, expirationBlock) {
126
- (0, utils_1.assert)((0, utils_1.isValidUint64String)(authorizedMsaId), 'authorizedMsaId should be a valid uint64');
127
- (0, utils_1.assert)((0, utils_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
193
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint64String)(authorizedMsaId), 'authorizedMsaId should be a valid uint64');
194
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
128
195
  schemaIds.forEach((schemaId) => {
129
- (0, utils_1.assert)((0, utils_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
196
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
130
197
  });
131
198
  return {
132
199
  type: 'AddProvider',
@@ -142,8 +209,8 @@ function createAddProvider(authorizedMsaId, schemaIds, expirationBlock) {
142
209
  * @param expirationBlock Block number after which this payload is invalid
143
210
  */
144
211
  function createClaimHandlePayload(handle, expirationBlock) {
145
- (0, utils_1.assert)(handle.length > 0, 'handle should be a valid string');
146
- (0, utils_1.assert)((0, utils_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
212
+ (0, utils_js_1.assert)(handle.length > 0, 'handle should be a valid string');
213
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
147
214
  return {
148
215
  type: 'ClaimHandlePayload',
149
216
  handle,
@@ -157,7 +224,7 @@ function createClaimHandlePayload(handle, expirationBlock) {
157
224
  */
158
225
  function createPasskeyPublicKey(publicKey) {
159
226
  const parsedNewPublicKey = typeof publicKey === 'object' ? (0, util_1.u8aToHex)(publicKey) : publicKey;
160
- (0, utils_1.assert)((0, utils_1.isHexString)(parsedNewPublicKey), 'publicKey should be valid hex');
227
+ (0, utils_js_1.assert)((0, utils_js_1.isHexString)(parsedNewPublicKey), 'publicKey should be valid hex');
161
228
  return {
162
229
  type: 'PasskeyPublicKey',
163
230
  publicKey: parsedNewPublicKey,
@@ -165,11 +232,11 @@ function createPasskeyPublicKey(publicKey) {
165
232
  }
166
233
  function createItemizedAddAction(data) {
167
234
  const parsedData = typeof data === 'object' ? (0, util_1.u8aToHex)(data) : data;
168
- (0, utils_1.assert)((0, utils_1.isHexString)(parsedData), 'itemized data should be valid hex');
235
+ (0, utils_js_1.assert)((0, utils_js_1.isHexString)(parsedData), 'itemized data should be valid hex');
169
236
  return { actionType: 'Add', data, index: 0 };
170
237
  }
171
238
  function createItemizedDeleteAction(index) {
172
- (0, utils_1.assert)((0, utils_1.isValidUint16)(index), 'itemized index should be a valid uint16');
239
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(index), 'itemized index should be a valid uint16');
173
240
  return { actionType: 'Delete', data: '0x', index };
174
241
  }
175
242
  /**
@@ -181,10 +248,10 @@ function createItemizedDeleteAction(index) {
181
248
  * @param actions Array of Add/Delete itemized actions
182
249
  */
183
250
  function createItemizedSignaturePayloadV2(schemaId, targetHash, expiration, actions) {
184
- (0, utils_1.assert)((0, utils_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
185
- (0, utils_1.assert)((0, utils_1.isValidUint32)(targetHash), 'targetHash should be a valid uint32');
186
- (0, utils_1.assert)((0, utils_1.isValidUint32)(expiration), 'expiration should be a valid uint32');
187
- (0, utils_1.assert)(actions.length > 0, 'At least one action is required for ItemizedSignaturePayloadV2');
251
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
252
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(targetHash), 'targetHash should be a valid uint32');
253
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expiration), 'expiration should be a valid uint32');
254
+ (0, utils_js_1.assert)(actions.length > 0, 'At least one action is required for ItemizedSignaturePayloadV2');
188
255
  return {
189
256
  type: 'ItemizedSignaturePayloadV2',
190
257
  schemaId,
@@ -202,10 +269,10 @@ function createItemizedSignaturePayloadV2(schemaId, targetHash, expiration, acti
202
269
  * @param expiration uint32 expiration block
203
270
  */
204
271
  function createPaginatedDeleteSignaturePayloadV2(schemaId, pageId, targetHash, expiration) {
205
- (0, utils_1.assert)((0, utils_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
206
- (0, utils_1.assert)((0, utils_1.isValidUint16)(pageId), 'pageId should be a valid uint16');
207
- (0, utils_1.assert)((0, utils_1.isValidUint32)(targetHash), 'targetHash should be a valid uint32');
208
- (0, utils_1.assert)((0, utils_1.isValidUint32)(expiration), 'expiration should be a valid uint32');
272
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
273
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(pageId), 'pageId should be a valid uint16');
274
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(targetHash), 'targetHash should be a valid uint32');
275
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expiration), 'expiration should be a valid uint32');
209
276
  return {
210
277
  type: 'PaginatedDeleteSignaturePayloadV2',
211
278
  schemaId,
@@ -225,11 +292,11 @@ function createPaginatedDeleteSignaturePayloadV2(schemaId, pageId, targetHash, e
225
292
  */
226
293
  function createPaginatedUpsertSignaturePayloadV2(schemaId, pageId, targetHash, expiration, payload) {
227
294
  const parsedPayload = typeof payload === 'object' ? (0, util_1.u8aToHex)(payload) : payload;
228
- (0, utils_1.assert)((0, utils_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
229
- (0, utils_1.assert)((0, utils_1.isValidUint16)(pageId), 'pageId should be a valid uint16');
230
- (0, utils_1.assert)((0, utils_1.isValidUint32)(targetHash), 'targetHash should be a valid uint32');
231
- (0, utils_1.assert)((0, utils_1.isValidUint32)(expiration), 'expiration should be a valid uint32');
232
- (0, utils_1.assert)((0, utils_1.isHexString)(parsedPayload), 'payload should be valid hex');
295
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(schemaId), 'schemaId should be a valid uint16');
296
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(pageId), 'pageId should be a valid uint16');
297
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(targetHash), 'targetHash should be a valid uint32');
298
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expiration), 'expiration should be a valid uint32');
299
+ (0, utils_js_1.assert)((0, utils_js_1.isHexString)(parsedPayload), 'payload should be valid hex');
233
300
  return {
234
301
  type: 'PaginatedUpsertSignaturePayloadV2',
235
302
  schemaId,
@@ -239,6 +306,35 @@ function createPaginatedUpsertSignaturePayloadV2(schemaId, pageId, targetHash, e
239
306
  payload: parsedPayload,
240
307
  };
241
308
  }
309
+ /**
310
+ * Build an SiwfSignedRequestPayload payload for signature.
311
+ *
312
+ * @param callback Callback URL for login
313
+ * @param permissions One or more schema IDs (uint16) the provider may use
314
+ * @param userIdentifierAdminUrl Only used for custom integration situations.
315
+ */
316
+ function createSiwfSignedRequestPayload(callback, permissions, userIdentifierAdminUrl) {
317
+ permissions.forEach((schemaId) => {
318
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint16)(schemaId), 'permission should be a valid uint16');
319
+ });
320
+ return {
321
+ type: 'SiwfSignedRequestPayload',
322
+ callback: callback,
323
+ permissions,
324
+ userIdentifierAdminUrl,
325
+ };
326
+ }
327
+ /**
328
+ * Build an SiwfLoginRequestPayload payload for signature.
329
+ *
330
+ * @param message login message
331
+ */
332
+ function createSiwfLoginRequestPayload(message) {
333
+ return {
334
+ type: 'SiwfLoginRequestPayload',
335
+ message,
336
+ };
337
+ }
242
338
  /**
243
339
  * Returns the EIP-712 browser request for a AddKeyData for signing.
244
340
  *
@@ -247,10 +343,23 @@ function createPaginatedUpsertSignaturePayloadV2(schemaId, pageId, targetHash, e
247
343
  * @param expirationBlock Block number after which this payload is invalid
248
344
  * @param domain
249
345
  */
250
- function getEip712BrowserRequestAddKeyData(msaId, newPublicKey, expirationBlock, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
346
+ function getEip712BrowserRequestAddKeyData(msaId, newPublicKey, expirationBlock, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
251
347
  const message = createAddKeyData(msaId, newPublicKey, expirationBlock);
252
348
  const normalized = normalizePayload(message);
253
- return createEip712Payload(signature_definitions_1.ADD_KEY_DATA_DEFINITION, message.type, domain, normalized);
349
+ return createEip712Payload(signature_definitions_js_1.ADD_KEY_DATA_DEFINITION, message.type, domain, normalized);
350
+ }
351
+ /**
352
+ * Returns the EIP-712 browser request for a AuthorizedKeyData for signing.
353
+ *
354
+ * @param msaId MSA ID (uint64) to add the key
355
+ * @param authorizedPublicKey 32 bytes public key to add in hex or Uint8Array
356
+ * @param expirationBlock Block number after which this payload is invalid
357
+ * @param domain
358
+ */
359
+ function getEip712BrowserRequestAuthorizedKeyData(msaId, authorizedPublicKey, expirationBlock, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
360
+ const message = createAuthorizedKeyData(msaId, authorizedPublicKey, expirationBlock);
361
+ const normalized = normalizePayload(message);
362
+ return createEip712Payload(signature_definitions_js_1.AUTHORIZED_KEY_DATA_DEFINITION, message.type, domain, normalized);
254
363
  }
255
364
  /**
256
365
  * Returns the EIP-712 browser request for a AddProvider for signing.
@@ -260,10 +369,10 @@ function getEip712BrowserRequestAddKeyData(msaId, newPublicKey, expirationBlock,
260
369
  * @param expirationBlock Block number after which this payload is invalid
261
370
  * @param domain
262
371
  */
263
- function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, expirationBlock, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
372
+ function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, expirationBlock, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
264
373
  const message = createAddProvider(authorizedMsaId, schemaIds, expirationBlock);
265
374
  const normalized = normalizePayload(message);
266
- return createEip712Payload(signature_definitions_1.ADD_PROVIDER_DEFINITION, message.type, domain, normalized);
375
+ return createEip712Payload(signature_definitions_js_1.ADD_PROVIDER_DEFINITION, message.type, domain, normalized);
267
376
  }
268
377
  /**
269
378
  * Returns the EIP-712 browser request for a PaginatedUpsertSignaturePayloadV2 for signing.
@@ -275,10 +384,10 @@ function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, expirati
275
384
  * @param payload HexString or Uint8Array data to upsert
276
385
  * @param domain
277
386
  */
278
- function getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2(schemaId, pageId, targetHash, expiration, payload, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
387
+ function getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2(schemaId, pageId, targetHash, expiration, payload, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
279
388
  const message = createPaginatedUpsertSignaturePayloadV2(schemaId, pageId, targetHash, expiration, payload);
280
389
  const normalized = normalizePayload(message);
281
- return createEip712Payload(signature_definitions_1.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2, message.type, domain, normalized);
390
+ return createEip712Payload(signature_definitions_js_1.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2, message.type, domain, normalized);
282
391
  }
283
392
  /**
284
393
  * Returns the EIP-712 browser request for a PaginatedDeleteSignaturePayloadV2 for signing.
@@ -289,10 +398,10 @@ function getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2(schemaId, page
289
398
  * @param expiration uint32 expiration block
290
399
  * @param domain
291
400
  */
292
- function getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2(schemaId, pageId, targetHash, expiration, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
401
+ function getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2(schemaId, pageId, targetHash, expiration, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
293
402
  const message = createPaginatedDeleteSignaturePayloadV2(schemaId, pageId, targetHash, expiration);
294
403
  const normalized = normalizePayload(message);
295
- return createEip712Payload(signature_definitions_1.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2, message.type, domain, normalized);
404
+ return createEip712Payload(signature_definitions_js_1.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2, message.type, domain, normalized);
296
405
  }
297
406
  /**
298
407
  * Returns the EIP-712 browser request for a ItemizedSignaturePayloadV2 for signing.
@@ -303,10 +412,10 @@ function getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2(schemaId, page
303
412
  * @param actions Array of Add/Delete itemized actions
304
413
  * @param domain
305
414
  */
306
- function getEip712BrowserRequestItemizedSignaturePayloadV2(schemaId, targetHash, expiration, actions, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
415
+ function getEip712BrowserRequestItemizedSignaturePayloadV2(schemaId, targetHash, expiration, actions, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
307
416
  const message = createItemizedSignaturePayloadV2(schemaId, targetHash, expiration, actions);
308
417
  const normalized = normalizePayload(message);
309
- return createEip712Payload(signature_definitions_1.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2, message.type, domain, normalized);
418
+ return createEip712Payload(signature_definitions_js_1.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2, message.type, domain, normalized);
310
419
  }
311
420
  /**
312
421
  * Returns the EIP-712 browser request for a ClaimHandlePayload for signing.
@@ -315,10 +424,10 @@ function getEip712BrowserRequestItemizedSignaturePayloadV2(schemaId, targetHash,
315
424
  * @param expirationBlock Block number after which this payload is invalid
316
425
  * @param domain
317
426
  */
318
- function getEip712BrowserRequestClaimHandlePayload(handle, expirationBlock, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
427
+ function getEip712BrowserRequestClaimHandlePayload(handle, expirationBlock, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
319
428
  const message = createClaimHandlePayload(handle, expirationBlock);
320
429
  const normalized = normalizePayload(message);
321
- return createEip712Payload(signature_definitions_1.CLAIM_HANDLE_PAYLOAD_DEFINITION, message.type, domain, normalized);
430
+ return createEip712Payload(signature_definitions_js_1.CLAIM_HANDLE_PAYLOAD_DEFINITION, message.type, domain, normalized);
322
431
  }
323
432
  /**
324
433
  * Returns the EIP-712 browser request for a PasskeyPublicKey for signing.
@@ -326,15 +435,28 @@ function getEip712BrowserRequestClaimHandlePayload(handle, expirationBlock, doma
326
435
  * @param publicKey The passkey’s public key (hex string or raw bytes)
327
436
  * @param domain
328
437
  */
329
- function getEip712BrowserRequestPasskeyPublicKey(publicKey, domain = signature_definitions_1.EIP712_DOMAIN_DEFAULT) {
438
+ function getEip712BrowserRequestPasskeyPublicKey(publicKey, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
330
439
  const message = createPasskeyPublicKey(publicKey);
331
440
  const normalized = normalizePayload(message);
332
- return createEip712Payload(signature_definitions_1.PASSKEY_PUBLIC_KEY_DEFINITION, message.type, domain, normalized);
441
+ return createEip712Payload(signature_definitions_js_1.PASSKEY_PUBLIC_KEY_DEFINITION, message.type, domain, normalized);
442
+ }
443
+ /**
444
+ * Returns the EIP-712 browser request for a SiwfSignedRequestPayload for signing.
445
+ *
446
+ * @param callback Callback URL for login
447
+ * @param permissions One or more schema IDs (uint16) the provider may use
448
+ * @param userIdentifierAdminUrl Only used for custom integration situations.
449
+ * @param domain
450
+ */
451
+ function getEip712BrowserRequestSiwfSignedRequestPayload(callback, permissions, userIdentifierAdminUrl, domain = signature_definitions_js_1.EIP712_DOMAIN_DEFAULT) {
452
+ const message = createSiwfSignedRequestPayload(callback, permissions, userIdentifierAdminUrl);
453
+ const normalized = normalizePayload(message);
454
+ return createEip712Payload(signature_definitions_js_1.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION, message.type, domain, normalized);
333
455
  }
334
456
  function createEip712Payload(typeDefinition, primaryType, domain, message) {
335
457
  return {
336
458
  types: {
337
- ...signature_definitions_1.EIP712_DOMAIN_DEFINITION,
459
+ ...signature_definitions_js_1.EIP712_DOMAIN_DEFINITION,
338
460
  ...typeDefinition,
339
461
  },
340
462
  primaryType,
package/esm/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import * as address from './address';
2
- import * as payloads from './payloads';
3
- import * as signature from './signature';
4
- import * as signatureDefinitions from './signature.definitions';
5
- export * from './payloads';
6
- export * from './signature';
7
- export * from './signature.definitions';
8
- export * from './address';
1
+ import * as address from './address.js';
2
+ import * as payloads from './payloads.js';
3
+ import * as signature from './signature.js';
4
+ import * as signatureDefinitions from './signature.definitions.js';
5
+ export * from './payloads.js';
6
+ export * from './signature.js';
7
+ export * from './signature.definitions.js';
8
+ export * from './address.js';
9
9
  export default { ...payloads, ...address, ...signatureDefinitions, ...signature };
@@ -57,6 +57,22 @@ export const ADD_KEY_DATA_DEFINITION = {
57
57
  },
58
58
  ],
59
59
  };
60
+ export const AUTHORIZED_KEY_DATA_DEFINITION = {
61
+ AuthorizedKeyData: [
62
+ {
63
+ name: 'msaId',
64
+ type: 'uint64',
65
+ },
66
+ {
67
+ name: 'expiration',
68
+ type: 'uint32',
69
+ },
70
+ {
71
+ name: 'authorizedPublicKey',
72
+ type: 'address',
73
+ },
74
+ ],
75
+ };
60
76
  export const CLAIM_HANDLE_PAYLOAD_DEFINITION = {
61
77
  ClaimHandlePayload: [
62
78
  {
@@ -146,3 +162,30 @@ export const ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2 = {
146
162
  { name: 'index', type: 'uint16' },
147
163
  ],
148
164
  };
165
+ export const SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = {
166
+ SiwfSignedRequestPayload: [
167
+ {
168
+ name: 'callback',
169
+ type: 'string',
170
+ },
171
+ {
172
+ name: 'permissions',
173
+ type: 'uint16[]',
174
+ },
175
+ {
176
+ name: 'userIdentifierAdminUrl',
177
+ type: 'string',
178
+ },
179
+ ],
180
+ };
181
+ const PAYLOAD_DEFINITIONS = [
182
+ ADD_PROVIDER_DEFINITION,
183
+ ADD_KEY_DATA_DEFINITION,
184
+ AUTHORIZED_KEY_DATA_DEFINITION,
185
+ CLAIM_HANDLE_PAYLOAD_DEFINITION,
186
+ PASSKEY_PUBLIC_KEY_DEFINITION,
187
+ PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,
188
+ PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,
189
+ ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,
190
+ SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
191
+ ];