@mysten/sui 1.16.2 → 1.17.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 (66) hide show
  1. package/CHANGELOG.md +6 -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/cryptography/signature-scheme.d.ts +3 -1
  9. package/dist/cjs/cryptography/signature-scheme.js +4 -2
  10. package/dist/cjs/cryptography/signature-scheme.js.map +2 -2
  11. package/dist/cjs/cryptography/signature.d.ts +8 -0
  12. package/dist/cjs/cryptography/signature.js +5 -2
  13. package/dist/cjs/cryptography/signature.js.map +3 -3
  14. package/dist/cjs/keypairs/passkey/index.d.ts +3 -0
  15. package/dist/cjs/keypairs/passkey/index.js +28 -0
  16. package/dist/cjs/keypairs/passkey/index.js.map +7 -0
  17. package/dist/cjs/keypairs/passkey/keypair.d.ts +59 -0
  18. package/dist/cjs/keypairs/passkey/keypair.js +168 -0
  19. package/dist/cjs/keypairs/passkey/keypair.js.map +7 -0
  20. package/dist/cjs/keypairs/passkey/publickey.d.ts +72 -0
  21. package/dist/cjs/keypairs/passkey/publickey.js +168 -0
  22. package/dist/cjs/keypairs/passkey/publickey.js.map +7 -0
  23. package/dist/cjs/verify/verify.js +12 -9
  24. package/dist/cjs/verify/verify.js.map +2 -2
  25. package/dist/cjs/version.d.ts +1 -1
  26. package/dist/cjs/version.js +1 -1
  27. package/dist/cjs/version.js.map +1 -1
  28. package/dist/esm/bcs/bcs.d.ts +13 -0
  29. package/dist/esm/bcs/bcs.js +6 -0
  30. package/dist/esm/bcs/bcs.js.map +2 -2
  31. package/dist/esm/bcs/index.d.ts +13 -0
  32. package/dist/esm/bcs/index.js +3 -1
  33. package/dist/esm/bcs/index.js.map +2 -2
  34. package/dist/esm/cryptography/signature-scheme.d.ts +3 -1
  35. package/dist/esm/cryptography/signature-scheme.js +4 -2
  36. package/dist/esm/cryptography/signature-scheme.js.map +2 -2
  37. package/dist/esm/cryptography/signature.d.ts +8 -0
  38. package/dist/esm/cryptography/signature.js +3 -0
  39. package/dist/esm/cryptography/signature.js.map +2 -2
  40. package/dist/esm/keypairs/passkey/index.d.ts +3 -0
  41. package/dist/esm/keypairs/passkey/index.js +8 -0
  42. package/dist/esm/keypairs/passkey/index.js.map +7 -0
  43. package/dist/esm/keypairs/passkey/keypair.d.ts +59 -0
  44. package/dist/esm/keypairs/passkey/keypair.js +153 -0
  45. package/dist/esm/keypairs/passkey/keypair.js.map +7 -0
  46. package/dist/esm/keypairs/passkey/publickey.d.ts +72 -0
  47. package/dist/esm/keypairs/passkey/publickey.js +148 -0
  48. package/dist/esm/keypairs/passkey/publickey.js.map +7 -0
  49. package/dist/esm/verify/verify.js +3 -0
  50. package/dist/esm/verify/verify.js.map +2 -2
  51. package/dist/esm/version.d.ts +1 -1
  52. package/dist/esm/version.js +1 -1
  53. package/dist/esm/version.js.map +1 -1
  54. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  55. package/dist/tsconfig.tsbuildinfo +1 -1
  56. package/keypairs/passkey/package.json +6 -0
  57. package/package.json +6 -1
  58. package/src/bcs/bcs.ts +6 -0
  59. package/src/bcs/index.ts +2 -0
  60. package/src/cryptography/signature-scheme.ts +9 -1
  61. package/src/cryptography/signature.ts +3 -0
  62. package/src/keypairs/passkey/index.ts +5 -0
  63. package/src/keypairs/passkey/keypair.ts +209 -0
  64. package/src/keypairs/passkey/publickey.ts +188 -0
  65. package/src/verify/verify.ts +3 -0
  66. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @mysten/sui.js
2
2
 
3
+ ## 1.17.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 20af12d: add passkey sdk
8
+
3
9
  ## 1.16.2
4
10
 
5
11
  ### Patch Changes
@@ -2281,3 +2281,16 @@ export declare const SenderSignedData: BcsType<{
2281
2281
  }> & {
2282
2282
  length: number;
2283
2283
  }>;
