@mysten/sui 1.9.0 → 1.11.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/CHANGELOG.md +29 -0
- package/dist/cjs/bcs/bcs.js +14 -14
- package/dist/cjs/bcs/bcs.js.map +2 -2
- package/dist/cjs/client/client.js +6 -6
- package/dist/cjs/client/client.js.map +2 -2
- package/dist/cjs/client/types/generated.d.ts +1 -2
- package/dist/cjs/client/types/generated.js.map +1 -1
- package/dist/cjs/cryptography/keypair.js +2 -2
- package/dist/cjs/cryptography/keypair.js.map +2 -2
- package/dist/cjs/cryptography/mnemonics.js +1 -1
- package/dist/cjs/cryptography/mnemonics.js.map +1 -1
- package/dist/cjs/cryptography/publickey.js +2 -2
- package/dist/cjs/cryptography/publickey.js.map +2 -2
- package/dist/cjs/cryptography/signature.js +2 -2
- package/dist/cjs/cryptography/signature.js.map +2 -2
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +1 -1
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/keypair.d.ts +2 -2
- package/dist/cjs/keypairs/ed25519/keypair.js +8 -1
- package/dist/cjs/keypairs/ed25519/keypair.js.map +2 -2
- package/dist/cjs/keypairs/ed25519/publickey.js +1 -1
- package/dist/cjs/keypairs/ed25519/publickey.js.map +2 -2
- package/dist/cjs/keypairs/secp256k1/keypair.d.ts +2 -2
- package/dist/cjs/keypairs/secp256k1/keypair.js +8 -1
- package/dist/cjs/keypairs/secp256k1/keypair.js.map +2 -2
- package/dist/cjs/keypairs/secp256k1/publickey.js +1 -1
- package/dist/cjs/keypairs/secp256k1/publickey.js.map +2 -2
- package/dist/cjs/keypairs/secp256r1/keypair.d.ts +2 -2
- package/dist/cjs/keypairs/secp256r1/keypair.js +8 -1
- package/dist/cjs/keypairs/secp256r1/keypair.js.map +2 -2
- package/dist/cjs/keypairs/secp256r1/publickey.js +1 -1
- package/dist/cjs/keypairs/secp256r1/publickey.js.map +2 -2
- package/dist/cjs/multisig/publickey.js +2 -2
- package/dist/cjs/multisig/publickey.js.map +2 -2
- package/dist/cjs/multisig/signer.js +2 -2
- package/dist/cjs/multisig/signer.js.map +2 -2
- package/dist/cjs/transactions/Commands.js +2 -2
- package/dist/cjs/transactions/Commands.js.map +2 -2
- package/dist/cjs/transactions/Inputs.js +1 -1
- package/dist/cjs/transactions/Inputs.js.map +2 -2
- package/dist/cjs/transactions/Transaction.js +2 -2
- package/dist/cjs/transactions/Transaction.js.map +2 -2
- package/dist/cjs/transactions/TransactionData.js +1 -1
- package/dist/cjs/transactions/TransactionData.js.map +2 -2
- package/dist/cjs/transactions/data/v1.js +6 -6
- package/dist/cjs/transactions/data/v1.js.map +2 -2
- package/dist/cjs/transactions/executor/parallel.js +1 -1
- package/dist/cjs/transactions/executor/parallel.js.map +2 -2
- package/dist/cjs/transactions/executor/serial.js +1 -1
- package/dist/cjs/transactions/executor/serial.js.map +2 -2
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.d.ts +3 -3
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -1
- package/dist/cjs/transactions/plugins/utils.js +26 -7
- package/dist/cjs/transactions/plugins/utils.js.map +2 -2
- package/dist/cjs/utils/index.d.ts +1 -1
- package/dist/cjs/utils/index.js +7 -1
- package/dist/cjs/utils/index.js.map +2 -2
- package/dist/cjs/utils/move-registry.js +12 -3
- package/dist/cjs/utils/move-registry.js.map +2 -2
- package/dist/cjs/utils/sui-types.js +1 -1
- package/dist/cjs/utils/sui-types.js.map +2 -2
- package/dist/cjs/verify/verify.js +1 -1
- package/dist/cjs/verify/verify.js.map +2 -2
- package/dist/cjs/version.d.ts +2 -2
- package/dist/cjs/version.js +2 -2
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/zklogin/publickey.js +5 -5
- package/dist/cjs/zklogin/publickey.js.map +2 -2
- package/dist/cjs/zklogin/signature.js +3 -3
- package/dist/cjs/zklogin/signature.js.map +2 -2
- package/dist/esm/bcs/bcs.js +15 -15
- package/dist/esm/bcs/bcs.js.map +2 -2
- package/dist/esm/client/client.js +7 -7
- package/dist/esm/client/client.js.map +2 -2
- package/dist/esm/client/types/generated.d.ts +1 -2
- package/dist/esm/cryptography/keypair.js +3 -3
- package/dist/esm/cryptography/keypair.js.map +2 -2
- package/dist/esm/cryptography/mnemonics.js +2 -2
- package/dist/esm/cryptography/mnemonics.js.map +1 -1
- package/dist/esm/cryptography/publickey.js +3 -3
- package/dist/esm/cryptography/publickey.js.map +2 -2
- package/dist/esm/cryptography/signature.js +3 -3
- package/dist/esm/cryptography/signature.js.map +2 -2
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +2 -2
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +1 -1
- package/dist/esm/keypairs/ed25519/keypair.d.ts +2 -2
- package/dist/esm/keypairs/ed25519/keypair.js +14 -2
- package/dist/esm/keypairs/ed25519/keypair.js.map +2 -2
- package/dist/esm/keypairs/ed25519/publickey.js +2 -2
- package/dist/esm/keypairs/ed25519/publickey.js.map +2 -2
- package/dist/esm/keypairs/secp256k1/keypair.d.ts +2 -2
- package/dist/esm/keypairs/secp256k1/keypair.js +9 -2
- package/dist/esm/keypairs/secp256k1/keypair.js.map +2 -2
- package/dist/esm/keypairs/secp256k1/publickey.js +2 -2
- package/dist/esm/keypairs/secp256k1/publickey.js.map +2 -2
- package/dist/esm/keypairs/secp256r1/keypair.d.ts +2 -2
- package/dist/esm/keypairs/secp256r1/keypair.js +9 -2
- package/dist/esm/keypairs/secp256r1/keypair.js.map +2 -2
- package/dist/esm/keypairs/secp256r1/publickey.js +2 -2
- package/dist/esm/keypairs/secp256r1/publickey.js.map +2 -2
- package/dist/esm/multisig/publickey.js +3 -3
- package/dist/esm/multisig/publickey.js.map +2 -2
- package/dist/esm/multisig/signer.js +3 -3
- package/dist/esm/multisig/signer.js.map +2 -2
- package/dist/esm/transactions/Commands.js +3 -3
- package/dist/esm/transactions/Commands.js.map +2 -2
- package/dist/esm/transactions/Inputs.js +2 -2
- package/dist/esm/transactions/Inputs.js.map +2 -2
- package/dist/esm/transactions/Transaction.js +3 -3
- package/dist/esm/transactions/Transaction.js.map +2 -2
- package/dist/esm/transactions/TransactionData.js +2 -2
- package/dist/esm/transactions/TransactionData.js.map +2 -2
- package/dist/esm/transactions/data/v1.js +7 -7
- package/dist/esm/transactions/data/v1.js.map +2 -2
- package/dist/esm/transactions/executor/parallel.js +2 -2
- package/dist/esm/transactions/executor/parallel.js.map +2 -2
- package/dist/esm/transactions/executor/serial.js +2 -2
- package/dist/esm/transactions/executor/serial.js.map +2 -2
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.d.ts +3 -3
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +1 -1
- package/dist/esm/transactions/plugins/utils.js +26 -7
- package/dist/esm/transactions/plugins/utils.js.map +2 -2
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.js +19 -2
- package/dist/esm/utils/index.js.map +2 -2
- package/dist/esm/utils/move-registry.js +12 -3
- package/dist/esm/utils/move-registry.js.map +2 -2
- package/dist/esm/utils/sui-types.js +2 -2
- package/dist/esm/utils/sui-types.js.map +2 -2
- package/dist/esm/verify/verify.js +2 -2
- package/dist/esm/verify/verify.js.map +2 -2
- package/dist/esm/version.d.ts +2 -2
- package/dist/esm/version.js +2 -2
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/zklogin/publickey.js +6 -6
- package/dist/esm/zklogin/publickey.js.map +2 -2
- package/dist/esm/zklogin/signature.js +4 -4
- package/dist/esm/zklogin/signature.js.map +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/bcs/bcs.ts +15 -15
- package/src/client/client.ts +7 -7
- package/src/client/types/generated.ts +1 -2
- package/src/cryptography/keypair.ts +3 -3
- package/src/cryptography/mnemonics.ts +2 -2
- package/src/cryptography/publickey.ts +3 -3
- package/src/cryptography/signature.ts +3 -3
- package/src/keypairs/ed25519/ed25519-hd-key.ts +2 -2
- package/src/keypairs/ed25519/keypair.ts +18 -3
- package/src/keypairs/ed25519/publickey.ts +2 -2
- package/src/keypairs/secp256k1/keypair.ts +13 -3
- package/src/keypairs/secp256k1/publickey.ts +2 -2
- package/src/keypairs/secp256r1/keypair.ts +13 -3
- package/src/keypairs/secp256r1/publickey.ts +2 -2
- package/src/multisig/publickey.ts +3 -3
- package/src/multisig/signer.ts +3 -3
- package/src/transactions/Commands.ts +3 -3
- package/src/transactions/Inputs.ts +2 -2
- package/src/transactions/Transaction.ts +3 -3
- package/src/transactions/TransactionData.ts +2 -2
- package/src/transactions/__tests__/Transaction.test.ts +2 -2
- package/src/transactions/__tests__/bcs.test.ts +2 -2
- package/src/transactions/data/v1.ts +7 -7
- package/src/transactions/executor/parallel.ts +2 -2
- package/src/transactions/executor/serial.ts +2 -2
- package/src/transactions/plugins/NamedPackagesPlugin.ts +3 -3
- package/src/transactions/plugins/utils.ts +33 -7
- package/src/utils/index.ts +12 -1
- package/src/utils/move-registry.ts +24 -5
- package/src/utils/sui-types.ts +2 -2
- package/src/verify/verify.ts +2 -2
- package/src/version.ts +2 -2
- package/src/zklogin/publickey.ts +6 -6
- package/src/zklogin/signature.ts +5 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { fromBase64, toBase64 } from '@mysten/bcs';
|
|
5
5
|
import type { GenericSchema, InferInput, InferOutput } from 'valibot';
|
|
6
6
|
import {
|
|
7
7
|
array,
|
|
@@ -236,7 +236,7 @@ export function serializeV1TransactionData(
|
|
|
236
236
|
kind: 'Input',
|
|
237
237
|
index,
|
|
238
238
|
value: {
|
|
239
|
-
Pure: Array.from(
|
|
239
|
+
Pure: Array.from(fromBase64(input.Pure.bytes)),
|
|
240
240
|
},
|
|
241
241
|
type: 'pure',
|
|
242
242
|
};
|
|
@@ -313,7 +313,7 @@ export function serializeV1TransactionData(
|
|
|
313
313
|
if (command.Publish) {
|
|
314
314
|
return {
|
|
315
315
|
kind: 'Publish',
|
|
316
|
-
modules: command.Publish.modules.map((mod) => Array.from(
|
|
316
|
+
modules: command.Publish.modules.map((mod) => Array.from(fromBase64(mod))),
|
|
317
317
|
dependencies: command.Publish.dependencies,
|
|
318
318
|
};
|
|
319
319
|
}
|
|
@@ -337,7 +337,7 @@ export function serializeV1TransactionData(
|
|
|
337
337
|
if (command.Upgrade) {
|
|
338
338
|
return {
|
|
339
339
|
kind: 'Upgrade',
|
|
340
|
-
modules: command.Upgrade.modules.map((mod) => Array.from(
|
|
340
|
+
modules: command.Upgrade.modules.map((mod) => Array.from(fromBase64(mod))),
|
|
341
341
|
dependencies: command.Upgrade.dependencies,
|
|
342
342
|
packageId: command.Upgrade.package,
|
|
343
343
|
ticket: convertTransactionArgument(command.Upgrade.ticket, inputs),
|
|
@@ -434,7 +434,7 @@ export function transactionDataFromV1(data: SerializedTransactionDataV1): Transa
|
|
|
434
434
|
|
|
435
435
|
return {
|
|
436
436
|
Pure: {
|
|
437
|
-
bytes:
|
|
437
|
+
bytes: toBase64(new Uint8Array(value.Pure)),
|
|
438
438
|
},
|
|
439
439
|
};
|
|
440
440
|
}
|
|
@@ -491,7 +491,7 @@ export function transactionDataFromV1(data: SerializedTransactionDataV1): Transa
|
|
|
491
491
|
case 'Publish': {
|
|
492
492
|
return {
|
|
493
493
|
Publish: {
|
|
494
|
-
modules: transaction.modules.map((mod) =>
|
|
494
|
+
modules: transaction.modules.map((mod) => toBase64(Uint8Array.from(mod))),
|
|
495
495
|
dependencies: transaction.dependencies,
|
|
496
496
|
},
|
|
497
497
|
};
|
|
@@ -515,7 +515,7 @@ export function transactionDataFromV1(data: SerializedTransactionDataV1): Transa
|
|
|
515
515
|
case 'Upgrade': {
|
|
516
516
|
return {
|
|
517
517
|
Upgrade: {
|
|
518
|
-
modules: transaction.modules.map((mod) =>
|
|
518
|
+
modules: transaction.modules.map((mod) => toBase64(Uint8Array.from(mod))),
|
|
519
519
|
dependencies: transaction.dependencies,
|
|
520
520
|
package: transaction.packageId,
|
|
521
521
|
ticket: parseV1TransactionArgument(transaction.ticket),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { toBase64 } from '@mysten/bcs';
|
|
5
5
|
|
|
6
6
|
import { bcs } from '../../bcs/index.js';
|
|
7
7
|
import type { SuiObjectRef } from '../../bcs/types.js';
|
|
@@ -266,7 +266,7 @@ export class ParallelTransactionExecutor {
|
|
|
266
266
|
|
|
267
267
|
return {
|
|
268
268
|
digest: results.digest,
|
|
269
|
-
effects:
|
|
269
|
+
effects: toBase64(effectsBytes),
|
|
270
270
|
data: results,
|
|
271
271
|
};
|
|
272
272
|
} catch (error) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { toBase64 } from '@mysten/bcs';
|
|
5
5
|
|
|
6
6
|
import { bcs } from '../../bcs/index.js';
|
|
7
7
|
import type { SuiClient, SuiTransactionBlockResponseOptions } from '../../client/index.js';
|
|
@@ -109,7 +109,7 @@ export class SerialTransactionExecutor {
|
|
|
109
109
|
|
|
110
110
|
return {
|
|
111
111
|
digest: results.digest,
|
|
112
|
-
effects:
|
|
112
|
+
effects: toBase64(effectsBytes),
|
|
113
113
|
data: results,
|
|
114
114
|
};
|
|
115
115
|
});
|
|
@@ -27,10 +27,10 @@ export type NamedPackagesPluginOptions = {
|
|
|
27
27
|
* Expected format example:
|
|
28
28
|
* {
|
|
29
29
|
* packages: {
|
|
30
|
-
* '
|
|
30
|
+
* '@framework/std': '0x1234',
|
|
31
31
|
* },
|
|
32
32
|
* types: {
|
|
33
|
-
* '
|
|
33
|
+
* '@framework/std::string::String': '0x1234::string::String',
|
|
34
34
|
* },
|
|
35
35
|
* }
|
|
36
36
|
*
|
|
@@ -42,7 +42,7 @@ export type NamedPackagesPluginOptions = {
|
|
|
42
42
|
* @experimental This plugin is in experimental phase and there might be breaking changes in the future
|
|
43
43
|
*
|
|
44
44
|
* Adds named resolution so that you can use .move names in your transactions.
|
|
45
|
-
* e.g.
|
|
45
|
+
* e.g. `@org/app::type::Type` will be resolved to `0x1234::type::Type`.
|
|
46
46
|
* This plugin will resolve all names & types in the transaction block.
|
|
47
47
|
*
|
|
48
48
|
* To install this plugin globally in your app, use:
|
|
@@ -9,7 +9,7 @@ export type NamedPackagesPluginCache = {
|
|
|
9
9
|
types: Record<string, string>;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
const NAME_SEPARATOR = '
|
|
12
|
+
const NAME_SEPARATOR = '/';
|
|
13
13
|
|
|
14
14
|
export type NameResolutionRequest = {
|
|
15
15
|
id: number;
|
|
@@ -28,6 +28,12 @@ export const findTransactionBlockNames = (
|
|
|
28
28
|
const types: Set<string> = new Set();
|
|
29
29
|
|
|
30
30
|
for (const command of builder.commands) {
|
|
31
|
+
if (command.MakeMoveVec?.type) {
|
|
32
|
+
getNamesFromTypeList([command.MakeMoveVec.type]).forEach((type) => {
|
|
33
|
+
types.add(type);
|
|
34
|
+
});
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
31
37
|
if (!('MoveCall' in command)) continue;
|
|
32
38
|
const tx = command.MoveCall;
|
|
33
39
|
|
|
@@ -39,12 +45,9 @@ export const findTransactionBlockNames = (
|
|
|
39
45
|
packages.add(pkg);
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
types.add(type);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
+
getNamesFromTypeList(tx.typeArguments ?? []).forEach((type) => {
|
|
49
|
+
types.add(type);
|
|
50
|
+
});
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
return {
|
|
@@ -53,12 +56,35 @@ export const findTransactionBlockNames = (
|
|
|
53
56
|
};
|
|
54
57
|
};
|
|
55
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Returns a list of unique types that include a name
|
|
61
|
+
* from the given list.
|
|
62
|
+
* */
|
|
63
|
+
function getNamesFromTypeList(types: string[]) {
|
|
64
|
+
const names = new Set<string>();
|
|
65
|
+
for (const type of types) {
|
|
66
|
+
if (type.includes(NAME_SEPARATOR)) {
|
|
67
|
+
if (!isValidNamedType(type)) throw new Error(`Invalid type with names: ${type}`);
|
|
68
|
+
names.add(type);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return [...names];
|
|
72
|
+
}
|
|
73
|
+
|
|
56
74
|
/**
|
|
57
75
|
* Replace all names & types in a transaction block
|
|
58
76
|
* with their resolved names/types.
|
|
59
77
|
*/
|
|
60
78
|
export const replaceNames = (builder: TransactionDataBuilder, cache: NamedPackagesPluginCache) => {
|
|
61
79
|
for (const command of builder.commands) {
|
|
80
|
+
// Replacements for `MakeMoveVec` commands (that can include types)
|
|
81
|
+
if (command.MakeMoveVec?.type) {
|
|
82
|
+
if (!command.MakeMoveVec.type.includes(NAME_SEPARATOR)) continue;
|
|
83
|
+
if (!cache.types[command.MakeMoveVec.type])
|
|
84
|
+
throw new Error(`No resolution found for type: ${command.MakeMoveVec.type}`);
|
|
85
|
+
command.MakeMoveVec.type = cache.types[command.MakeMoveVec.type];
|
|
86
|
+
}
|
|
87
|
+
// Replacements for `MoveCall` commands (that can include packages & types)
|
|
62
88
|
const tx = command.MoveCall;
|
|
63
89
|
if (!tx) continue;
|
|
64
90
|
|
package/src/utils/index.ts
CHANGED
|
@@ -13,7 +13,18 @@ export {
|
|
|
13
13
|
SUI_ADDRESS_LENGTH,
|
|
14
14
|
} from './sui-types.js';
|
|
15
15
|
|
|
16
|
-
export {
|
|
16
|
+
export {
|
|
17
|
+
fromB64,
|
|
18
|
+
toB64,
|
|
19
|
+
fromHEX,
|
|
20
|
+
toHex,
|
|
21
|
+
toHEX,
|
|
22
|
+
fromHex,
|
|
23
|
+
fromBase64,
|
|
24
|
+
toBase64,
|
|
25
|
+
fromBase58,
|
|
26
|
+
toBase58,
|
|
27
|
+
} from '@mysten/bcs';
|
|
17
28
|
export { isValidSuiNSName, normalizeSuiNSName } from './suins.js';
|
|
18
29
|
|
|
19
30
|
export {
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import { isValidSuiNSName } from './suins.js';
|
|
5
|
+
|
|
4
6
|
/** The pattern to find an optionally versioned name */
|
|
5
|
-
const NAME_PATTERN = /^([a-z0-9]+(?:-[a-z0-9]+)*)
|
|
7
|
+
const NAME_PATTERN = /^([a-z0-9]+(?:-[a-z0-9]+)*)$/;
|
|
8
|
+
/** The pattern for a valid version number */
|
|
9
|
+
const VERSION_REGEX = /^\d+$/;
|
|
10
|
+
/** The maximum size for an app */
|
|
11
|
+
const MAX_APP_SIZE = 64;
|
|
12
|
+
/** The separator for the name */
|
|
13
|
+
const NAME_SEPARATOR = '/';
|
|
6
14
|
|
|
7
15
|
export const isValidNamedPackage = (name: string): boolean => {
|
|
8
|
-
|
|
16
|
+
const parts = name.split(NAME_SEPARATOR);
|
|
17
|
+
// The name has to have 2 parts (without-version), or 3 parts (with version).
|
|
18
|
+
if (parts.length < 2 || parts.length > 3) return false;
|
|
19
|
+
|
|
20
|
+
const [org, app, version] = parts; // split by {org} {app} {optional version}
|
|
21
|
+
|
|
22
|
+
// If the version exists, it must be a number.
|
|
23
|
+
if (version !== undefined && !VERSION_REGEX.test(version)) return false;
|
|
24
|
+
// Check if the org is a valid SuiNS name.
|
|
25
|
+
if (!isValidSuiNSName(org)) return false;
|
|
26
|
+
|
|
27
|
+
// Check if the app is a valid name.
|
|
28
|
+
return NAME_PATTERN.test(app) && app.length < MAX_APP_SIZE;
|
|
9
29
|
};
|
|
10
30
|
|
|
11
31
|
/**
|
|
@@ -16,9 +36,8 @@ export const isValidNamedType = (type: string): boolean => {
|
|
|
16
36
|
// split our type by all possible type delimeters.
|
|
17
37
|
const splitType = type.split(/::|<|>|,/);
|
|
18
38
|
for (const t of splitType) {
|
|
19
|
-
if (t.includes(
|
|
39
|
+
if (t.includes(NAME_SEPARATOR) && !isValidNamedPackage(t)) return false;
|
|
20
40
|
}
|
|
21
|
-
// TODO: Add `isValidStructTag` check once
|
|
22
|
-
// it's generally introduced.
|
|
41
|
+
// TODO: Add `isValidStructTag` check once it's introduced.
|
|
23
42
|
return true;
|
|
24
43
|
};
|
package/src/utils/sui-types.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { fromBase58, splitGenericParameters } from '@mysten/bcs';
|
|
5
5
|
|
|
6
6
|
const TX_DIGEST_LENGTH = 32;
|
|
7
7
|
|
|
8
8
|
/** Returns whether the tx digest is valid based on the serialization format */
|
|
9
9
|
export function isValidTransactionDigest(value: string): value is string {
|
|
10
10
|
try {
|
|
11
|
-
const buffer =
|
|
11
|
+
const buffer = fromBase58(value);
|
|
12
12
|
return buffer.length === TX_DIGEST_LENGTH;
|
|
13
13
|
} catch (e) {
|
|
14
14
|
return false;
|
package/src/verify/verify.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { fromBase64 } from '@mysten/bcs';
|
|
5
5
|
|
|
6
6
|
import type { PublicKey, SignatureFlag, SignatureScheme } from '../cryptography/index.js';
|
|
7
7
|
import { parseSerializedSignature, SIGNATURE_FLAG_TO_SCHEME } from '../cryptography/index.js';
|
|
@@ -107,7 +107,7 @@ export function publicKeyFromSuiBytes(
|
|
|
107
107
|
publicKey: string | Uint8Array,
|
|
108
108
|
options: { client?: SuiGraphQLClient } = {},
|
|
109
109
|
) {
|
|
110
|
-
const bytes = typeof publicKey === 'string' ?
|
|
110
|
+
const bytes = typeof publicKey === 'string' ? fromBase64(publicKey) : publicKey;
|
|
111
111
|
|
|
112
112
|
const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[bytes[0] as SignatureFlag];
|
|
113
113
|
|
package/src/version.ts
CHANGED
package/src/zklogin/publickey.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { fromBase64, toBase64 } from '@mysten/bcs';
|
|
5
5
|
|
|
6
6
|
import { PublicKey } from '../cryptography/publickey.js';
|
|
7
7
|
import type { PublicKeyInitData } from '../cryptography/publickey.js';
|
|
@@ -29,7 +29,7 @@ export class ZkLoginPublicIdentifier extends PublicKey {
|
|
|
29
29
|
this.#client = client;
|
|
30
30
|
|
|
31
31
|
if (typeof value === 'string') {
|
|
32
|
-
this.#data =
|
|
32
|
+
this.#data = fromBase64(value);
|
|
33
33
|
} else if (value instanceof Uint8Array) {
|
|
34
34
|
this.#data = value;
|
|
35
35
|
} else {
|
|
@@ -74,7 +74,7 @@ export class ZkLoginPublicIdentifier extends PublicKey {
|
|
|
74
74
|
|
|
75
75
|
return graphqlVerifyZkLoginSignature({
|
|
76
76
|
address: address,
|
|
77
|
-
bytes:
|
|
77
|
+
bytes: toBase64(message),
|
|
78
78
|
signature: parsedSignature.serializedSignature,
|
|
79
79
|
intentScope: 'PERSONAL_MESSAGE',
|
|
80
80
|
client: this.#client,
|
|
@@ -89,7 +89,7 @@ export class ZkLoginPublicIdentifier extends PublicKey {
|
|
|
89
89
|
const address = new ZkLoginPublicIdentifier(parsedSignature.publicKey).toSuiAddress();
|
|
90
90
|
return graphqlVerifyZkLoginSignature({
|
|
91
91
|
address: address,
|
|
92
|
-
bytes:
|
|
92
|
+
bytes: toBase64(transaction),
|
|
93
93
|
signature: parsedSignature.serializedSignature,
|
|
94
94
|
intentScope: 'TRANSACTION_DATA',
|
|
95
95
|
client: this.#client,
|
|
@@ -164,7 +164,7 @@ async function graphqlVerifyZkLoginSignature({
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
export function parseSerializedZkLoginSignature(signature: Uint8Array | string) {
|
|
167
|
-
const bytes = typeof signature === 'string' ?
|
|
167
|
+
const bytes = typeof signature === 'string' ? fromBase64(signature) : signature;
|
|
168
168
|
|
|
169
169
|
if (bytes[0] !== SIGNATURE_SCHEME_TO_FLAG.ZkLogin) {
|
|
170
170
|
throw new Error('Invalid signature scheme');
|
|
@@ -176,7 +176,7 @@ export function parseSerializedZkLoginSignature(signature: Uint8Array | string)
|
|
|
176
176
|
const iss = extractClaimValue<string>(issBase64Details, 'iss');
|
|
177
177
|
const publicIdentifer = toZkLoginPublicIdentifier(BigInt(addressSeed), iss);
|
|
178
178
|
return {
|
|
179
|
-
serializedSignature:
|
|
179
|
+
serializedSignature: toBase64(bytes),
|
|
180
180
|
signatureScheme: 'ZkLogin' as const,
|
|
181
181
|
zkLogin: {
|
|
182
182
|
inputs,
|
package/src/zklogin/signature.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { fromBase64, toBase64 } from '@mysten/bcs';
|
|
5
5
|
|
|
6
6
|
import { SIGNATURE_SCHEME_TO_FLAG } from '../cryptography/signature-scheme.js';
|
|
7
7
|
import type { ZkLoginSignature } from './bcs.js';
|
|
@@ -17,7 +17,8 @@ function getZkLoginSignatureBytes({ inputs, maxEpoch, userSignature }: ZkLoginSi
|
|
|
17
17
|
{
|
|
18
18
|
inputs,
|
|
19
19
|
maxEpoch,
|
|
20
|
-
userSignature:
|
|
20
|
+
userSignature:
|
|
21
|
+
typeof userSignature === 'string' ? fromBase64(userSignature) : userSignature,
|
|
21
22
|
},
|
|
22
23
|
{ maxSize: 2048 },
|
|
23
24
|
)
|
|
@@ -29,9 +30,9 @@ export function getZkLoginSignature({ inputs, maxEpoch, userSignature }: ZkLogin
|
|
|
29
30
|
const signatureBytes = new Uint8Array(bytes.length + 1);
|
|
30
31
|
signatureBytes.set([SIGNATURE_SCHEME_TO_FLAG.ZkLogin]);
|
|
31
32
|
signatureBytes.set(bytes, 1);
|
|
32
|
-
return
|
|
33
|
+
return toBase64(signatureBytes);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
export function parseZkLoginSignature(signature: string | Uint8Array) {
|
|
36
|
-
return zkLoginSignature.parse(typeof signature === 'string' ?
|
|
37
|
+
return zkLoginSignature.parse(typeof signature === 'string' ? fromBase64(signature) : signature);
|
|
37
38
|
}
|