@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.
Files changed (147) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/bcs/bcs.d.ts +13 -0
  3. package/dist/cjs/bcs/bcs.js +6 -0
  4. package/dist/cjs/bcs/bcs.js.map +2 -2
  5. package/dist/cjs/bcs/index.d.ts +13 -0
  6. package/dist/cjs/bcs/index.js +2 -1
  7. package/dist/cjs/bcs/index.js.map +2 -2
  8. package/dist/cjs/client/types/generated.d.ts +76 -27
  9. package/dist/cjs/client/types/generated.js.map +1 -1
  10. package/dist/cjs/client/types/params.d.ts +5 -1
  11. package/dist/cjs/client/types/params.js.map +1 -1
  12. package/dist/cjs/cryptography/publickey.d.ts +4 -0
  13. package/dist/cjs/cryptography/publickey.js +6 -0
  14. package/dist/cjs/cryptography/publickey.js.map +2 -2
  15. package/dist/cjs/cryptography/signature-scheme.d.ts +3 -1
  16. package/dist/cjs/cryptography/signature-scheme.js +4 -2
  17. package/dist/cjs/cryptography/signature-scheme.js.map +2 -2
  18. package/dist/cjs/cryptography/signature.d.ts +8 -0
  19. package/dist/cjs/cryptography/signature.js +5 -2
  20. package/dist/cjs/cryptography/signature.js.map +3 -3
  21. package/dist/cjs/graphql/generated/latest/tada-env.d.js +17 -0
  22. package/dist/cjs/graphql/generated/latest/tada-env.d.js.map +7 -0
  23. package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +12 -0
  24. package/dist/cjs/graphql/generated/latest/tsconfig.tada.js.map +7 -0
  25. package/dist/cjs/graphql/schemas/latest/index.d.ts +9831 -0
  26. package/dist/cjs/graphql/schemas/latest/index.js +31 -0
  27. package/dist/cjs/graphql/schemas/latest/index.js.map +7 -0
  28. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.d.ts +0 -5
  29. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +1 -25
  30. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +3 -3
  31. package/dist/cjs/keypairs/ed25519/keypair.js +22 -18
  32. package/dist/cjs/keypairs/ed25519/keypair.js.map +3 -3
  33. package/dist/cjs/keypairs/ed25519/publickey.js +2 -12
  34. package/dist/cjs/keypairs/ed25519/publickey.js.map +3 -3
  35. package/dist/cjs/keypairs/passkey/index.d.ts +3 -0
  36. package/dist/cjs/keypairs/passkey/index.js +28 -0
  37. package/dist/cjs/keypairs/passkey/index.js.map +7 -0
  38. package/dist/cjs/keypairs/passkey/keypair.d.ts +59 -0
  39. package/dist/cjs/keypairs/passkey/keypair.js +168 -0
  40. package/dist/cjs/keypairs/passkey/keypair.js.map +7 -0
  41. package/dist/cjs/keypairs/passkey/publickey.d.ts +72 -0
  42. package/dist/cjs/keypairs/passkey/publickey.js +168 -0
  43. package/dist/cjs/keypairs/passkey/publickey.js.map +7 -0
  44. package/dist/cjs/transactions/ObjectCache.d.ts +2 -1
  45. package/dist/cjs/transactions/ObjectCache.js +8 -3
  46. package/dist/cjs/transactions/ObjectCache.js.map +2 -2
  47. package/dist/cjs/transactions/Transaction.d.ts +5 -1
  48. package/dist/cjs/transactions/Transaction.js +8 -8
  49. package/dist/cjs/transactions/Transaction.js.map +2 -2
  50. package/dist/cjs/transactions/executor/serial.d.ts +2 -2
  51. package/dist/cjs/transactions/executor/serial.js +3 -5
  52. package/dist/cjs/transactions/executor/serial.js.map +3 -3
  53. package/dist/cjs/verify/verify.d.ts +5 -1
  54. package/dist/cjs/verify/verify.js +22 -10
  55. package/dist/cjs/verify/verify.js.map +2 -2
  56. package/dist/cjs/version.d.ts +1 -1
  57. package/dist/cjs/version.js +1 -1
  58. package/dist/cjs/version.js.map +1 -1
  59. package/dist/cjs/zklogin/publickey.d.ts +4 -0
  60. package/dist/cjs/zklogin/publickey.js +22 -10
  61. package/dist/cjs/zklogin/publickey.js.map +2 -2
  62. package/dist/esm/bcs/bcs.d.ts +13 -0
  63. package/dist/esm/bcs/bcs.js +6 -0
  64. package/dist/esm/bcs/bcs.js.map +2 -2
  65. package/dist/esm/bcs/index.d.ts +13 -0
  66. package/dist/esm/bcs/index.js +3 -1
  67. package/dist/esm/bcs/index.js.map +2 -2
  68. package/dist/esm/client/types/generated.d.ts +76 -27
  69. package/dist/esm/client/types/params.d.ts +5 -1
  70. package/dist/esm/cryptography/publickey.d.ts +4 -0
  71. package/dist/esm/cryptography/publickey.js +6 -0
  72. package/dist/esm/cryptography/publickey.js.map +2 -2
  73. package/dist/esm/cryptography/signature-scheme.d.ts +3 -1
  74. package/dist/esm/cryptography/signature-scheme.js +4 -2
  75. package/dist/esm/cryptography/signature-scheme.js.map +2 -2
  76. package/dist/esm/cryptography/signature.d.ts +8 -0
  77. package/dist/esm/cryptography/signature.js +3 -0
  78. package/dist/esm/cryptography/signature.js.map +2 -2
  79. package/dist/esm/graphql/generated/latest/tada-env.d.js +1 -0
  80. package/dist/esm/graphql/generated/latest/tada-env.d.js.map +7 -0
  81. package/dist/esm/graphql/generated/latest/tsconfig.tada.js +17 -0
  82. package/dist/esm/graphql/generated/latest/tsconfig.tada.js.map +7 -0
  83. package/dist/esm/graphql/schemas/latest/index.d.ts +9831 -0
  84. package/dist/esm/graphql/schemas/latest/index.js +10 -0
  85. package/dist/esm/graphql/schemas/latest/index.js.map +7 -0
  86. package/dist/esm/keypairs/ed25519/ed25519-hd-key.d.ts +0 -5
  87. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +1 -15
  88. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +2 -2
  89. package/dist/esm/keypairs/ed25519/keypair.js +22 -8
  90. package/dist/esm/keypairs/ed25519/keypair.js.map +2 -2
  91. package/dist/esm/keypairs/ed25519/publickey.js +2 -2
  92. package/dist/esm/keypairs/ed25519/publickey.js.map +2 -2
  93. package/dist/esm/keypairs/passkey/index.d.ts +3 -0
  94. package/dist/esm/keypairs/passkey/index.js +8 -0
  95. package/dist/esm/keypairs/passkey/index.js.map +7 -0
  96. package/dist/esm/keypairs/passkey/keypair.d.ts +59 -0
  97. package/dist/esm/keypairs/passkey/keypair.js +153 -0
  98. package/dist/esm/keypairs/passkey/keypair.js.map +7 -0
  99. package/dist/esm/keypairs/passkey/publickey.d.ts +72 -0
  100. package/dist/esm/keypairs/passkey/publickey.js +148 -0
  101. package/dist/esm/keypairs/passkey/publickey.js.map +7 -0
  102. package/dist/esm/transactions/ObjectCache.d.ts +2 -1
  103. package/dist/esm/transactions/ObjectCache.js +8 -3
  104. package/dist/esm/transactions/ObjectCache.js.map +2 -2
  105. package/dist/esm/transactions/Transaction.d.ts +5 -1
  106. package/dist/esm/transactions/Transaction.js +8 -8
  107. package/dist/esm/transactions/Transaction.js.map +2 -2
  108. package/dist/esm/transactions/executor/serial.d.ts +2 -2
  109. package/dist/esm/transactions/executor/serial.js +3 -5
  110. package/dist/esm/transactions/executor/serial.js.map +2 -2
  111. package/dist/esm/verify/verify.d.ts +5 -1
  112. package/dist/esm/verify/verify.js +13 -1
  113. package/dist/esm/verify/verify.js.map +2 -2
  114. package/dist/esm/version.d.ts +1 -1
  115. package/dist/esm/version.js +1 -1
  116. package/dist/esm/version.js.map +1 -1
  117. package/dist/esm/zklogin/publickey.d.ts +4 -0
  118. package/dist/esm/zklogin/publickey.js +21 -9
  119. package/dist/esm/zklogin/publickey.js.map +2 -2
  120. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  121. package/dist/tsconfig.tsbuildinfo +1 -1
  122. package/graphql/schemas/latest/package.json +6 -0
  123. package/keypairs/passkey/package.json +6 -0
  124. package/package.json +10 -2
  125. package/src/bcs/bcs.ts +6 -0
  126. package/src/bcs/index.ts +2 -0
  127. package/src/client/types/generated.ts +110 -59
  128. package/src/client/types/params.ts +5 -1
  129. package/src/cryptography/publickey.ts +7 -0
  130. package/src/cryptography/signature-scheme.ts +9 -1
  131. package/src/cryptography/signature.ts +3 -0
  132. package/src/graphql/generated/latest/schema.graphql +4808 -0
  133. package/src/graphql/generated/latest/tada-env.d.ts +220 -0
  134. package/src/graphql/generated/latest/tsconfig.tada.json +11 -0
  135. package/src/graphql/schemas/latest/index.ts +17 -0
  136. package/src/keypairs/ed25519/ed25519-hd-key.ts +4 -14
  137. package/src/keypairs/ed25519/keypair.ts +23 -8
  138. package/src/keypairs/ed25519/publickey.ts +2 -2
  139. package/src/keypairs/passkey/index.ts +5 -0
  140. package/src/keypairs/passkey/keypair.ts +209 -0
  141. package/src/keypairs/passkey/publickey.ts +188 -0
  142. package/src/transactions/ObjectCache.ts +5 -1
  143. package/src/transactions/Transaction.ts +18 -14
  144. package/src/transactions/executor/serial.ts +3 -5
  145. package/src/verify/verify.ts +24 -3
  146. package/src/version.ts +1 -1
  147. package/src/zklogin/publickey.ts +19 -8
@@ -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(bytes: Uint8Array, signature: string): Promise<PublicKey> {
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
@@ -3,5 +3,5 @@
3
3
 
4
4
  // This file is generated by genversion.mjs. Do not edit it directly.
5
5
 
6
- export const PACKAGE_VERSION = '1.16.2';
6
+ export const PACKAGE_VERSION = '1.18.0';
7
7
  export const TARGETED_RPC_VERSION = '1.40.0';
@@ -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/2024.4/index.js';
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
- const legacyBytes = normalizeZkLoginPublicKeyBytes(this.#data, true);
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.