@mysten/sui 1.16.2 → 1.18.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 +23 -0
- package/dist/cjs/bcs/bcs.d.ts +13 -0
- package/dist/cjs/bcs/bcs.js +6 -0
- package/dist/cjs/bcs/bcs.js.map +2 -2
- package/dist/cjs/bcs/index.d.ts +13 -0
- package/dist/cjs/bcs/index.js +2 -1
- package/dist/cjs/bcs/index.js.map +2 -2
- package/dist/cjs/client/types/generated.d.ts +76 -27
- package/dist/cjs/client/types/generated.js.map +1 -1
- package/dist/cjs/client/types/params.d.ts +5 -1
- package/dist/cjs/client/types/params.js.map +1 -1
- package/dist/cjs/cryptography/publickey.d.ts +4 -0
- package/dist/cjs/cryptography/publickey.js +6 -0
- package/dist/cjs/cryptography/publickey.js.map +2 -2
- package/dist/cjs/cryptography/signature-scheme.d.ts +3 -1
- package/dist/cjs/cryptography/signature-scheme.js +4 -2
- package/dist/cjs/cryptography/signature-scheme.js.map +2 -2
- package/dist/cjs/cryptography/signature.d.ts +8 -0
- package/dist/cjs/cryptography/signature.js +5 -2
- package/dist/cjs/cryptography/signature.js.map +3 -3
- package/dist/cjs/graphql/generated/latest/tada-env.d.js +17 -0
- package/dist/cjs/graphql/generated/latest/tada-env.d.js.map +7 -0
- package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +12 -0
- package/dist/cjs/graphql/generated/latest/tsconfig.tada.js.map +7 -0
- package/dist/cjs/graphql/schemas/latest/index.d.ts +9831 -0
- package/dist/cjs/graphql/schemas/latest/index.js +31 -0
- package/dist/cjs/graphql/schemas/latest/index.js.map +7 -0
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.d.ts +0 -5
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +1 -25
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +3 -3
- package/dist/cjs/keypairs/ed25519/keypair.js +22 -18
- package/dist/cjs/keypairs/ed25519/keypair.js.map +3 -3
- package/dist/cjs/keypairs/ed25519/publickey.js +2 -12
- package/dist/cjs/keypairs/ed25519/publickey.js.map +3 -3
- package/dist/cjs/keypairs/passkey/index.d.ts +3 -0
- package/dist/cjs/keypairs/passkey/index.js +28 -0
- package/dist/cjs/keypairs/passkey/index.js.map +7 -0
- package/dist/cjs/keypairs/passkey/keypair.d.ts +59 -0
- package/dist/cjs/keypairs/passkey/keypair.js +168 -0
- package/dist/cjs/keypairs/passkey/keypair.js.map +7 -0
- package/dist/cjs/keypairs/passkey/publickey.d.ts +72 -0
- package/dist/cjs/keypairs/passkey/publickey.js +168 -0
- package/dist/cjs/keypairs/passkey/publickey.js.map +7 -0
- package/dist/cjs/transactions/ObjectCache.d.ts +2 -1
- package/dist/cjs/transactions/ObjectCache.js +8 -3
- package/dist/cjs/transactions/ObjectCache.js.map +2 -2
- package/dist/cjs/transactions/Transaction.d.ts +5 -1
- package/dist/cjs/transactions/Transaction.js +8 -8
- package/dist/cjs/transactions/Transaction.js.map +2 -2
- package/dist/cjs/transactions/executor/serial.d.ts +2 -2
- package/dist/cjs/transactions/executor/serial.js +3 -5
- package/dist/cjs/transactions/executor/serial.js.map +3 -3
- package/dist/cjs/verify/verify.d.ts +5 -1
- package/dist/cjs/verify/verify.js +22 -10
- package/dist/cjs/verify/verify.js.map +2 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/zklogin/publickey.d.ts +4 -0
- package/dist/cjs/zklogin/publickey.js +22 -10
- package/dist/cjs/zklogin/publickey.js.map +2 -2
- package/dist/esm/bcs/bcs.d.ts +13 -0
- package/dist/esm/bcs/bcs.js +6 -0
- package/dist/esm/bcs/bcs.js.map +2 -2
- package/dist/esm/bcs/index.d.ts +13 -0
- package/dist/esm/bcs/index.js +3 -1
- package/dist/esm/bcs/index.js.map +2 -2
- package/dist/esm/client/types/generated.d.ts +76 -27
- package/dist/esm/client/types/params.d.ts +5 -1
- package/dist/esm/cryptography/publickey.d.ts +4 -0
- package/dist/esm/cryptography/publickey.js +6 -0
- package/dist/esm/cryptography/publickey.js.map +2 -2
- package/dist/esm/cryptography/signature-scheme.d.ts +3 -1
- package/dist/esm/cryptography/signature-scheme.js +4 -2
- package/dist/esm/cryptography/signature-scheme.js.map +2 -2
- package/dist/esm/cryptography/signature.d.ts +8 -0
- package/dist/esm/cryptography/signature.js +3 -0
- package/dist/esm/cryptography/signature.js.map +2 -2
- package/dist/esm/graphql/generated/latest/tada-env.d.js +1 -0
- package/dist/esm/graphql/generated/latest/tada-env.d.js.map +7 -0
- package/dist/esm/graphql/generated/latest/tsconfig.tada.js +17 -0
- package/dist/esm/graphql/generated/latest/tsconfig.tada.js.map +7 -0
- package/dist/esm/graphql/schemas/latest/index.d.ts +9831 -0
- package/dist/esm/graphql/schemas/latest/index.js +10 -0
- package/dist/esm/graphql/schemas/latest/index.js.map +7 -0
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.d.ts +0 -5
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +1 -15
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +2 -2
- package/dist/esm/keypairs/ed25519/keypair.js +22 -8
- 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/passkey/index.d.ts +3 -0
- package/dist/esm/keypairs/passkey/index.js +8 -0
- package/dist/esm/keypairs/passkey/index.js.map +7 -0
- package/dist/esm/keypairs/passkey/keypair.d.ts +59 -0
- package/dist/esm/keypairs/passkey/keypair.js +153 -0
- package/dist/esm/keypairs/passkey/keypair.js.map +7 -0
- package/dist/esm/keypairs/passkey/publickey.d.ts +72 -0
- package/dist/esm/keypairs/passkey/publickey.js +148 -0
- package/dist/esm/keypairs/passkey/publickey.js.map +7 -0
- package/dist/esm/transactions/ObjectCache.d.ts +2 -1
- package/dist/esm/transactions/ObjectCache.js +8 -3
- package/dist/esm/transactions/ObjectCache.js.map +2 -2
- package/dist/esm/transactions/Transaction.d.ts +5 -1
- package/dist/esm/transactions/Transaction.js +8 -8
- package/dist/esm/transactions/Transaction.js.map +2 -2
- package/dist/esm/transactions/executor/serial.d.ts +2 -2
- package/dist/esm/transactions/executor/serial.js +3 -5
- package/dist/esm/transactions/executor/serial.js.map +2 -2
- package/dist/esm/verify/verify.d.ts +5 -1
- package/dist/esm/verify/verify.js +13 -1
- package/dist/esm/verify/verify.js.map +2 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/zklogin/publickey.d.ts +4 -0
- package/dist/esm/zklogin/publickey.js +21 -9
- package/dist/esm/zklogin/publickey.js.map +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/graphql/schemas/latest/package.json +6 -0
- package/keypairs/passkey/package.json +6 -0
- package/package.json +10 -2
- package/src/bcs/bcs.ts +6 -0
- package/src/bcs/index.ts +2 -0
- package/src/client/types/generated.ts +110 -59
- package/src/client/types/params.ts +5 -1
- package/src/cryptography/publickey.ts +7 -0
- package/src/cryptography/signature-scheme.ts +9 -1
- package/src/cryptography/signature.ts +3 -0
- package/src/graphql/generated/latest/schema.graphql +4808 -0
- package/src/graphql/generated/latest/tada-env.d.ts +220 -0
- package/src/graphql/generated/latest/tsconfig.tada.json +11 -0
- package/src/graphql/schemas/latest/index.ts +17 -0
- package/src/keypairs/ed25519/ed25519-hd-key.ts +4 -14
- package/src/keypairs/ed25519/keypair.ts +23 -8
- package/src/keypairs/ed25519/publickey.ts +2 -2
- package/src/keypairs/passkey/index.ts +5 -0
- package/src/keypairs/passkey/keypair.ts +209 -0
- package/src/keypairs/passkey/publickey.ts +188 -0
- package/src/transactions/ObjectCache.ts +5 -1
- package/src/transactions/Transaction.ts +18 -14
- package/src/transactions/executor/serial.ts +3 -5
- package/src/verify/verify.ts +24 -3
- package/src/version.ts +1 -1
- package/src/zklogin/publickey.ts +19 -8
package/src/verify/verify.ts
CHANGED
|
@@ -7,26 +7,37 @@ import type { PublicKey, SignatureFlag, SignatureScheme } from '../cryptography/
|
|
|
7
7
|
import { parseSerializedSignature, SIGNATURE_FLAG_TO_SCHEME } from '../cryptography/index.js';
|
|
8
8
|
import type { SuiGraphQLClient } from '../graphql/client.js';
|
|
9
9
|
import { Ed25519PublicKey } from '../keypairs/ed25519/publickey.js';
|
|
10
|
+
import { PasskeyPublicKey } from '../keypairs/passkey/publickey.js';
|
|
10
11
|
import { Secp256k1PublicKey } from '../keypairs/secp256k1/publickey.js';
|
|
11
12
|
import { Secp256r1PublicKey } from '../keypairs/secp256r1/publickey.js';
|
|
12
13
|
// eslint-disable-next-line import/no-cycle
|
|
13
14
|
import { MultiSigPublicKey } from '../multisig/publickey.js';
|
|
14
15
|
import { ZkLoginPublicIdentifier } from '../zklogin/publickey.js';
|
|
15
16
|
|
|
16
|
-
export async function verifySignature(
|
|
17
|
+
export async function verifySignature(
|
|
18
|
+
bytes: Uint8Array,
|
|
19
|
+
signature: string,
|
|
20
|
+
options?: {
|
|
21
|
+
address?: string;
|
|
22
|
+
},
|
|
23
|
+
): Promise<PublicKey> {
|
|
17
24
|
const parsedSignature = parseSignature(signature);
|
|
18
25
|
|
|
19
26
|
if (!(await parsedSignature.publicKey.verify(bytes, parsedSignature.serializedSignature))) {
|
|
20
27
|
throw new Error(`Signature is not valid for the provided data`);
|
|
21
28
|
}
|
|
22
29
|
|
|
30
|
+
if (options?.address && !parsedSignature.publicKey.verifyAddress(options.address)) {
|
|
31
|
+
throw new Error(`Signature is not valid for the provided address`);
|
|
32
|
+
}
|
|
33
|
+
|
|
23
34
|
return parsedSignature.publicKey;
|
|
24
35
|
}
|
|
25
36
|
|
|
26
37
|
export async function verifyPersonalMessageSignature(
|
|
27
38
|
message: Uint8Array,
|
|
28
39
|
signature: string,
|
|
29
|
-
options: { client?: SuiGraphQLClient } = {},
|
|
40
|
+
options: { client?: SuiGraphQLClient; address?: string } = {},
|
|
30
41
|
): Promise<PublicKey> {
|
|
31
42
|
const parsedSignature = parseSignature(signature, options);
|
|
32
43
|
|
|
@@ -39,13 +50,17 @@ export async function verifyPersonalMessageSignature(
|
|
|
39
50
|
throw new Error(`Signature is not valid for the provided message`);
|
|
40
51
|
}
|
|
41
52
|
|
|
53
|
+
if (options?.address && !parsedSignature.publicKey.verifyAddress(options.address)) {
|
|
54
|
+
throw new Error(`Signature is not valid for the provided address`);
|
|
55
|
+
}
|
|
56
|
+
|
|
42
57
|
return parsedSignature.publicKey;
|
|
43
58
|
}
|
|
44
59
|
|
|
45
60
|
export async function verifyTransactionSignature(
|
|
46
61
|
transaction: Uint8Array,
|
|
47
62
|
signature: string,
|
|
48
|
-
options: { client?: SuiGraphQLClient } = {},
|
|
63
|
+
options: { client?: SuiGraphQLClient; address?: string } = {},
|
|
49
64
|
): Promise<PublicKey> {
|
|
50
65
|
const parsedSignature = parseSignature(signature, options);
|
|
51
66
|
|
|
@@ -58,6 +73,10 @@ export async function verifyTransactionSignature(
|
|
|
58
73
|
throw new Error(`Signature is not valid for the provided Transaction`);
|
|
59
74
|
}
|
|
60
75
|
|
|
76
|
+
if (options?.address && !parsedSignature.publicKey.verifyAddress(options.address)) {
|
|
77
|
+
throw new Error(`Signature is not valid for the provided address`);
|
|
78
|
+
}
|
|
79
|
+
|
|
61
80
|
return parsedSignature.publicKey;
|
|
62
81
|
}
|
|
63
82
|
|
|
@@ -98,6 +117,8 @@ export function publicKeyFromRawBytes(
|
|
|
98
117
|
return new MultiSigPublicKey(bytes);
|
|
99
118
|
case 'ZkLogin':
|
|
100
119
|
return new ZkLoginPublicIdentifier(bytes, options);
|
|
120
|
+
case 'Passkey':
|
|
121
|
+
return new PasskeyPublicKey(bytes);
|
|
101
122
|
default:
|
|
102
123
|
throw new Error(`Unsupported signature scheme ${signatureScheme}`);
|
|
103
124
|
}
|
package/src/version.ts
CHANGED
package/src/zklogin/publickey.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { PublicKey } from '../cryptography/publickey.js';
|
|
|
9
9
|
import type { PublicKeyInitData } from '../cryptography/publickey.js';
|
|
10
10
|
import { SIGNATURE_SCHEME_TO_FLAG } from '../cryptography/signature-scheme.js';
|
|
11
11
|
import { SuiGraphQLClient } from '../graphql/client.js';
|
|
12
|
-
import { graphql } from '../graphql/schemas/
|
|
12
|
+
import { graphql } from '../graphql/schemas/latest/index.js';
|
|
13
13
|
import { normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';
|
|
14
14
|
import { extractClaimValue } from './jwt-utils.js';
|
|
15
15
|
import { parseZkLoginSignature } from './signature.js';
|
|
@@ -55,18 +55,22 @@ export class ZkLoginPublicIdentifier extends PublicKey {
|
|
|
55
55
|
|
|
56
56
|
override toSuiAddress(): string {
|
|
57
57
|
if (this.#legacyAddress) {
|
|
58
|
-
|
|
59
|
-
const addressBytes = new Uint8Array(legacyBytes.length + 1);
|
|
60
|
-
addressBytes[0] = this.flag();
|
|
61
|
-
addressBytes.set(legacyBytes, 1);
|
|
62
|
-
return normalizeSuiAddress(
|
|
63
|
-
bytesToHex(blake2b(addressBytes, { dkLen: 32 })).slice(0, SUI_ADDRESS_LENGTH * 2),
|
|
64
|
-
);
|
|
58
|
+
return this.#toLegacyAddress();
|
|
65
59
|
}
|
|
66
60
|
|
|
67
61
|
return super.toSuiAddress();
|
|
68
62
|
}
|
|
69
63
|
|
|
64
|
+
#toLegacyAddress() {
|
|
65
|
+
const legacyBytes = normalizeZkLoginPublicKeyBytes(this.#data, true);
|
|
66
|
+
const addressBytes = new Uint8Array(legacyBytes.length + 1);
|
|
67
|
+
addressBytes[0] = this.flag();
|
|
68
|
+
addressBytes.set(legacyBytes, 1);
|
|
69
|
+
return normalizeSuiAddress(
|
|
70
|
+
bytesToHex(blake2b(addressBytes, { dkLen: 32 })).slice(0, SUI_ADDRESS_LENGTH * 2),
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
70
74
|
/**
|
|
71
75
|
* Return the byte array representation of the zkLogin public identifier
|
|
72
76
|
*/
|
|
@@ -118,6 +122,13 @@ export class ZkLoginPublicIdentifier extends PublicKey {
|
|
|
118
122
|
client: this.#client,
|
|
119
123
|
});
|
|
120
124
|
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Verifies that the public key is associated with the provided address
|
|
128
|
+
*/
|
|
129
|
+
override verifyAddress(address: string): boolean {
|
|
130
|
+
return address === super.toSuiAddress() || address === this.#toLegacyAddress();
|
|
131
|
+
}
|
|
121
132
|
}
|
|
122
133
|
|
|
123
134
|
// Derive the public identifier for zklogin based on address seed and iss.
|