2284
+ export declare const PasskeyAuthenticator: BcsType<{
2285
+ authenticatorData: number[];
2286
+ clientDataJson: string;
2287
+ userSignature: number[];
2288
+ }, {
2289
+ authenticatorData: Iterable<number> & {
2290
+ length: number;
2291
+ };
2292
+ clientDataJson: string;
2293
+ userSignature: Iterable<number> & {
2294
+ length: number;
2295
+ };
2296
+ }>;
@@ -34,6 +34,7 @@ __export(bcs_exports, {
34
34
  MultiSigPublicKey: () => MultiSigPublicKey,
35
35
  ObjectArg: () => ObjectArg,
36
36
  ObjectDigest: () => ObjectDigest,
37
+ PasskeyAuthenticator: () => PasskeyAuthenticator,
37
38
  ProgrammableMoveCall: () => ProgrammableMoveCall,
38
39
  ProgrammableTransaction: () => ProgrammableTransaction,
39
40
  PublicKey: () => PublicKey,
@@ -304,4 +305,9 @@ const SenderSignedTransaction = import_bcs.bcs.struct("SenderSignedTransaction",
304
305
  const SenderSignedData = import_bcs.bcs.vector(SenderSignedTransaction, {
305
306
  name: "SenderSignedData"
306
307
  });
308
+ const PasskeyAuthenticator = import_bcs.bcs.struct("PasskeyAuthenticator", {
309
+ authenticatorData: import_bcs.bcs.vector(import_bcs.bcs.u8()),
310
+ clientDataJson: import_bcs.bcs.string(),
311
+ userSignature: import_bcs.bcs.vector(import_bcs.bcs.u8())
312
+ });
307
313
  //# sourceMappingURL=bcs.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/bcs/bcs.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@mysten/bcs';\nimport { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@mysten/bcs';\n\nimport { isValidSuiAddress, normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\nimport type { TypeTag as TypeTagType } from './types.js';\n\nfunction unsafe_u64(options?: BcsTypeOptions<number>) {\n\treturn bcs\n\t\t.u64({\n\t\t\tname: 'unsafe_u64',\n\t\t\t...(options as object),\n\t\t})\n\t\t.transform({\n\t\t\tinput: (val: number | string) => val,\n\t\t\toutput: (val) => Number(val),\n\t\t});\n}\n\nfunction optionEnum<T extends BcsType<any, any>>(type: T) {\n\treturn bcs.enum('Option', {\n\t\tNone: null,\n\t\tSome: type,\n\t});\n}\n\nexport const Address = bcs.bytes(SUI_ADDRESS_LENGTH).transform({\n\tvalidate: (val) => {\n\t\tconst address = typeof val === 'string' ? val : toHex(val);\n\t\tif (!address || !isValidSuiAddress(normalizeSuiAddress(address))) {\n\t\t\tthrow new Error(`Invalid Sui address ${address}`);\n\t\t}\n\t},\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHex(normalizeSuiAddress(val)) : val,\n\toutput: (val) => normalizeSuiAddress(toHex(val)),\n});\n\nexport const ObjectDigest = bcs.vector(bcs.u8()).transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromBase58(value),\n\toutput: (value) => toBase58(new Uint8Array(value)),\n\tvalidate: (value) => {\n\t\tif (fromBase58(value).length !== 32) {\n\t\t\tthrow new Error('ObjectDigest must be 32 bytes');\n\t\t}\n\t},\n});\n\nexport const SuiObjectRef = bcs.struct('SuiObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nexport const SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nexport const ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwnedObject: SuiObjectRef,\n\tSharedObject: SharedObjectRef,\n\tReceiving: SuiObjectRef,\n});\n\nexport const CallArg = bcs.enum('CallArg', {\n\tPure: bcs.struct('Pure', {\n\t\tbytes: bcs.vector(bcs.u8()).transform({\n\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t}),\n\t}),\n\tObject: ObjectArg,\n});\n\nconst InnerTypeTag: BcsType<TypeTagType, TypeTagType> = bcs.enum('TypeTag', {\n\tbool: null,\n\tu8: null,\n\tu64: null,\n\tu128: null,\n\taddress: null,\n\tsigner: null,\n\tvector: bcs.lazy(() => InnerTypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as BcsType<TypeTagType>;\n\nexport const TypeTag = InnerTypeTag.transform({\n\tinput: (typeTag: string | TypeTagType) =>\n\t\ttypeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n\toutput: (typeTag: TypeTagType) => TypeTagSerializer.tagToString(typeTag),\n});\n\nexport const Argument = bcs.enum('Argument', {\n\tGasCoin: null,\n\tInput: bcs.u16(),\n\tResult: bcs.u16(),\n\tNestedResult: bcs.tuple([bcs.u16(), bcs.u16()]),\n});\n\nexport const ProgrammableMoveCall = bcs.struct('ProgrammableMoveCall', {\n\tpackage: Address,\n\tmodule: bcs.string(),\n\tfunction: bcs.string(),\n\ttypeArguments: bcs.vector(TypeTag),\n\targuments: bcs.vector(Argument),\n});\n\nexport const Command = bcs.enum('Command', {\n\t/**\n\t * A Move Call - any public Move function can be called via\n\t * this transaction. The results can be used that instant to pass\n\t * into the next transaction.\n\t */\n\tMoveCall: ProgrammableMoveCall,\n\t/**\n\t * Transfer vector of objects to a receiver.\n\t */\n\tTransferObjects: bcs.struct('TransferObjects', {\n\t\tobjects: bcs.vector(Argument),\n\t\taddress: Argument,\n\t}),\n\t// /**\n\t// * Split `amount` from a `coin`.\n\t// */\n\tSplitCoins: bcs.struct('SplitCoins', {\n\t\tcoin: Argument,\n\t\tamounts: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Merge Vector of Coins (`sources`) into a `destination`.\n\t// */\n\tMergeCoins: bcs.struct('MergeCoins', {\n\t\tdestination: Argument,\n\t\tsources: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Publish a Move module.\n\t// */\n\tPublish: bcs.struct('Publish', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.vector(bcs.u8()).transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t}),\n\t// /**\n\t// * Build a vector of objects using the input arguments.\n\t// * It is impossible to export construct a `vector<T: key>` otherwise,\n\t// * so this call serves a utility function.\n\t// */\n\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\ttype: optionEnum(TypeTag).transform({\n\t\t\tinput: (val: string | null) =>\n\t\t\t\tval === null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tNone: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tSome: val,\n\t\t\t\t\t\t},\n\t\t\toutput: (val) => val.Some ?? null,\n\t\t}),\n\t\telements: bcs.vector(Argument),\n\t}),\n\tUpgrade: bcs.struct('Upgrade', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.vector(bcs.u8()).transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t\tpackage: Address,\n\t\tticket: Argument,\n\t}),\n});\n\nexport const ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\tcommands: bcs.vector(Command),\n});\n\nexport const TransactionKind = bcs.enum('TransactionKind', {\n\tProgrammableTransaction: ProgrammableTransaction,\n\tChangeEpoch: null,\n\tGenesis: null,\n\tConsensusCommitPrologue: null,\n});\n\nexport const TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n});\n\nexport const StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(InnerTypeTag),\n});\n\nexport const GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(SuiObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nexport const TransactionDataV1 = bcs.struct('TransactionDataV1', {\n\tkind: TransactionKind,\n\tsender: Address,\n\tgasData: GasData,\n\texpiration: TransactionExpiration,\n});\n\nexport const TransactionData = bcs.enum('TransactionData', {\n\tV1: TransactionDataV1,\n});\n\nexport const IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nexport const IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nexport const AppId = bcs.enum('AppId', {\n\tSui: null,\n});\n\nexport const Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nexport function IntentMessage<T extends BcsType<any>>(T: T) {\n\treturn bcs.struct(`IntentMessage<${T.name}>`, {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t});\n}\n\nexport const CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.fixedArray(64, bcs.u8()),\n\tSecp256k1: bcs.fixedArray(64, bcs.u8()),\n\tSecp256r1: bcs.fixedArray(64, bcs.u8()),\n\tZkLogin: bcs.vector(bcs.u8()),\n});\n\nexport const PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.fixedArray(32, bcs.u8()),\n\tSecp256k1: bcs.fixedArray(33, bcs.u8()),\n\tSecp256r1: bcs.fixedArray(33, bcs.u8()),\n\tZkLogin: bcs.vector(bcs.u8()),\n});\n\nexport const MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nexport const MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nexport const MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nexport const base64String = bcs.vector(bcs.u8()).transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\toutput: (val) => toBase64(new Uint8Array(val)),\n});\n\nexport const SenderSignedTransaction = bcs.struct('SenderSignedTransaction', {\n\tintentMessage: IntentMessage(TransactionData),\n\ttxSignatures: bcs.vector(base64String),\n});\n\nexport const SenderSignedData = bcs.vector(SenderSignedTransaction, {\n\tname: 'SenderSignedData',\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@mysten/bcs';\nimport { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@mysten/bcs';\n\nimport { isValidSuiAddress, normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\nimport type { TypeTag as TypeTagType } from './types.js';\n\nfunction unsafe_u64(options?: BcsTypeOptions<number>) {\n\treturn bcs\n\t\t.u64({\n\t\t\tname: 'unsafe_u64',\n\t\t\t...(options as object),\n\t\t})\n\t\t.transform({\n\t\t\tinput: (val: number | string) => val,\n\t\t\toutput: (val) => Number(val),\n\t\t});\n}\n\nfunction optionEnum<T extends BcsType<any, any>>(type: T) {\n\treturn bcs.enum('Option', {\n\t\tNone: null,\n\t\tSome: type,\n\t});\n}\n\nexport const Address = bcs.bytes(SUI_ADDRESS_LENGTH).transform({\n\tvalidate: (val) => {\n\t\tconst address = typeof val === 'string' ? val : toHex(val);\n\t\tif (!address || !isValidSuiAddress(normalizeSuiAddress(address))) {\n\t\t\tthrow new Error(`Invalid Sui address ${address}`);\n\t\t}\n\t},\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHex(normalizeSuiAddress(val)) : val,\n\toutput: (val) => normalizeSuiAddress(toHex(val)),\n});\n\nexport const ObjectDigest = bcs.vector(bcs.u8()).transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromBase58(value),\n\toutput: (value) => toBase58(new Uint8Array(value)),\n\tvalidate: (value) => {\n\t\tif (fromBase58(value).length !== 32) {\n\t\t\tthrow new Error('ObjectDigest must be 32 bytes');\n\t\t}\n\t},\n});\n\nexport const SuiObjectRef = bcs.struct('SuiObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nexport const SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nexport const ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwnedObject: SuiObjectRef,\n\tSharedObject: SharedObjectRef,\n\tReceiving: SuiObjectRef,\n});\n\nexport const CallArg = bcs.enum('CallArg', {\n\tPure: bcs.struct('Pure', {\n\t\tbytes: bcs.vector(bcs.u8()).transform({\n\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t}),\n\t}),\n\tObject: ObjectArg,\n});\n\nconst InnerTypeTag: BcsType<TypeTagType, TypeTagType> = bcs.enum('TypeTag', {\n\tbool: null,\n\tu8: null,\n\tu64: null,\n\tu128: null,\n\taddress: null,\n\tsigner: null,\n\tvector: bcs.lazy(() => InnerTypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as BcsType<TypeTagType>;\n\nexport const TypeTag = InnerTypeTag.transform({\n\tinput: (typeTag: string | TypeTagType) =>\n\t\ttypeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n\toutput: (typeTag: TypeTagType) => TypeTagSerializer.tagToString(typeTag),\n});\n\nexport const Argument = bcs.enum('Argument', {\n\tGasCoin: null,\n\tInput: bcs.u16(),\n\tResult: bcs.u16(),\n\tNestedResult: bcs.tuple([bcs.u16(), bcs.u16()]),\n});\n\nexport const ProgrammableMoveCall = bcs.struct('ProgrammableMoveCall', {\n\tpackage: Address,\n\tmodule: bcs.string(),\n\tfunction: bcs.string(),\n\ttypeArguments: bcs.vector(TypeTag),\n\targuments: bcs.vector(Argument),\n});\n\nexport const Command = bcs.enum('Command', {\n\t/**\n\t * A Move Call - any public Move function can be called via\n\t * this transaction. The results can be used that instant to pass\n\t * into the next transaction.\n\t */\n\tMoveCall: ProgrammableMoveCall,\n\t/**\n\t * Transfer vector of objects to a receiver.\n\t */\n\tTransferObjects: bcs.struct('TransferObjects', {\n\t\tobjects: bcs.vector(Argument),\n\t\taddress: Argument,\n\t}),\n\t// /**\n\t// * Split `amount` from a `coin`.\n\t// */\n\tSplitCoins: bcs.struct('SplitCoins', {\n\t\tcoin: Argument,\n\t\tamounts: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Merge Vector of Coins (`sources`) into a `destination`.\n\t// */\n\tMergeCoins: bcs.struct('MergeCoins', {\n\t\tdestination: Argument,\n\t\tsources: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Publish a Move module.\n\t// */\n\tPublish: bcs.struct('Publish', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.vector(bcs.u8()).transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t}),\n\t// /**\n\t// * Build a vector of objects using the input arguments.\n\t// * It is impossible to export construct a `vector<T: key>` otherwise,\n\t// * so this call serves a utility function.\n\t// */\n\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\ttype: optionEnum(TypeTag).transform({\n\t\t\tinput: (val: string | null) =>\n\t\t\t\tval === null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tNone: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tSome: val,\n\t\t\t\t\t\t},\n\t\t\toutput: (val) => val.Some ?? null,\n\t\t}),\n\t\telements: bcs.vector(Argument),\n\t}),\n\tUpgrade: bcs.struct('Upgrade', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.vector(bcs.u8()).transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t\tpackage: Address,\n\t\tticket: Argument,\n\t}),\n});\n\nexport const ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\tcommands: bcs.vector(Command),\n});\n\nexport const TransactionKind = bcs.enum('TransactionKind', {\n\tProgrammableTransaction: ProgrammableTransaction,\n\tChangeEpoch: null,\n\tGenesis: null,\n\tConsensusCommitPrologue: null,\n});\n\nexport const TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n});\n\nexport const StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(InnerTypeTag),\n});\n\nexport const GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(SuiObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nexport const TransactionDataV1 = bcs.struct('TransactionDataV1', {\n\tkind: TransactionKind,\n\tsender: Address,\n\tgasData: GasData,\n\texpiration: TransactionExpiration,\n});\n\nexport const TransactionData = bcs.enum('TransactionData', {\n\tV1: TransactionDataV1,\n});\n\nexport const IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nexport const IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nexport const AppId = bcs.enum('AppId', {\n\tSui: null,\n});\n\nexport const Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nexport function IntentMessage<T extends BcsType<any>>(T: T) {\n\treturn bcs.struct(`IntentMessage<${T.name}>`, {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t});\n}\n\nexport const CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.fixedArray(64, bcs.u8()),\n\tSecp256k1: bcs.fixedArray(64, bcs.u8()),\n\tSecp256r1: bcs.fixedArray(64, bcs.u8()),\n\tZkLogin: bcs.vector(bcs.u8()),\n});\n\nexport const PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.fixedArray(32, bcs.u8()),\n\tSecp256k1: bcs.fixedArray(33, bcs.u8()),\n\tSecp256r1: bcs.fixedArray(33, bcs.u8()),\n\tZkLogin: bcs.vector(bcs.u8()),\n});\n\nexport const MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nexport const MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nexport const MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nexport const base64String = bcs.vector(bcs.u8()).transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\toutput: (val) => toBase64(new Uint8Array(val)),\n});\n\nexport const SenderSignedTransaction = bcs.struct('SenderSignedTransaction', {\n\tintentMessage: IntentMessage(TransactionData),\n\ttxSignatures: bcs.vector(base64String),\n});\n\nexport const SenderSignedData = bcs.vector(SenderSignedTransaction, {\n\tname: 'SenderSignedData',\n});\n\nexport const PasskeyAuthenticator = bcs.struct('PasskeyAuthenticator', {\n\tauthenticatorData: bcs.vector(bcs.u8()),\n\tclientDataJson: bcs.string(),\n\tuserSignature: bcs.vector(bcs.u8()),\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -3103,6 +3103,19 @@ declare const suiBcs: {
3103
3103
  auxDataDigest: string | null | undefined;
3104
3104
  };
3105
3105
  }>>;
3106
+ PasskeyAuthenticator: import("@mysten/bcs").BcsType<{
3107
+ authenticatorData: number[];
3108
+ clientDataJson: string;
3109
+ userSignature: number[];
3110
+ }, {
3111
+ authenticatorData: Iterable<number> & {
3112
+ length: number;
3113
+ };
3114
+ clientDataJson: string;
3115
+ userSignature: Iterable<number> & {
3116
+ length: number;
3117
+ };
3118
+ }>;
3106
3119
  u8(options?: import("@mysten/bcs").BcsTypeOptions<number>): import("@mysten/bcs").BcsType<number, number>;
3107
3120
  u16(options?: import("@mysten/bcs").BcsTypeOptions<number>): import("@mysten/bcs").BcsType<number, number>;
3108
3121
  u32(options?: import("@mysten/bcs").BcsTypeOptions<number>): import("@mysten/bcs").BcsType<number, number>;
@@ -68,6 +68,7 @@ const suiBcs = {
68
68
  TransactionExpiration: import_bcs2.TransactionExpiration,
69
69
  TransactionKind: import_bcs2.TransactionKind,
70
70
  TypeTag: import_bcs2.TypeTag,
71
- TransactionEffects: import_effects.TransactionEffects
71
+ TransactionEffects: import_effects.TransactionEffects,
72
+ PasskeyAuthenticator: import_bcs2.PasskeyAuthenticator
72
73
  };
73
74
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/bcs/index.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@mysten/bcs';\n\nimport {\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCommand,\n\tCompressedSignature,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tSuiObjectRef,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeTag,\n} from './bcs.js';\nimport { TransactionEffects } from './effects.js';\n\nexport type { TypeTag } from './types.js';\n\nexport { TypeTagSerializer } from './type-tag-serializer.js';\nexport { BcsType, type BcsTypeOptions } from '@mysten/bcs';\n\nconst suiBcs = {\n\t...bcs,\n\tU8: bcs.u8(),\n\tU16: bcs.u16(),\n\tU32: bcs.u32(),\n\tU64: bcs.u64(),\n\tU128: bcs.u128(),\n\tU256: bcs.u256(),\n\tULEB128: bcs.uleb128(),\n\tBool: bcs.bool(),\n\tString: bcs.string(),\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCompressedSignature,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tSuiObjectRef,\n\tCommand,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeTag,\n\tTransactionEffects,\n};\n\nexport { suiBcs as bcs };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAoB;AAEpB,IAAAA,cA8BO;AACP,qBAAmC;AAInC,iCAAkC;AAClC,IAAAA,cAA6C;AAE7C,MAAM,SAAS;AAAA,EACd,GAAG;AAAA,EACH,IAAI,eAAI,GAAG;AAAA,EACX,KAAK,eAAI,IAAI;AAAA,EACb,KAAK,eAAI,IAAI;AAAA,EACb,KAAK,eAAI,IAAI;AAAA,EACb,MAAM,eAAI,KAAK;AAAA,EACf,MAAM,eAAI,KAAK;AAAA,EACf,SAAS,eAAI,QAAQ;AAAA,EACrB,MAAM,eAAI,KAAK;AAAA,EACf,QAAQ,eAAI,OAAO;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@mysten/bcs';\n\nimport {\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCommand,\n\tCompressedSignature,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tPasskeyAuthenticator,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tSuiObjectRef,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeTag,\n} from './bcs.js';\nimport { TransactionEffects } from './effects.js';\n\nexport type { TypeTag } from './types.js';\n\nexport { TypeTagSerializer } from './type-tag-serializer.js';\nexport { BcsType, type BcsTypeOptions } from '@mysten/bcs';\n\nconst suiBcs = {\n\t...bcs,\n\tU8: bcs.u8(),\n\tU16: bcs.u16(),\n\tU32: bcs.u32(),\n\tU64: bcs.u64(),\n\tU128: bcs.u128(),\n\tU256: bcs.u256(),\n\tULEB128: bcs.uleb128(),\n\tBool: bcs.bool(),\n\tString: bcs.string(),\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCompressedSignature,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tSuiObjectRef,\n\tCommand,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeTag,\n\tTransactionEffects,\n\tPasskeyAuthenticator,\n};\n\nexport { suiBcs as bcs };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAoB;AAEpB,IAAAA,cA+BO;AACP,qBAAmC;AAInC,iCAAkC;AAClC,IAAAA,cAA6C;AAE7C,MAAM,SAAS;AAAA,EACd,GAAG;AAAA,EACH,IAAI,eAAI,GAAG;AAAA,EACX,KAAK,eAAI,IAAI;AAAA,EACb,KAAK,eAAI,IAAI;AAAA,EACb,KAAK,eAAI,IAAI;AAAA,EACb,MAAM,eAAI,KAAK;AAAA,EACf,MAAM,eAAI,KAAK;AAAA,EACf,SAAS,eAAI,QAAQ;AAAA,EACrB,MAAM,eAAI,KAAK;AAAA,EACf,QAAQ,eAAI,OAAO;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;",
6
6
  "names": ["import_bcs"]
7
7
  }
@@ -4,6 +4,7 @@ export declare const SIGNATURE_SCHEME_TO_FLAG: {
4
4
  readonly Secp256r1: 2;
5
5
  readonly MultiSig: 3;
6
6
  readonly ZkLogin: 5;
7
+ readonly Passkey: 6;
7
8
  };
8
9
  export declare const SIGNATURE_SCHEME_TO_SIZE: {
9
10
  ED25519: number;
@@ -16,6 +17,7 @@ export declare const SIGNATURE_FLAG_TO_SCHEME: {
16
17
  readonly 2: "Secp256r1";
17
18
  readonly 3: "MultiSig";
18
19
  readonly 5: "ZkLogin";
20
+ readonly 6: "Passkey";
19
21
  };
20
- export type SignatureScheme = 'ED25519' | 'Secp256k1' | 'Secp256r1' | 'MultiSig' | 'ZkLogin';
22
+ export type SignatureScheme = 'ED25519' | 'Secp256k1' | 'Secp256r1' | 'MultiSig' | 'ZkLogin' | 'Passkey';
21
23
  export type SignatureFlag = keyof typeof SIGNATURE_FLAG_TO_SCHEME;
@@ -28,7 +28,8 @@ const SIGNATURE_SCHEME_TO_FLAG = {
28
28
  Secp256k1: 1,
29
29
  Secp256r1: 2,
30
30
  MultiSig: 3,
31
- ZkLogin: 5
31
+ ZkLogin: 5,
32
+ Passkey: 6
32
33
  };
33
34
  const SIGNATURE_SCHEME_TO_SIZE = {
34
35
  ED25519: 32,
@@ -40,6 +41,7 @@ const SIGNATURE_FLAG_TO_SCHEME = {
40
41
  1: "Secp256k1",
41
42
  2: "Secp256r1",
42
43
  3: "MultiSig",
43
- 5: "ZkLogin"
44
+ 5: "ZkLogin",
45
+ 6: "Passkey"
44
46
  };
45
47
  //# sourceMappingURL=signature-scheme.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cryptography/signature-scheme.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const SIGNATURE_SCHEME_TO_FLAG = {\n\tED25519: 0x00,\n\tSecp256k1: 0x01,\n\tSecp256r1: 0x02,\n\tMultiSig: 0x03,\n\tZkLogin: 0x05,\n} as const;\n\nexport const SIGNATURE_SCHEME_TO_SIZE = {\n\tED25519: 32,\n\tSecp256k1: 33,\n\tSecp256r1: 33,\n};\n\nexport const SIGNATURE_FLAG_TO_SCHEME = {\n\t0x00: 'ED25519',\n\t0x01: 'Secp256k1',\n\t0x02: 'Secp256r1',\n\t0x03: 'MultiSig',\n\t0x05: 'ZkLogin',\n} as const;\n\nexport type SignatureScheme = 'ED25519' | 'Secp256k1' | 'Secp256r1' | 'MultiSig' | 'ZkLogin';\n\nexport type SignatureFlag = keyof typeof SIGNATURE_FLAG_TO_SCHEME;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,2BAA2B;AAAA,EACvC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AACV;AAEO,MAAM,2BAA2B;AAAA,EACvC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AACZ;AAEO,MAAM,2BAA2B;AAAA,EACvC,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AACP;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const SIGNATURE_SCHEME_TO_FLAG = {\n\tED25519: 0x00,\n\tSecp256k1: 0x01,\n\tSecp256r1: 0x02,\n\tMultiSig: 0x03,\n\tZkLogin: 0x05,\n\tPasskey: 0x06,\n} as const;\n\nexport const SIGNATURE_SCHEME_TO_SIZE = {\n\tED25519: 32,\n\tSecp256k1: 33,\n\tSecp256r1: 33,\n};\n\nexport const SIGNATURE_FLAG_TO_SCHEME = {\n\t0x00: 'ED25519',\n\t0x01: 'Secp256k1',\n\t0x02: 'Secp256r1',\n\t0x03: 'MultiSig',\n\t0x05: 'ZkLogin',\n\t0x06: 'Passkey',\n} as const;\n\nexport type SignatureScheme =\n\t| 'ED25519'\n\t| 'Secp256k1'\n\t| 'Secp256r1'\n\t| 'MultiSig'\n\t| 'ZkLogin'\n\t| 'Passkey';\n\nexport type SignatureFlag = keyof typeof SIGNATURE_FLAG_TO_SCHEME;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,2BAA2B;AAAA,EACvC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACV;AAEO,MAAM,2BAA2B;AAAA,EACvC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AACZ;AAEO,MAAM,2BAA2B;AAAA,EACvC,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AAAA,EACN,GAAM;AACP;",
6
6
  "names": []
7
7
  }
@@ -19,6 +19,14 @@ export declare function toSerializedSignature({ signature, signatureScheme, publ
19
19
  * Decodes a serialized signature into its constituent components: the signature scheme, the actual signature, and the public key
20
20
  */
21
21
  export declare function parseSerializedSignature(serializedSignature: string): {
22
+ signatureScheme: "Passkey";
23
+ serializedSignature: string;
24
+ signature: Uint8Array;
25
+ authenticatorData: number[];
26
+ clientDataJson: string;
27
+ userSignature: Uint8Array;
28
+ publicKey: Uint8Array;
29
+ } | {
22
30
  serializedSignature: string;
23
31
  signatureScheme: "ZkLogin";
24
32
  zkLogin: {
@@ -24,7 +24,8 @@ __export(signature_exports, {
24
24
  module.exports = __toCommonJS(signature_exports);
25
25
  var import_bcs = require("@mysten/bcs");
26
26
  var import_bcs2 = require("../bcs/index.js");
27
- var import_publickey = require("../zklogin/publickey.js");
27
+ var import_publickey = require("../keypairs/passkey/publickey.js");
28
+ var import_publickey2 = require("../zklogin/publickey.js");
28
29
  var import_signature_scheme = require("./signature-scheme.js");
29
30
  function toSerializedSignature({
30
31
  signature,
@@ -45,6 +46,8 @@ function parseSerializedSignature(serializedSignature) {
45
46
  const bytes = (0, import_bcs.fromBase64)(serializedSignature);
46
47
  const signatureScheme = import_signature_scheme.SIGNATURE_FLAG_TO_SCHEME[bytes[0]];
47
48
  switch (signatureScheme) {
49
+ case "Passkey":
50
+ return (0, import_publickey.parseSerializedPasskeySignature)(serializedSignature);
48
51
  case "MultiSig":
49
52
  const multisig = import_bcs2.bcs.MultiSig.parse(bytes.slice(1));
50
53
  return {
@@ -54,7 +57,7 @@ function parseSerializedSignature(serializedSignature) {
54
57
  bytes
55
58
  };
56
59
  case "ZkLogin":
57
- return (0, import_publickey.parseSerializedZkLoginSignature)(serializedSignature);
60
+ return (0, import_publickey2.parseSerializedZkLoginSignature)(serializedSignature);
58
61
  case "ED25519":
59
62
  case "Secp256k1":
60
63
  case "Secp256r1":
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cryptography/signature.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@mysten/bcs';\n\nimport { bcs } from '../bcs/index.js';\nimport type { MultiSigStruct } from '../multisig/publickey.js';\nimport { parseSerializedZkLoginSignature } from '../zklogin/publickey.js';\nimport type { PublicKey } from './publickey.js';\nimport type { SignatureScheme } from './signature-scheme.js';\nimport {\n\tSIGNATURE_FLAG_TO_SCHEME,\n\tSIGNATURE_SCHEME_TO_FLAG,\n\tSIGNATURE_SCHEME_TO_SIZE,\n} from './signature-scheme.js';\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SerializeSignatureInput = {\n\tsignatureScheme: SignatureScheme;\n\t/** Base64-encoded signature */\n\tsignature: Uint8Array;\n\t/** Base64-encoded public key */\n\tpublicKey?: PublicKey;\n};\n\n/**\n * Takes in a signature, its associated signing scheme and a public key, then serializes this data\n */\nexport function toSerializedSignature({\n\tsignature,\n\tsignatureScheme,\n\tpublicKey,\n}: SerializeSignatureInput): string {\n\tif (!publicKey) {\n\t\tthrow new Error('`publicKey` is required');\n\t}\n\n\tconst pubKeyBytes = publicKey.toRawBytes();\n\tconst serializedSignature = new Uint8Array(1 + signature.length + pubKeyBytes.length);\n\tserializedSignature.set([SIGNATURE_SCHEME_TO_FLAG[signatureScheme]]);\n\tserializedSignature.set(signature, 1);\n\tserializedSignature.set(pubKeyBytes, 1 + signature.length);\n\treturn toBase64(serializedSignature);\n}\n\n/**\n * Decodes a serialized signature into its constituent components: the signature scheme, the actual signature, and the public key\n */\nexport function parseSerializedSignature(serializedSignature: string) {\n\tconst bytes = fromBase64(serializedSignature);\n\n\tconst signatureScheme =\n\t\tSIGNATURE_FLAG_TO_SCHEME[bytes[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME];\n\n\tswitch (signatureScheme) {\n\t\tcase 'MultiSig':\n\t\t\tconst multisig: MultiSigStruct = bcs.MultiSig.parse(bytes.slice(1));\n\t\t\treturn {\n\t\t\t\tserializedSignature,\n\t\t\t\tsignatureScheme,\n\t\t\t\tmultisig,\n\t\t\t\tbytes,\n\t\t\t};\n\t\tcase 'ZkLogin':\n\t\t\treturn parseSerializedZkLoginSignature(serializedSignature);\n\t\tcase 'ED25519':\n\t\tcase 'Secp256k1':\n\t\tcase 'Secp256r1':\n\t\t\tconst size =\n\t\t\t\tSIGNATURE_SCHEME_TO_SIZE[signatureScheme as keyof typeof SIGNATURE_SCHEME_TO_SIZE];\n\t\t\tconst signature = bytes.slice(1, bytes.length - size);\n\t\t\tconst publicKey = bytes.slice(1 + signature.length);\n\n\t\t\treturn {\n\t\t\t\tserializedSignature,\n\t\t\t\tsignatureScheme,\n\t\t\t\tsignature,\n\t\t\t\tpublicKey,\n\t\t\t\tbytes,\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error('Unsupported signature scheme');\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAqC;AAErC,IAAAA,cAAoB;AAEpB,uBAAgD;AAGhD,8BAIO;AAgBA,SAAS,sBAAsB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACD,GAAoC;AACnC,MAAI,CAAC,WAAW;AACf,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC1C;AAEA,QAAM,cAAc,UAAU,WAAW;AACzC,QAAM,sBAAsB,IAAI,WAAW,IAAI,UAAU,SAAS,YAAY,MAAM;AACpF,sBAAoB,IAAI,CAAC,iDAAyB,eAAe,CAAC,CAAC;AACnE,sBAAoB,IAAI,WAAW,CAAC;AACpC,sBAAoB,IAAI,aAAa,IAAI,UAAU,MAAM;AACzD,aAAO,qBAAS,mBAAmB;AACpC;AAKO,SAAS,yBAAyB,qBAA6B;AACrE,QAAM,YAAQ,uBAAW,mBAAmB;AAE5C,QAAM,kBACL,iDAAyB,MAAM,CAAC,CAA0C;AAE3E,UAAQ,iBAAiB;AAAA,IACxB,KAAK;AACJ,YAAM,WAA2B,gBAAI,SAAS,MAAM,MAAM,MAAM,CAAC,CAAC;AAClE,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD,KAAK;AACJ,iBAAO,kDAAgC,mBAAmB;AAAA,IAC3D,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,YAAM,OACL,iDAAyB,eAAwD;AAClF,YAAM,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,IAAI;AACpD,YAAM,YAAY,MAAM,MAAM,IAAI,UAAU,MAAM;AAElD,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AACC,YAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACD;",
6
- "names": ["import_bcs"]
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@mysten/bcs';\n\nimport { bcs } from '../bcs/index.js';\nimport { parseSerializedPasskeySignature } from '../keypairs/passkey/publickey.js';\nimport type { MultiSigStruct } from '../multisig/publickey.js';\nimport { parseSerializedZkLoginSignature } from '../zklogin/publickey.js';\nimport type { PublicKey } from './publickey.js';\nimport type { SignatureScheme } from './signature-scheme.js';\nimport {\n\tSIGNATURE_FLAG_TO_SCHEME,\n\tSIGNATURE_SCHEME_TO_FLAG,\n\tSIGNATURE_SCHEME_TO_SIZE,\n} from './signature-scheme.js';\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SerializeSignatureInput = {\n\tsignatureScheme: SignatureScheme;\n\t/** Base64-encoded signature */\n\tsignature: Uint8Array;\n\t/** Base64-encoded public key */\n\tpublicKey?: PublicKey;\n};\n\n/**\n * Takes in a signature, its associated signing scheme and a public key, then serializes this data\n */\nexport function toSerializedSignature({\n\tsignature,\n\tsignatureScheme,\n\tpublicKey,\n}: SerializeSignatureInput): string {\n\tif (!publicKey) {\n\t\tthrow new Error('`publicKey` is required');\n\t}\n\n\tconst pubKeyBytes = publicKey.toRawBytes();\n\tconst serializedSignature = new Uint8Array(1 + signature.length + pubKeyBytes.length);\n\tserializedSignature.set([SIGNATURE_SCHEME_TO_FLAG[signatureScheme]]);\n\tserializedSignature.set(signature, 1);\n\tserializedSignature.set(pubKeyBytes, 1 + signature.length);\n\treturn toBase64(serializedSignature);\n}\n\n/**\n * Decodes a serialized signature into its constituent components: the signature scheme, the actual signature, and the public key\n */\nexport function parseSerializedSignature(serializedSignature: string) {\n\tconst bytes = fromBase64(serializedSignature);\n\n\tconst signatureScheme =\n\t\tSIGNATURE_FLAG_TO_SCHEME[bytes[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME];\n\n\tswitch (signatureScheme) {\n\t\tcase 'Passkey':\n\t\t\treturn parseSerializedPasskeySignature(serializedSignature);\n\t\tcase 'MultiSig':\n\t\t\tconst multisig: MultiSigStruct = bcs.MultiSig.parse(bytes.slice(1));\n\t\t\treturn {\n\t\t\t\tserializedSignature,\n\t\t\t\tsignatureScheme,\n\t\t\t\tmultisig,\n\t\t\t\tbytes,\n\t\t\t};\n\t\tcase 'ZkLogin':\n\t\t\treturn parseSerializedZkLoginSignature(serializedSignature);\n\t\tcase 'ED25519':\n\t\tcase 'Secp256k1':\n\t\tcase 'Secp256r1':\n\t\t\tconst size =\n\t\t\t\tSIGNATURE_SCHEME_TO_SIZE[signatureScheme as keyof typeof SIGNATURE_SCHEME_TO_SIZE];\n\t\t\tconst signature = bytes.slice(1, bytes.length - size);\n\t\t\tconst publicKey = bytes.slice(1 + signature.length);\n\n\t\t\treturn {\n\t\t\t\tserializedSignature,\n\t\t\t\tsignatureScheme,\n\t\t\t\tsignature,\n\t\t\t\tpublicKey,\n\t\t\t\tbytes,\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error('Unsupported signature scheme');\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAqC;AAErC,IAAAA,cAAoB;AACpB,uBAAgD;AAEhD,IAAAC,oBAAgD;AAGhD,8BAIO;AAgBA,SAAS,sBAAsB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACD,GAAoC;AACnC,MAAI,CAAC,WAAW;AACf,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC1C;AAEA,QAAM,cAAc,UAAU,WAAW;AACzC,QAAM,sBAAsB,IAAI,WAAW,IAAI,UAAU,SAAS,YAAY,MAAM;AACpF,sBAAoB,IAAI,CAAC,iDAAyB,eAAe,CAAC,CAAC;AACnE,sBAAoB,IAAI,WAAW,CAAC;AACpC,sBAAoB,IAAI,aAAa,IAAI,UAAU,MAAM;AACzD,aAAO,qBAAS,mBAAmB;AACpC;AAKO,SAAS,yBAAyB,qBAA6B;AACrE,QAAM,YAAQ,uBAAW,mBAAmB;AAE5C,QAAM,kBACL,iDAAyB,MAAM,CAAC,CAA0C;AAE3E,UAAQ,iBAAiB;AAAA,IACxB,KAAK;AACJ,iBAAO,kDAAgC,mBAAmB;AAAA,IAC3D,KAAK;AACJ,YAAM,WAA2B,gBAAI,SAAS,MAAM,MAAM,MAAM,CAAC,CAAC;AAClE,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD,KAAK;AACJ,iBAAO,mDAAgC,mBAAmB;AAAA,IAC3D,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,YAAM,OACL,iDAAyB,eAAwD;AAClF,YAAM,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,IAAI;AACpD,YAAM,YAAY,MAAM,MAAM,IAAI,UAAU,MAAM;AAElD,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AACC,YAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACD;",
6
+ "names": ["import_bcs", "import_publickey"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ export { PasskeyKeypair, BrowserPasskeyProvider } from './keypair.js';
2
+ export type { PasskeyProvider, BrowserPasswordProviderOptions } from './keypair.js';
3
+ export { PasskeyPublicKey } from './publickey.js';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var passkey_exports = {};
20
+ __export(passkey_exports, {
21
+ BrowserPasskeyProvider: () => import_keypair.BrowserPasskeyProvider,
22
+ PasskeyKeypair: () => import_keypair.PasskeyKeypair,
23
+ PasskeyPublicKey: () => import_publickey.PasskeyPublicKey
24
+ });
25
+ module.exports = __toCommonJS(passkey_exports);
26
+ var import_keypair = require("./keypair.js");
27
+ var import_publickey = require("./publickey.js");
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/keypairs/passkey/index.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nexport { PasskeyKeypair, BrowserPasskeyProvider } from './keypair.js';\nexport type { PasskeyProvider, BrowserPasswordProviderOptions } from './keypair.js';\nexport { PasskeyPublicKey } from './publickey.js';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAuD;AAEvD,uBAAiC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,59 @@
1
+ import type { AuthenticationCredential, RegistrationCredential } from '@simplewebauthn/typescript-types';
2
+ import type { IntentScope, SignatureWithBytes } from '../../cryptography/index.js';
3
+ import { Signer } from '../../cryptography/index.js';
4
+ import type { PublicKey } from '../../cryptography/publickey.js';
5
+ import type { SignatureScheme } from '../../cryptography/signature-scheme.js';
6
+ type DeepPartialConfigKeys = 'rp' | 'user' | 'authenticatorSelection';
7
+ type DeepPartial<T> = T extends object ? {
8
+ [P in keyof T]?: DeepPartial<T[P]>;
9
+ } : T;
10
+ export type BrowserPasswordProviderOptions = Pick<DeepPartial<PublicKeyCredentialCreationOptions>, DeepPartialConfigKeys> & Omit<Partial<PublicKeyCredentialCreationOptions>, DeepPartialConfigKeys | 'pubKeyCredParams' | 'challenge'>;
11
+ export interface PasskeyProvider {
12
+ create(): Promise<RegistrationCredential>;
13
+ get(challenge: Uint8Array): Promise<AuthenticationCredential>;
14
+ }
15
+ export declare class BrowserPasskeyProvider implements PasskeyProvider {
16
+ #private;
17
+ constructor(name: string, options: BrowserPasswordProviderOptions);
18
+ create(): Promise<RegistrationCredential>;
19
+ get(challenge: Uint8Array): Promise<AuthenticationCredential>;
20
+ }
21
+ /**
22
+ * @experimental
23
+ * A passkey signer used for signing transactions. This is a client side implementation for [SIP-9](https://github.com/sui-foundation/sips/blob/main/sips/sip-9.md).
24
+ */
25
+ export declare class PasskeyKeypair extends Signer {
26
+ private publicKey;
27
+ private provider;
28
+ /**
29
+ * Get the key scheme of passkey,
30
+ */
31
+ getKeyScheme(): SignatureScheme;
32
+ /**
33
+ * Creates an instance of Passkey signer. It's expected to call the static `getPasskeyInstance` method to create an instance.
34
+ * For example:
35
+ * ```
36
+ * const signer = await PasskeyKeypair.getPasskeyInstance();
37
+ * ```
38
+ */
39
+ constructor(publicKey: Uint8Array, provider: PasskeyProvider);
40
+ /**
41
+ * Creates an instance of Passkey signer invoking the passkey from navigator.
42
+ */
43
+ static getPasskeyInstance(provider: PasskeyProvider): Promise<PasskeyKeypair>;
44
+ /**
45
+ * Return the public key for this passkey.
46
+ */
47
+ getPublicKey(): PublicKey;
48
+ /**
49
+ * Return the signature for the provided data (i.e. blake2b(intent_message)).
50
+ * This is sent to passkey as the challenge field.
51
+ */
52
+ sign(data: Uint8Array): Promise<Uint8Array>;
53
+ /**
54
+ * This overrides the base class implementation that accepts the raw bytes and signs its
55
+ * digest of the intent message, then serialize it with the passkey flag.
56
+ */
57
+ signWithIntent(bytes: Uint8Array, intent: IntentScope): Promise<SignatureWithBytes>;
58
+ }
59
+ export {};
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
24
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
25
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
26
+ var keypair_exports = {};
27
+ __export(keypair_exports, {
28
+ BrowserPasskeyProvider: () => BrowserPasskeyProvider,
29
+ PasskeyKeypair: () => PasskeyKeypair
30
+ });
31
+ module.exports = __toCommonJS(keypair_exports);
32
+ var import_bcs = require("@mysten/bcs");
33
+ var import_p256 = require("@noble/curves/p256");
34
+ var import_blake2b = require("@noble/hashes/blake2b");
35
+ var import_utils = require("@noble/hashes/utils");
36
+ var import_bcs2 = require("../../bcs/bcs.js");
37
+ var import_cryptography = require("../../cryptography/index.js");
38
+ var import_publickey = require("./publickey.js");
39
+ var _name, _options;
40
+ class BrowserPasskeyProvider {
41
+ constructor(name, options) {
42
+ __privateAdd(this, _name);
43
+ __privateAdd(this, _options);
44
+ __privateSet(this, _name, name);
45
+ __privateSet(this, _options, options);
46
+ }
47
+ async create() {
48
+ return await navigator.credentials.create({
49
+ publicKey: {
50
+ timeout: __privateGet(this, _options).timeout ?? 6e4,
51
+ ...__privateGet(this, _options),
52
+ rp: {
53
+ name: __privateGet(this, _name),
54
+ ...__privateGet(this, _options).rp
55
+ },
56
+ user: {
57
+ name: __privateGet(this, _name),
58
+ displayName: __privateGet(this, _name),
59
+ ...__privateGet(this, _options).user,
60
+ id: (0, import_utils.randomBytes)(10)
61
+ },
62
+ challenge: new TextEncoder().encode("Create passkey wallet on Sui"),
63
+ pubKeyCredParams: [{ alg: -7, type: "public-key" }],
64
+ authenticatorSelection: {
65
+ authenticatorAttachment: "cross-platform",
66
+ residentKey: "required",
67
+ requireResidentKey: true,
68
+ userVerification: "required",
69
+ ...__privateGet(this, _options).authenticatorSelection
70
+ }
71
+ }
72
+ });
73
+ }
74
+ async get(challenge) {
75
+ return await navigator.credentials.get({
76
+ publicKey: {
77
+ challenge,
78
+ userVerification: __privateGet(this, _options).authenticatorSelection?.userVerification || "required",
79
+ timeout: __privateGet(this, _options).timeout ?? 6e4
80
+ }
81
+ });
82
+ }
83
+ }
84
+ _name = new WeakMap();
85
+ _options = new WeakMap();
86
+ class PasskeyKeypair extends import_cryptography.Signer {
87
+ /**
88
+ * Get the key scheme of passkey,
89
+ */
90
+ getKeyScheme() {
91
+ return "Passkey";
92
+ }
93
+ /**
94
+ * Creates an instance of Passkey signer. It's expected to call the static `getPasskeyInstance` method to create an instance.
95
+ * For example:
96
+ * ```
97
+ * const signer = await PasskeyKeypair.getPasskeyInstance();
98
+ * ```
99
+ */
100
+ constructor(publicKey, provider) {
101
+ super();
102
+ this.publicKey = publicKey;
103
+ this.provider = provider;
104
+ }
105
+ /**
106
+ * Creates an instance of Passkey signer invoking the passkey from navigator.
107
+ */
108
+ static async getPasskeyInstance(provider) {
109
+ const credential = await provider.create();
110
+ if (!credential.response.getPublicKey()) {
111
+ throw new Error("Invalid credential create response");
112
+ } else {
113
+ const derSPKI = credential.response.getPublicKey();
114
+ const pubkeyUncompressed = (0, import_publickey.parseDerSPKI)(new Uint8Array(derSPKI));
115
+ const pubkey = import_p256.secp256r1.ProjectivePoint.fromHex(pubkeyUncompressed);
116
+ const pubkeyCompressed = pubkey.toRawBytes(true);
117
+ return new PasskeyKeypair(pubkeyCompressed, provider);
118
+ }
119
+ }
120
+ /**
121
+ * Return the public key for this passkey.
122
+ */
123
+ getPublicKey() {
124
+ return new import_publickey.PasskeyPublicKey(this.publicKey);
125
+ }
126
+ /**
127
+ * Return the signature for the provided data (i.e. blake2b(intent_message)).
128
+ * This is sent to passkey as the challenge field.
129
+ */
130
+ async sign(data) {
131
+ const credential = await this.provider.get(data);
132
+ const authenticatorData = new Uint8Array(credential.response.authenticatorData);
133
+ const clientDataJSON = new Uint8Array(credential.response.clientDataJSON);
134
+ const decoder = new TextDecoder();
135
+ const clientDataJSONString = decoder.decode(clientDataJSON);
136
+ const sig = import_p256.secp256r1.Signature.fromDER(new Uint8Array(credential.response.signature));
137
+ const normalized = sig.normalizeS().toCompactRawBytes();
138
+ if (normalized.length !== import_publickey.PASSKEY_SIGNATURE_SIZE || this.publicKey.length !== import_publickey.PASSKEY_PUBLIC_KEY_SIZE) {
139
+ throw new Error("Invalid signature or public key length");
140
+ }
141
+ const arr = new Uint8Array(1 + normalized.length + this.publicKey.length);
142
+ arr.set([import_cryptography.SIGNATURE_SCHEME_TO_FLAG["Secp256r1"]]);
143
+ arr.set(normalized, 1);
144
+ arr.set(this.publicKey, 1 + normalized.length);
145
+ return import_bcs2.PasskeyAuthenticator.serialize({
146
+ authenticatorData,
147
+ clientDataJson: clientDataJSONString,
148
+ userSignature: arr
149
+ }).toBytes();
150
+ }
151
+ /**
152
+ * This overrides the base class implementation that accepts the raw bytes and signs its
153
+ * digest of the intent message, then serialize it with the passkey flag.
154
+ */
155
+ async signWithIntent(bytes, intent) {
156
+ const intentMessage = (0, import_cryptography.messageWithIntent)(intent, bytes);
157
+ const digest = (0, import_blake2b.blake2b)(intentMessage, { dkLen: 32 });
158
+ const signature = await this.sign(digest);
159
+ const serializedSignature = new Uint8Array(1 + signature.length);
160
+ serializedSignature.set([import_cryptography.SIGNATURE_SCHEME_TO_FLAG[this.getKeyScheme()]]);
161
+ serializedSignature.set(signature, 1);
162
+ return {
163
+ signature: (0, import_bcs.toBase64)(serializedSignature),
164
+ bytes: (0, import_bcs.toBase64)(bytes)
165
+ };
166
+ }
167
+ }
168
+ //# sourceMappingURL=keypair.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/keypairs/passkey/keypair.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@mysten/bcs';\nimport { secp256r1 } from '@noble/curves/p256';\nimport { blake2b } from '@noble/hashes/blake2b';\nimport { randomBytes } from '@noble/hashes/utils';\nimport type {\n\tAuthenticationCredential,\n\tRegistrationCredential,\n} from '@simplewebauthn/typescript-types';\n\nimport { PasskeyAuthenticator } from '../../bcs/bcs.js';\nimport type { IntentScope, SignatureWithBytes } from '../../cryptography/index.js';\nimport { messageWithIntent, SIGNATURE_SCHEME_TO_FLAG, Signer } from '../../cryptography/index.js';\nimport type { PublicKey } from '../../cryptography/publickey.js';\nimport type { SignatureScheme } from '../../cryptography/signature-scheme.js';\nimport {\n\tparseDerSPKI,\n\tPASSKEY_PUBLIC_KEY_SIZE,\n\tPASSKEY_SIGNATURE_SIZE,\n\tPasskeyPublicKey,\n} from './publickey.js';\n\ntype DeepPartialConfigKeys = 'rp' | 'user' | 'authenticatorSelection';\n\ntype DeepPartial<T> = T extends object\n\t? {\n\t\t\t[P in keyof T]?: DeepPartial<T[P]>;\n\t\t}\n\t: T;\n\nexport type BrowserPasswordProviderOptions = Pick<\n\tDeepPartial<PublicKeyCredentialCreationOptions>,\n\tDeepPartialConfigKeys\n> &\n\tOmit<\n\t\tPartial<PublicKeyCredentialCreationOptions>,\n\t\tDeepPartialConfigKeys | 'pubKeyCredParams' | 'challenge'\n\t>;\n\nexport interface PasskeyProvider {\n\tcreate(): Promise<RegistrationCredential>;\n\tget(challenge: Uint8Array): Promise<AuthenticationCredential>;\n}\n\n// Default browser implementation\nexport class BrowserPasskeyProvider implements PasskeyProvider {\n\t#name: string;\n\t#options: BrowserPasswordProviderOptions;\n\n\tconstructor(name: string, options: BrowserPasswordProviderOptions) {\n\t\tthis.#name = name;\n\t\tthis.#options = options;\n\t}\n\n\tasync create(): Promise<RegistrationCredential> {\n\t\treturn (await navigator.credentials.create({\n\t\t\tpublicKey: {\n\t\t\t\ttimeout: this.#options.timeout ?? 60000,\n\t\t\t\t...this.#options,\n\t\t\t\trp: {\n\t\t\t\t\tname: this.#name,\n\t\t\t\t\t...this.#options.rp,\n\t\t\t\t},\n\t\t\t\tuser: {\n\t\t\t\t\tname: this.#name,\n\t\t\t\t\tdisplayName: this.#name,\n\t\t\t\t\t...this.#options.user,\n\t\t\t\t\tid: randomBytes(10),\n\t\t\t\t},\n\t\t\t\tchallenge: new TextEncoder().encode('Create passkey wallet on Sui'),\n\t\t\t\tpubKeyCredParams: [{ alg: -7, type: 'public-key' }],\n\t\t\t\tauthenticatorSelection: {\n\t\t\t\t\tauthenticatorAttachment: 'cross-platform',\n\t\t\t\t\tresidentKey: 'required',\n\t\t\t\t\trequireResidentKey: true,\n\t\t\t\t\tuserVerification: 'required',\n\t\t\t\t\t...this.#options.authenticatorSelection,\n\t\t\t\t},\n\t\t\t},\n\t\t})) as RegistrationCredential;\n\t}\n\n\tasync get(challenge: Uint8Array): Promise<AuthenticationCredential> {\n\t\treturn (await navigator.credentials.get({\n\t\t\tpublicKey: {\n\t\t\t\tchallenge,\n\t\t\t\tuserVerification: this.#options.authenticatorSelection?.userVerification || 'required',\n\t\t\t\ttimeout: this.#options.timeout ?? 60000,\n\t\t\t},\n\t\t})) as AuthenticationCredential;\n\t}\n}\n\n/**\n * @experimental\n * A passkey signer used for signing transactions. This is a client side implementation for [SIP-9](https://github.com/sui-foundation/sips/blob/main/sips/sip-9.md).\n */\nexport class PasskeyKeypair extends Signer {\n\tprivate publicKey: Uint8Array;\n\tprivate provider: PasskeyProvider;\n\n\t/**\n\t * Get the key scheme of passkey,\n\t */\n\tgetKeyScheme(): SignatureScheme {\n\t\treturn 'Passkey';\n\t}\n\n\t/**\n\t * Creates an instance of Passkey signer. It's expected to call the static `getPasskeyInstance` method to create an instance.\n\t * For example:\n\t * ```\n\t * const signer = await PasskeyKeypair.getPasskeyInstance();\n\t * ```\n\t */\n\tconstructor(publicKey: Uint8Array, provider: PasskeyProvider) {\n\t\tsuper();\n\t\tthis.publicKey = publicKey;\n\t\tthis.provider = provider;\n\t}\n\n\t/**\n\t * Creates an instance of Passkey signer invoking the passkey from navigator.\n\t */\n\tstatic async getPasskeyInstance(provider: PasskeyProvider): Promise<PasskeyKeypair> {\n\t\t// create a passkey secp256r1 with the provider.\n\t\tconst credential = await provider.create();\n\n\t\tif (!credential.response.getPublicKey()) {\n\t\t\tthrow new Error('Invalid credential create response');\n\t\t} else {\n\t\t\tconst derSPKI = credential.response.getPublicKey()!;\n\t\t\tconst pubkeyUncompressed = parseDerSPKI(new Uint8Array(derSPKI));\n\t\t\tconst pubkey = secp256r1.ProjectivePoint.fromHex(pubkeyUncompressed);\n\t\t\tconst pubkeyCompressed = pubkey.toRawBytes(true);\n\t\t\treturn new PasskeyKeypair(pubkeyCompressed, provider);\n\t\t}\n\t}\n\n\t/**\n\t * Return the public key for this passkey.\n\t */\n\tgetPublicKey(): PublicKey {\n\t\treturn new PasskeyPublicKey(this.publicKey);\n\t}\n\n\t/**\n\t * Return the signature for the provided data (i.e. blake2b(intent_message)).\n\t * This is sent to passkey as the challenge field.\n\t */\n\tasync sign(data: Uint8Array) {\n\t\t// sendss the passkey to sign over challenge as the data.\n\t\tconst credential = await this.provider.get(data);\n\n\t\t// parse authenticatorData (as bytes), clientDataJSON (decoded as string).\n\t\tconst authenticatorData = new Uint8Array(credential.response.authenticatorData);\n\t\tconst clientDataJSON = new Uint8Array(credential.response.clientDataJSON); // response.clientDataJSON is already UTF-8 encoded JSON\n\t\tconst decoder = new TextDecoder();\n\t\tconst clientDataJSONString: string = decoder.decode(clientDataJSON);\n\n\t\t// parse the signature from DER format, normalize and convert to compressed format (33 bytes).\n\t\tconst sig = secp256r1.Signature.fromDER(new Uint8Array(credential.response.signature));\n\t\tconst normalized = sig.normalizeS().toCompactRawBytes();\n\n\t\tif (\n\t\t\tnormalized.length !== PASSKEY_SIGNATURE_SIZE ||\n\t\t\tthis.publicKey.length !== PASSKEY_PUBLIC_KEY_SIZE\n\t\t) {\n\t\t\tthrow new Error('Invalid signature or public key length');\n\t\t}\n\n\t\t// construct userSignature as flag || sig || pubkey for the secp256r1 signature.\n\t\tconst arr = new Uint8Array(1 + normalized.length + this.publicKey.length);\n\t\tarr.set([SIGNATURE_SCHEME_TO_FLAG['Secp256r1']]);\n\t\tarr.set(normalized, 1);\n\t\tarr.set(this.publicKey, 1 + normalized.length);\n\n\t\t// serialize all fields into a passkey signature according to https://github.com/sui-foundation/sips/blob/main/sips/sip-9.md#signature-encoding\n\t\treturn PasskeyAuthenticator.serialize({\n\t\t\tauthenticatorData: authenticatorData,\n\t\t\tclientDataJson: clientDataJSONString,\n\t\t\tuserSignature: arr,\n\t\t}).toBytes();\n\t}\n\n\t/**\n\t * This overrides the base class implementation that accepts the raw bytes and signs its\n\t * digest of the intent message, then serialize it with the passkey flag.\n\t */\n\tasync signWithIntent(bytes: Uint8Array, intent: IntentScope): Promise<SignatureWithBytes> {\n\t\t// prepend it into an intent message and computes the digest.\n\t\tconst intentMessage = messageWithIntent(intent, bytes);\n\t\tconst digest = blake2b(intentMessage, { dkLen: 32 });\n\n\t\t// sign the digest.\n\t\tconst signature = await this.sign(digest);\n\n\t\t// prepend with the passkey flag.\n\t\tconst serializedSignature = new Uint8Array(1 + signature.length);\n\t\tserializedSignature.set([SIGNATURE_SCHEME_TO_FLAG[this.getKeyScheme()]]);\n\t\tserializedSignature.set(signature, 1);\n\t\treturn {\n\t\t\tsignature: toBase64(serializedSignature),\n\t\t\tbytes: toBase64(bytes),\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_bcs"]
7
+ }