permissionless 0.2.38 → 0.2.40

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 (37) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/actions/passkeyServer/startAuthentication.js +19 -0
  3. package/_cjs/actions/passkeyServer/startAuthentication.js.map +1 -0
  4. package/_cjs/actions/passkeyServer/verifyAuthentication.js +78 -0
  5. package/_cjs/actions/passkeyServer/verifyAuthentication.js.map +1 -0
  6. package/_cjs/actions/passkeyServer/verifyRegistration.js +2 -0
  7. package/_cjs/actions/passkeyServer/verifyRegistration.js.map +1 -1
  8. package/_cjs/actions/public/getSenderAddress.js +2 -2
  9. package/_cjs/actions/public/getSenderAddress.js.map +1 -1
  10. package/_cjs/clients/decorators/passkeyServer.js +5 -1
  11. package/_cjs/clients/decorators/passkeyServer.js.map +1 -1
  12. package/_esm/actions/passkeyServer/startAuthentication.js +15 -0
  13. package/_esm/actions/passkeyServer/startAuthentication.js.map +1 -0
  14. package/_esm/actions/passkeyServer/verifyAuthentication.js +74 -0
  15. package/_esm/actions/passkeyServer/verifyAuthentication.js.map +1 -0
  16. package/_esm/actions/passkeyServer/verifyRegistration.js +2 -0
  17. package/_esm/actions/passkeyServer/verifyRegistration.js.map +1 -1
  18. package/_esm/actions/public/getSenderAddress.js +4 -4
  19. package/_esm/actions/public/getSenderAddress.js.map +1 -1
  20. package/_esm/clients/decorators/passkeyServer.js +5 -1
  21. package/_esm/clients/decorators/passkeyServer.js.map +1 -1
  22. package/_types/actions/passkeyServer/startAuthentication.d.ts +8 -0
  23. package/_types/actions/passkeyServer/startAuthentication.d.ts.map +1 -0
  24. package/_types/actions/passkeyServer/verifyAuthentication.d.ts +13 -0
  25. package/_types/actions/passkeyServer/verifyAuthentication.d.ts.map +1 -0
  26. package/_types/actions/passkeyServer/verifyRegistration.d.ts.map +1 -1
  27. package/_types/clients/decorators/passkeyServer.d.ts +4 -0
  28. package/_types/clients/decorators/passkeyServer.d.ts.map +1 -1
  29. package/_types/types/passkeyServer.d.ts +41 -0
  30. package/_types/types/passkeyServer.d.ts.map +1 -1
  31. package/actions/passkeyServer/startAuthentication.ts +35 -0
  32. package/actions/passkeyServer/verifyAuthentication.ts +121 -0
  33. package/actions/passkeyServer/verifyRegistration.ts +48 -38
  34. package/actions/public/getSenderAddress.ts +5 -5
  35. package/clients/decorators/passkeyServer.ts +16 -1
  36. package/package.json +1 -1
  37. package/types/passkeyServer.ts +41 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # permissionless
2
2
 
3
+ ## 0.2.40
4
+
5
+ ### Patch Changes
6
+
7
+ - 9448c6fc5275f4be21916cb9f91dc067452baa6b: Added passkeys authentication flow
8
+
9
+ ## 0.2.39
10
+
11
+ ### Patch Changes
12
+
13
+ - f0070a5e6be409f1f8a250d3bfc36324bc33f9c3: Updated GetSenderAddressHelper.sol to return abi encoded address (fixes edgecase when sender starts with 0xef...)
14
+
3
15
  ## 0.2.38
4
16
 
5
17
  ### Patch Changes
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startAuthentication = void 0;
4
+ const ox_1 = require("ox");
5
+ const viem_1 = require("viem");
6
+ const startAuthentication = async (client) => {
7
+ const response = await client.request({
8
+ method: "pks_startAuthentication",
9
+ params: []
10
+ });
11
+ return {
12
+ challenge: (0, viem_1.toHex)(ox_1.Base64.toBytes(response.challenge)),
13
+ rpId: response.rpId,
14
+ userVerification: response.userVerification,
15
+ uuid: response.uuid
16
+ };
17
+ };
18
+ exports.startAuthentication = startAuthentication;
19
+ //# sourceMappingURL=startAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startAuthentication.js","sourceRoot":"","sources":["../../../actions/passkeyServer/startAuthentication.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAE3B,+BAMa;AAON,MAAM,mBAAmB,GAAG,KAAK,EACpC,MAKC,EACqC,EAAE;IACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,EAAE;KACb,CAAC,CAAA;IAEF,OAAO;QACH,SAAS,EAAE,IAAA,YAAK,EAAC,WAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,IAAI,EAAE,QAAQ,CAAC,IAAI;KACtB,CAAA;AACL,CAAC,CAAA;AAnBY,QAAA,mBAAmB,uBAmB/B"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyAuthentication = void 0;
4
+ const ox_1 = require("ox");
5
+ const verifyAuthentication = async (client, args) => {
6
+ const { raw, uuid } = args;
7
+ let responseAuthenticatorData;
8
+ if ("authenticatorData" in raw.response) {
9
+ responseAuthenticatorData = ox_1.Base64.fromBytes(new Uint8Array(raw.response.authenticatorData), {
10
+ url: true
11
+ });
12
+ }
13
+ else {
14
+ throw new Error("authenticatorData not found in the signature");
15
+ }
16
+ let signature;
17
+ if ("signature" in raw.response) {
18
+ signature = ox_1.Base64.fromBytes(new Uint8Array(raw.response.signature), {
19
+ pad: false,
20
+ url: true
21
+ });
22
+ }
23
+ else {
24
+ throw new Error("signature not found in the signature");
25
+ }
26
+ let userHandle;
27
+ if ("userHandle" in raw.response) {
28
+ userHandle = ox_1.Base64.fromBytes(new Uint8Array(raw.response.userHandle), {
29
+ pad: false,
30
+ url: true
31
+ });
32
+ }
33
+ const serverResponse = await client.request({
34
+ method: "pks_verifyAuthentication",
35
+ params: [
36
+ {
37
+ id: raw.id,
38
+ rawId: ox_1.Base64.fromBytes(new Uint8Array(raw.rawId), {
39
+ pad: false,
40
+ url: true
41
+ }),
42
+ authenticatorAttachment: raw.authenticatorAttachment,
43
+ response: {
44
+ clientDataJSON: ox_1.Base64.fromBytes(new Uint8Array(raw.response.clientDataJSON), {
45
+ pad: false,
46
+ url: true
47
+ }),
48
+ authenticatorData: responseAuthenticatorData,
49
+ signature,
50
+ userHandle
51
+ },
52
+ clientExtensionResults: raw.getClientExtensionResults(),
53
+ type: raw.type
54
+ },
55
+ {
56
+ uuid
57
+ }
58
+ ]
59
+ }, {
60
+ retryCount: 0
61
+ });
62
+ const success = Boolean(serverResponse?.success);
63
+ const id = serverResponse?.id;
64
+ const publicKey = serverResponse?.publicKey;
65
+ if (typeof id !== "string") {
66
+ throw new Error("Invalid passkey id returned from server");
67
+ }
68
+ if (typeof publicKey !== "string" || !publicKey.startsWith("0x")) {
69
+ throw new Error("Invalid public key returned from server - must be hex string starting with 0x");
70
+ }
71
+ return {
72
+ success,
73
+ id,
74
+ publicKey: publicKey
75
+ };
76
+ };
77
+ exports.verifyAuthentication = verifyAuthentication;
78
+ //# sourceMappingURL=verifyAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyAuthentication.js","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyAuthentication.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,8 @@ const verifyRegistration = async (client, args) => {
51
51
  },
52
52
  context
53
53
  ]
54
+ }, {
55
+ retryCount: 0
54
56
  });
55
57
  const success = Boolean(serverResponse?.success);
56
58
  const id = serverResponse?.id;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyRegistration.js","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyRegistration.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAgBpB,MAAM,kBAAkB,GAAG,KAAK,EACnC,MAKC,EACD,IAAkC,EACG,EAAE;IACvC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAEpC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG;SAC1B,QAAuD,CAAA;IAE5D,IAAI,0BAA0B,GAAuB,SAAS,CAAA;IAC9D,IAAI,OAAO,QAAQ,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC;YACD,0BAA0B,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC/D,CAAC;IACL,CAAC;IAED,IAAI,yBAA6C,CAAA;IACjD,IAAI,OAAO,QAAQ,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC;YACD,yBAAyB,GAAG,WAAM,CAAC,SAAS,CACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAClD,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC9D,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACxC,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE;YACJ;gBACI,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,KAAK,EAAE,WAAM,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1D,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,IAAI;iBACZ,CAAC;gBACF,QAAQ,EAAE;oBACN,cAAc,EAAE,WAAM,CAAC,SAAS,CAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC1C;oBACD,iBAAiB,EAAE,WAAM,CAAC,SAAS,CAC/B,IAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAC1C;wBACI,GAAG,EAAE,IAAI;qBACZ,CACJ;oBACD,UAAU,EACN,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU;wBACxC,CAAC,CAAE,QAAQ,CAAC,aAAa,EAQnB;wBACN,CAAC,CAAC,SAAS;oBACnB,kBAAkB,EAAE,0BAA0B;oBAC9C,iBAAiB,EAAE,yBAAyB;iBAC/C;gBACD,uBAAuB,EAAE,UAAU,CAAC,GAAG;qBAClC,uBAAwD;gBAC7D,sBAAsB,EAClB,UAAU,CAAC,GAAG,CAAC,yBAAyB,EAAE;gBAC9C,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAoB;aAC5C;YACD,OAAO;SACV;KACJ,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAA;IAC7B,MAAM,SAAS,GAAG,cAAc,EAAE,SAAS,CAAA;IAE3C,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACX,+EAA+E,CAClF,CAAA;IACL,CAAC;IAED,OAAO;QACH,OAAO;QACP,EAAE;QACF,SAAS,EAAE,SAAgB;KAC9B,CAAA;AACL,CAAC,CAAA;AAjGY,QAAA,kBAAkB,sBAiG9B"}
1
+ {"version":3,"file":"verifyRegistration.js","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyRegistration.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ exports.getSenderAddress = exports.InvalidEntryPointError = void 0;
4
4
  const viem_1 = require("viem");
5
5
  const actions_1 = require("viem/actions");
6
6
  const utils_1 = require("viem/utils");
7
- const GetSenderAddressHelperByteCode = "0x6080604052604051610302380380610302833981016040819052610022916101de565b600080836001600160a01b0316639b249f6960e01b8460405160240161004891906102b2565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161008691906102e5565b6000604051808303816000865af19150503d80600081146100c3576040519150601f19603f3d011682016040523d82523d6000602084013e6100c8565b606091505b5091509150600082610148576004825111156100ef5760248201519050806000526014600cf35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b60648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b606482015260840161013f565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101d55781810151838201526020016101bd565b50506000910152565b600080604083850312156101f157600080fd5b82516001600160a01b038116811461020857600080fd5b60208401519092506001600160401b0381111561022457600080fd5b8301601f8101851361023557600080fd5b80516001600160401b0381111561024e5761024e6101a4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561027c5761027c6101a4565b60405281815282820160200187101561029457600080fd5b6102a58260208301602086016101ba565b8093505050509250929050565b60208152600082518060208401526102d18160408501602087016101ba565b601f01601f19169190910160400192915050565b600082516102f78184602087016101ba565b919091019291505056fe";
7
+ const GetSenderAddressHelperByteCode = "0x60806040526102a28038038091610015826100ae565b6080396040816080019112610093576080516001600160a01b03811681036100935760a0516001600160401b0381116100935782609f82011215610093578060800151610061816100fc565b9361006f60405195866100d9565b81855260a082840101116100935761008e9160a0602086019101610117565b610196565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100d457604052565b610098565b601f909101601f19168101906001600160401b038211908210176100d457604052565b6001600160401b0381116100d457601f01601f191660200190565b60005b83811061012a5750506000910152565b818101518382015260200161011a565b6040916020825261015a8151809281602086015260208686019101610117565b601f01601f1916010190565b3d15610191573d90610177826100fc565b9161018560405193846100d9565b82523d6000602084013e565b606090565b600091908291826040516101cd816101bf6020820195639b249f6960e01b87526024830161013a565b03601f1981018352826100d9565b51925af16101d9610166565b906102485760048151116000146101f7576024015160005260206000f35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b6064820152608490fdfe";
8
8
  const GetSenderAddressHelperAbi = [
9
9
  {
10
10
  inputs: [
@@ -53,7 +53,7 @@ const getSenderAddress = async (client, args) => {
53
53
  if (!data) {
54
54
  throw new Error("Failed to get sender address");
55
55
  }
56
- return (0, viem_1.getAddress)(data);
56
+ return (0, viem_1.decodeAbiParameters)([{ type: "address" }], data)[0];
57
57
  };
58
58
  exports.getSenderAddress = getSenderAddress;
59
59
  //# sourceMappingURL=getSenderAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSenderAddress.js","sourceRoot":"","sources":["../../../actions/public/getSenderAddress.ts"],"names":[],"mappings":";;;AAAA,+BAUa;AAEb,0CAAmC;AACnC,sCAAsC;AAGtC,MAAM,8BAA8B,GAChC,wgDAAwgD,CAAA;AAE5gD,MAAM,yBAAyB,GAAG;IAC9B;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,aAAa;KACtB;CACJ,CAAA;AAiBD,MAAa,sBAAuB,SAAQ,gBAAS;IAGjD,YAAY,EACR,KAAK,EACL,iBAAiB,KACmC,EAAE;QACtD,KAAK,CACD,0CACI,iBAAiB,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,EACpD,iGAAiG,EACjG;YACI,KAAK;SACR,CACJ,CAAA;QAbI;;;;mBAAO,wBAAwB;WAAA;IAcxC,CAAC;CACJ;AAhBD,wDAgBC;AA2BM,MAAM,gBAAgB,GAAG,KAAK,EACjC,MAAc,EACd,IAAsC,EACtB,EAAE;IAClB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAElE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE,CAAA;IACL,CAAC;IAED,MAAM,iBAAiB,GACnB,QAAQ,IAAI,IAAA,aAAM,EAAC,CAAC,OAAc,EAAE,WAAkB,CAAC,CAAC,CAAA;IAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,iBAAS,EAC5B,MAAM,EACN,cAAI,EACJ,MAAM,CACT,CAAC;QACE,IAAI,EAAE,IAAA,uBAAgB,EAAC;YACnB,GAAG,EAAE,yBAAyB;YAC9B,QAAQ,EAAE,8BAA8B;YACxC,IAAI,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC/C,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,CAAA;AAC3B,CAAC,CAAA;AAhCY,QAAA,gBAAgB,oBAgC5B"}
1
+ {"version":3,"file":"getSenderAddress.js","sourceRoot":"","sources":["../../../actions/public/getSenderAddress.ts"],"names":[],"mappings":";;;AAAA,+BAUa;AAEb,0CAAmC;AACnC,sCAAsC;AAGtC,MAAM,8BAA8B,GAChC,w0CAAw0C,CAAA;AAE50C,MAAM,yBAAyB,GAAG;IAC9B;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,aAAa;KACtB;CACJ,CAAA;AAiBD,MAAa,sBAAuB,SAAQ,gBAAS;IAGjD,YAAY,EACR,KAAK,EACL,iBAAiB,KACmC,EAAE;QACtD,KAAK,CACD,0CACI,iBAAiB,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,EACpD,iGAAiG,EACjG;YACI,KAAK;SACR,CACJ,CAAA;QAbI;;;;mBAAO,wBAAwB;WAAA;IAcxC,CAAC;CACJ;AAhBD,wDAgBC;AA2BM,MAAM,gBAAgB,GAAG,KAAK,EACjC,MAAc,EACd,IAAsC,EACtB,EAAE;IAClB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAElE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE,CAAA;IACL,CAAC;IAED,MAAM,iBAAiB,GACnB,QAAQ,IAAI,IAAA,aAAM,EAAC,CAAC,OAAc,EAAE,WAAkB,CAAC,CAAC,CAAA;IAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,iBAAS,EAC5B,MAAM,EACN,cAAI,EACJ,MAAM,CACT,CAAC;QACE,IAAI,EAAE,IAAA,uBAAgB,EAAC;YACnB,GAAG,EAAE,yBAAyB;YAC9B,QAAQ,EAAE,8BAA8B;YACxC,IAAI,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC/C,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,IAAA,0BAAmB,EAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAA;AAhCY,QAAA,gBAAgB,oBAgC5B"}
@@ -2,12 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.passkeyServerActions = void 0;
4
4
  const getCredentials_js_1 = require("../../actions/passkeyServer/getCredentials.js");
5
+ const startAuthentication_js_1 = require("../../actions/passkeyServer/startAuthentication.js");
5
6
  const startRegistration_js_1 = require("../../actions/passkeyServer/startRegistration.js");
7
+ const verifyAuthentication_js_1 = require("../../actions/passkeyServer/verifyAuthentication.js");
6
8
  const verifyRegistration_js_1 = require("../../actions/passkeyServer/verifyRegistration.js");
7
9
  const passkeyServerActions = (client) => ({
8
10
  startRegistration: (args) => (0, startRegistration_js_1.startRegistration)(client, args),
9
11
  verifyRegistration: (args) => (0, verifyRegistration_js_1.verifyRegistration)(client, args),
10
- getCredentials: (args) => (0, getCredentials_js_1.getCredentials)(client, args)
12
+ getCredentials: (args) => (0, getCredentials_js_1.getCredentials)(client, args),
13
+ startAuthentication: () => (0, startAuthentication_js_1.startAuthentication)(client),
14
+ verifyAuthentication: (args) => (0, verifyAuthentication_js_1.verifyAuthentication)(client, args)
11
15
  });
12
16
  exports.passkeyServerActions = passkeyServerActions;
13
17
  //# sourceMappingURL=passkeyServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"passkeyServer.js","sourceRoot":"","sources":["../../../clients/decorators/passkeyServer.ts"],"names":[],"mappings":";;;AACA,qFAIsD;AACtD,2FAIyD;AACzD,6FAI0D;AAenD,MAAM,oBAAoB,GAAG,CAChC,MAKC,EACmB,EAAE,CAAC,CAAC;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,wCAAiB,EAAC,MAAM,EAAE,IAAI,CAAC;IAC5D,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0CAAkB,EAAC,MAAM,EAAE,IAAI,CAAC;IAC9D,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,kCAAc,EAAC,MAAM,EAAE,IAAI,CAAC;CACzD,CAAC,CAAA;AAXW,QAAA,oBAAoB,wBAW/B"}
1
+ {"version":3,"file":"passkeyServer.js","sourceRoot":"","sources":["../../../clients/decorators/passkeyServer.ts"],"names":[],"mappings":";;;AACA,qFAIsD;AACtD,+FAG2D;AAC3D,2FAIyD;AACzD,iGAI4D;AAC5D,6FAI0D;AAmBnD,MAAM,oBAAoB,GAAG,CAChC,MAKC,EACmB,EAAE,CAAC,CAAC;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,wCAAiB,EAAC,MAAM,EAAE,IAAI,CAAC;IAC5D,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0CAAkB,EAAC,MAAM,EAAE,IAAI,CAAC;IAC9D,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,kCAAc,EAAC,MAAM,EAAE,IAAI,CAAC;IACtD,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAA,4CAAmB,EAAC,MAAM,CAAC;IACtD,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,8CAAoB,EAAC,MAAM,EAAE,IAAI,CAAC;CACrE,CAAC,CAAA;AAbW,QAAA,oBAAoB,wBAa/B"}
@@ -0,0 +1,15 @@
1
+ import { Base64 } from "ox";
2
+ import { toHex } from "viem";
3
+ export const startAuthentication = async (client) => {
4
+ const response = await client.request({
5
+ method: "pks_startAuthentication",
6
+ params: []
7
+ });
8
+ return {
9
+ challenge: toHex(Base64.toBytes(response.challenge)),
10
+ rpId: response.rpId,
11
+ userVerification: response.userVerification,
12
+ uuid: response.uuid
13
+ };
14
+ };
15
+ //# sourceMappingURL=startAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startAuthentication.js","sourceRoot":"","sources":["../../../actions/passkeyServer/startAuthentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAE3B,OAAO,EAKH,KAAK,EACR,MAAM,MAAM,CAAA;AAOb,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACpC,MAKC,EACqC,EAAE;IACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,EAAE;KACb,CAAC,CAAA;IAEF,OAAO;QACH,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,IAAI,EAAE,QAAQ,CAAC,IAAI;KACtB,CAAA;AACL,CAAC,CAAA"}
@@ -0,0 +1,74 @@
1
+ import { Base64 } from "ox";
2
+ export const verifyAuthentication = async (client, args) => {
3
+ const { raw, uuid } = args;
4
+ let responseAuthenticatorData;
5
+ if ("authenticatorData" in raw.response) {
6
+ responseAuthenticatorData = Base64.fromBytes(new Uint8Array(raw.response.authenticatorData), {
7
+ url: true
8
+ });
9
+ }
10
+ else {
11
+ throw new Error("authenticatorData not found in the signature");
12
+ }
13
+ let signature;
14
+ if ("signature" in raw.response) {
15
+ signature = Base64.fromBytes(new Uint8Array(raw.response.signature), {
16
+ pad: false,
17
+ url: true
18
+ });
19
+ }
20
+ else {
21
+ throw new Error("signature not found in the signature");
22
+ }
23
+ let userHandle;
24
+ if ("userHandle" in raw.response) {
25
+ userHandle = Base64.fromBytes(new Uint8Array(raw.response.userHandle), {
26
+ pad: false,
27
+ url: true
28
+ });
29
+ }
30
+ const serverResponse = await client.request({
31
+ method: "pks_verifyAuthentication",
32
+ params: [
33
+ {
34
+ id: raw.id,
35
+ rawId: Base64.fromBytes(new Uint8Array(raw.rawId), {
36
+ pad: false,
37
+ url: true
38
+ }),
39
+ authenticatorAttachment: raw.authenticatorAttachment,
40
+ response: {
41
+ clientDataJSON: Base64.fromBytes(new Uint8Array(raw.response.clientDataJSON), {
42
+ pad: false,
43
+ url: true
44
+ }),
45
+ authenticatorData: responseAuthenticatorData,
46
+ signature,
47
+ userHandle
48
+ },
49
+ clientExtensionResults: raw.getClientExtensionResults(),
50
+ type: raw.type
51
+ },
52
+ {
53
+ uuid
54
+ }
55
+ ]
56
+ }, {
57
+ retryCount: 0
58
+ });
59
+ const success = Boolean(serverResponse?.success);
60
+ const id = serverResponse?.id;
61
+ const publicKey = serverResponse?.publicKey;
62
+ if (typeof id !== "string") {
63
+ throw new Error("Invalid passkey id returned from server");
64
+ }
65
+ if (typeof publicKey !== "string" || !publicKey.startsWith("0x")) {
66
+ throw new Error("Invalid public key returned from server - must be hex string starting with 0x");
67
+ }
68
+ return {
69
+ success,
70
+ id,
71
+ publicKey: publicKey
72
+ };
73
+ };
74
+ //# sourceMappingURL=verifyAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyAuthentication.js","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyAuthentication.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,8 @@ export const verifyRegistration = async (client, args) => {
48
48
  },
49
49
  context
50
50
  ]
51
+ }, {
52
+ retryCount: 0
51
53
  });
52
54
  const success = Boolean(serverResponse?.success);
53
55
  const id = serverResponse?.id;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyRegistration.js","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAgB3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACnC,MAKC,EACD,IAAkC,EACG,EAAE;IACvC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAEpC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG;SAC1B,QAAuD,CAAA;IAE5D,IAAI,0BAA0B,GAAuB,SAAS,CAAA;IAC9D,IAAI,OAAO,QAAQ,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC;YACD,0BAA0B,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC/D,CAAC;IACL,CAAC;IAED,IAAI,yBAA6C,CAAA;IACjD,IAAI,OAAO,QAAQ,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC;YACD,yBAAyB,GAAG,MAAM,CAAC,SAAS,CACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAClD,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC9D,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACxC,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE;YACJ;gBACI,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1D,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,IAAI;iBACZ,CAAC;gBACF,QAAQ,EAAE;oBACN,cAAc,EAAE,MAAM,CAAC,SAAS,CAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC1C;oBACD,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAC/B,IAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAC1C;wBACI,GAAG,EAAE,IAAI;qBACZ,CACJ;oBACD,UAAU,EACN,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU;wBACxC,CAAC,CAAE,QAAQ,CAAC,aAAa,EAQnB;wBACN,CAAC,CAAC,SAAS;oBACnB,kBAAkB,EAAE,0BAA0B;oBAC9C,iBAAiB,EAAE,yBAAyB;iBAC/C;gBACD,uBAAuB,EAAE,UAAU,CAAC,GAAG;qBAClC,uBAAwD;gBAC7D,sBAAsB,EAClB,UAAU,CAAC,GAAG,CAAC,yBAAyB,EAAE;gBAC9C,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAoB;aAC5C;YACD,OAAO;SACV;KACJ,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAA;IAC7B,MAAM,SAAS,GAAG,cAAc,EAAE,SAAS,CAAA;IAE3C,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACX,+EAA+E,CAClF,CAAA;IACL,CAAC;IAED,OAAO;QACH,OAAO;QACP,EAAE;QACF,SAAS,EAAE,SAAgB;KAC9B,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"verifyRegistration.js","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyRegistration.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { BaseError, concat, encodeDeployData, getAddress } from "viem";
1
+ import { BaseError, concat, decodeAbiParameters, encodeDeployData } from "viem";
2
2
  import { call } from "viem/actions";
3
3
  import { getAction } from "viem/utils";
4
- // https://github.com/pimlicolabs/entrypoint-estimations/blob/main/src/GetSenderAddressHelper.sol
5
- const GetSenderAddressHelperByteCode = "0x6080604052604051610302380380610302833981016040819052610022916101de565b600080836001600160a01b0316639b249f6960e01b8460405160240161004891906102b2565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161008691906102e5565b6000604051808303816000865af19150503d80600081146100c3576040519150601f19603f3d011682016040523d82523d6000602084013e6100c8565b606091505b5091509150600082610148576004825111156100ef5760248201519050806000526014600cf35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b60648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b606482015260840161013f565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101d55781810151838201526020016101bd565b50506000910152565b600080604083850312156101f157600080fd5b82516001600160a01b038116811461020857600080fd5b60208401519092506001600160401b0381111561022457600080fd5b8301601f8101851361023557600080fd5b80516001600160401b0381111561024e5761024e6101a4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561027c5761027c6101a4565b60405281815282820160200187101561029457600080fd5b6102a58260208301602086016101ba565b8093505050509250929050565b60208152600082518060208401526102d18160408501602087016101ba565b601f01601f19169190910160400192915050565b600082516102f78184602087016101ba565b919091019291505056fe";
4
+ // https://github.com/pimlicolabs/contracts/blob/80277d0de609e6b5fb4cedeeb1fb9a023caed59f/src/GetSenderAddressHelper.sol
5
+ const GetSenderAddressHelperByteCode = "0x60806040526102a28038038091610015826100ae565b6080396040816080019112610093576080516001600160a01b03811681036100935760a0516001600160401b0381116100935782609f82011215610093578060800151610061816100fc565b9361006f60405195866100d9565b81855260a082840101116100935761008e9160a0602086019101610117565b610196565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100d457604052565b610098565b601f909101601f19168101906001600160401b038211908210176100d457604052565b6001600160401b0381116100d457601f01601f191660200190565b60005b83811061012a5750506000910152565b818101518382015260200161011a565b6040916020825261015a8151809281602086015260208686019101610117565b601f01601f1916010190565b3d15610191573d90610177826100fc565b9161018560405193846100d9565b82523d6000602084013e565b606090565b600091908291826040516101cd816101bf6020820195639b249f6960e01b87526024830161013a565b03601f1981018352826100d9565b51925af16101d9610166565b906102485760048151116000146101f7576024015160005260206000f35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b6064820152608490fdfe";
6
6
  const GetSenderAddressHelperAbi = [
7
7
  {
8
8
  inputs: [
@@ -75,6 +75,6 @@ export const getSenderAddress = async (client, args) => {
75
75
  if (!data) {
76
76
  throw new Error("Failed to get sender address");
77
77
  }
78
- return getAddress(data);
78
+ return decodeAbiParameters([{ type: "address" }], data)[0];
79
79
  };
80
80
  //# sourceMappingURL=getSenderAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSenderAddress.js","sourceRoot":"","sources":["../../../actions/public/getSenderAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAKT,MAAM,EACN,gBAAgB,EAChB,UAAU,EACb,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,iGAAiG;AACjG,MAAM,8BAA8B,GAChC,wgDAAwgD,CAAA;AAE5gD,MAAM,yBAAyB,GAAG;IAC9B;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,aAAa;KACtB;CACJ,CAAA;AAiBD,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IAGjD,YAAY,EACR,KAAK,EACL,iBAAiB,KACmC,EAAE;QACtD,KAAK,CACD,0CACI,iBAAiB,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,EACpD,iGAAiG,EACjG;YACI,KAAK;SACR,CACJ,CAAA;QAbI;;;;mBAAO,wBAAwB;WAAA;IAcxC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACjC,MAAc,EACd,IAAsC,EACtB,EAAE;IAClB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAElE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE,CAAA;IACL,CAAC;IAED,MAAM,iBAAiB,GACnB,QAAQ,IAAI,MAAM,CAAC,CAAC,OAAc,EAAE,WAAkB,CAAC,CAAC,CAAA;IAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,IAAI,EACJ,MAAM,CACT,CAAC;QACE,IAAI,EAAE,gBAAgB,CAAC;YACnB,GAAG,EAAE,yBAAyB;YAC9B,QAAQ,EAAE,8BAA8B;YACxC,IAAI,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC/C,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC,CAAA"}
1
+ {"version":3,"file":"getSenderAddress.js","sourceRoot":"","sources":["../../../actions/public/getSenderAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAKT,MAAM,EACN,mBAAmB,EACnB,gBAAgB,EACnB,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,wHAAwH;AACxH,MAAM,8BAA8B,GAChC,w0CAAw0C,CAAA;AAE50C,MAAM,yBAAyB,GAAG;IAC9B;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,aAAa;KACtB;CACJ,CAAA;AAiBD,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IAGjD,YAAY,EACR,KAAK,EACL,iBAAiB,KACmC,EAAE;QACtD,KAAK,CACD,0CACI,iBAAiB,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,EACpD,iGAAiG,EACjG;YACI,KAAK;SACR,CACJ,CAAA;QAbI;;;;mBAAO,wBAAwB;WAAA;IAcxC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACjC,MAAc,EACd,IAAsC,EACtB,EAAE;IAClB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAElE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE,CAAA;IACL,CAAC;IAED,MAAM,iBAAiB,GACnB,QAAQ,IAAI,MAAM,CAAC,CAAC,OAAc,EAAE,WAAkB,CAAC,CAAC,CAAA;IAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,IAAI,EACJ,MAAM,CACT,CAAC;QACE,IAAI,EAAE,gBAAgB,CAAC;YACnB,GAAG,EAAE,yBAAyB;YAC9B,QAAQ,EAAE,8BAA8B;YACxC,IAAI,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC/C,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAA"}
@@ -1,9 +1,13 @@
1
1
  import { getCredentials } from "../../actions/passkeyServer/getCredentials.js";
2
+ import { startAuthentication } from "../../actions/passkeyServer/startAuthentication.js";
2
3
  import { startRegistration } from "../../actions/passkeyServer/startRegistration.js";
4
+ import { verifyAuthentication } from "../../actions/passkeyServer/verifyAuthentication.js";
3
5
  import { verifyRegistration } from "../../actions/passkeyServer/verifyRegistration.js";
4
6
  export const passkeyServerActions = (client) => ({
5
7
  startRegistration: (args) => startRegistration(client, args),
6
8
  verifyRegistration: (args) => verifyRegistration(client, args),
7
- getCredentials: (args) => getCredentials(client, args)
9
+ getCredentials: (args) => getCredentials(client, args),
10
+ startAuthentication: () => startAuthentication(client),
11
+ verifyAuthentication: (args) => verifyAuthentication(client, args)
8
12
  });
9
13
  //# sourceMappingURL=passkeyServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"passkeyServer.js","sourceRoot":"","sources":["../../../clients/decorators/passkeyServer.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,cAAc,EACjB,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAGH,iBAAiB,EACpB,MAAM,kDAAkD,CAAA;AACzD,OAAO,EAGH,kBAAkB,EACrB,MAAM,mDAAmD,CAAA;AAe1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,MAKC,EACmB,EAAE,CAAC,CAAC;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC5D,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9D,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;CACzD,CAAC,CAAA"}
1
+ {"version":3,"file":"passkeyServer.js","sourceRoot":"","sources":["../../../clients/decorators/passkeyServer.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,cAAc,EACjB,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAEH,mBAAmB,EACtB,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EAGH,iBAAiB,EACpB,MAAM,kDAAkD,CAAA;AACzD,OAAO,EAGH,oBAAoB,EACvB,MAAM,qDAAqD,CAAA;AAC5D,OAAO,EAGH,kBAAkB,EACrB,MAAM,mDAAmD,CAAA;AAmB1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,MAKC,EACmB,EAAE,CAAC,CAAC;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC5D,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9D,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;IACtD,mBAAmB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACtD,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;CACrE,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { WebAuthnP256 } from "ox";
2
+ import { type Account, type Chain, type Client, type Transport } from "viem";
3
+ import type { PasskeyServerRpcSchema } from "../../types/passkeyServer.js";
4
+ export type StartAuthenticationReturnType = WebAuthnP256.sign.Options & {
5
+ uuid: string;
6
+ };
7
+ export declare const startAuthentication: (client: Client<Transport, Chain | undefined, Account | undefined, PasskeyServerRpcSchema>) => Promise<StartAuthenticationReturnType>;
8
+ //# sourceMappingURL=startAuthentication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startAuthentication.d.ts","sourceRoot":"","sources":["../../../actions/passkeyServer/startAuthentication.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,SAAS,EAEjB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,MAAM,MAAM,6BAA6B,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG;IACpE,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC5B,QAAQ,MAAM,CACV,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,sBAAsB,CACzB,KACF,OAAO,CAAC,6BAA6B,CAYvC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { type WebAuthnP256 } from "ox";
2
+ import type { Account, Chain, Client, Hex, Transport } from "viem";
3
+ import type { PasskeyServerRpcSchema } from "../../types/passkeyServer.js";
4
+ export type VerifyAuthenticationParameters = WebAuthnP256.sign.ReturnType & {
5
+ uuid: string;
6
+ };
7
+ export type VerifyAuthenticationReturnType = {
8
+ success: boolean;
9
+ id: string;
10
+ publicKey: Hex;
11
+ };
12
+ export declare const verifyAuthentication: (client: Client<Transport, Chain | undefined, Account | undefined, PasskeyServerRpcSchema>, args: VerifyAuthenticationParameters) => Promise<VerifyAuthenticationReturnType>;
13
+ //# sourceMappingURL=verifyAuthentication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyAuthentication.d.ts","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyAuthentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,IAAI,CAAA;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,MAAM,MAAM,8BAA8B,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,GAAG;IACxE,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,GAAG,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC7B,QAAQ,MAAM,CACV,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,sBAAsB,CACzB,EACD,MAAM,8BAA8B,KACrC,OAAO,CAAC,8BAA8B,CAiGxC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyRegistration.d.ts","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyRegistration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAClE,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,MAAM,MAAM,4BAA4B,GAAG;IACvC,UAAU,EAAE,kCAAkC,CAAA;IAC9C,OAAO,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,GAAG,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC3B,QAAQ,MAAM,CACV,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,sBAAsB,CACzB,EACD,MAAM,4BAA4B,KACnC,OAAO,CAAC,4BAA4B,CAyFtC,CAAA"}
1
+ {"version":3,"file":"verifyRegistration.d.ts","sourceRoot":"","sources":["../../../actions/passkeyServer/verifyRegistration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAClE,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,MAAM,MAAM,4BAA4B,GAAG;IACvC,UAAU,EAAE,kCAAkC,CAAA;IAC9C,OAAO,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,GAAG,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC3B,QAAQ,MAAM,CACV,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,sBAAsB,CACzB,EACD,MAAM,4BAA4B,KACnC,OAAO,CAAC,4BAA4B,CAmGtC,CAAA"}
@@ -1,11 +1,15 @@
1
1
  import type { Account, Chain, Client, Transport } from "viem";
2
2
  import { type GetCredentialsParameters, type GetCredentialsReturnType } from "../../actions/passkeyServer/getCredentials.js";
3
+ import { type StartAuthenticationReturnType } from "../../actions/passkeyServer/startAuthentication.js";
3
4
  import { type StartRegistrationParameters, type StartRegistrationReturnType } from "../../actions/passkeyServer/startRegistration.js";
5
+ import { type VerifyAuthenticationParameters, type VerifyAuthenticationReturnType } from "../../actions/passkeyServer/verifyAuthentication.js";
4
6
  import { type VerifyRegistrationParameters, type VerifyRegistrationReturnType } from "../../actions/passkeyServer/verifyRegistration.js";
5
7
  import type { PasskeyServerRpcSchema } from "../../types/passkeyServer.js";
6
8
  export type PasskeyServerActions = {
7
9
  startRegistration: (args: StartRegistrationParameters) => Promise<StartRegistrationReturnType>;
8
10
  verifyRegistration: (args: VerifyRegistrationParameters) => Promise<VerifyRegistrationReturnType>;
11
+ startAuthentication: () => Promise<StartAuthenticationReturnType>;
12
+ verifyAuthentication: (args: VerifyAuthenticationParameters) => Promise<VerifyAuthenticationReturnType>;
9
13
  getCredentials: (args: GetCredentialsParameters) => Promise<GetCredentialsReturnType>;
10
14
  };
11
15
  export declare const passkeyServerActions: (client: Client<Transport, Chain | undefined, Account | undefined, PasskeyServerRpcSchema>) => PasskeyServerActions;
@@ -1 +1 @@
1
- {"version":3,"file":"passkeyServer.d.ts","sourceRoot":"","sources":["../../../clients/decorators/passkeyServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC7D,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAEhC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACH,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAEnC,MAAM,kDAAkD,CAAA;AACzD,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EAEpC,MAAM,mDAAmD,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG;IAC/B,iBAAiB,EAAE,CACf,IAAI,EAAE,2BAA2B,KAChC,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACzC,kBAAkB,EAAE,CAChB,IAAI,EAAE,4BAA4B,KACjC,OAAO,CAAC,4BAA4B,CAAC,CAAA;IAC1C,cAAc,EAAE,CACZ,IAAI,EAAE,wBAAwB,KAC7B,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC7B,QAAQ,MAAM,CACV,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,sBAAsB,CACzB,KACF,oBAID,CAAA"}
1
+ {"version":3,"file":"passkeyServer.d.ts","sourceRoot":"","sources":["../../../clients/decorators/passkeyServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC7D,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAEhC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACH,KAAK,6BAA6B,EAErC,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACH,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAEnC,MAAM,kDAAkD,CAAA;AACzD,OAAO,EACH,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EAEtC,MAAM,qDAAqD,CAAA;AAC5D,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EAEpC,MAAM,mDAAmD,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG;IAC/B,iBAAiB,EAAE,CACf,IAAI,EAAE,2BAA2B,KAChC,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACzC,kBAAkB,EAAE,CAChB,IAAI,EAAE,4BAA4B,KACjC,OAAO,CAAC,4BAA4B,CAAC,CAAA;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,6BAA6B,CAAC,CAAA;IACjE,oBAAoB,EAAE,CAClB,IAAI,EAAE,8BAA8B,KACnC,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC5C,cAAc,EAAE,CACZ,IAAI,EAAE,wBAAwB,KAC7B,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC7B,QAAQ,MAAM,CACV,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,sBAAsB,CACzB,KACF,oBAMD,CAAA"}
@@ -1,5 +1,16 @@
1
1
  import type { Hex } from "viem";
2
2
  export type PasskeyServerRpcSchema = [
3
+ {
4
+ Method: "pks_startAuthentication";
5
+ Parameters: [];
6
+ ReturnType: {
7
+ challenge: string;
8
+ rpId: string;
9
+ timeout?: number;
10
+ userVerification?: "required" | "preferred" | "discouraged";
11
+ uuid: string;
12
+ };
13
+ },
3
14
  {
4
15
  Method: "pks_startRegistration";
5
16
  Parameters: [context: unknown];
@@ -62,6 +73,36 @@ export type PasskeyServerRpcSchema = [
62
73
  publicKey: Hex;
63
74
  };
64
75
  },
76
+ {
77
+ Method: "pks_verifyAuthentication";
78
+ Parameters: [
79
+ {
80
+ id: string;
81
+ rawId: string;
82
+ response: {
83
+ clientDataJSON: string;
84
+ authenticatorData: string;
85
+ signature: string;
86
+ userHandle?: string;
87
+ };
88
+ authenticatorAttachment: "cross-platform" | "platform";
89
+ clientExtensionResults: {
90
+ appid?: boolean;
91
+ credProps?: {
92
+ rk?: boolean;
93
+ };
94
+ hmacCreateSecret?: boolean;
95
+ };
96
+ type: "public-key";
97
+ },
98
+ context: unknown
99
+ ];
100
+ ReturnType: {
101
+ success: boolean;
102
+ id: string;
103
+ publicKey: Hex;
104
+ };
105
+ },
65
106
  {
66
107
  Method: "pks_getCredentials";
67
108
  Parameters: [context: unknown];
@@ -1 +1 @@
1
- {"version":3,"file":"passkeyServer.d.ts","sourceRoot":"","sources":["../../types/passkeyServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAE/B,MAAM,MAAM,sBAAsB,GAAG;IACjC;QACI,MAAM,EAAE,uBAAuB,CAAA;QAC/B,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9B,UAAU,EAAE;YACR,EAAE,EAAE;gBACA,EAAE,EAAE,MAAM,CAAA;gBACV,IAAI,EAAE,MAAM,CAAA;aACf,CAAA;YACD,IAAI,EAAE;gBACF,EAAE,EAAE,MAAM,CAAA;gBACV,IAAI,EAAE,MAAM,CAAA;gBACZ,WAAW,EAAE,MAAM,CAAA;aACtB,CAAA;YACD,SAAS,EAAE,MAAM,CAAA;YACjB,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,sBAAsB,CAAC,EAAE;gBACrB,uBAAuB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAA;gBACvD,kBAAkB,CAAC,EAAE,OAAO,CAAA;gBAC5B,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,CAAA;gBACtD,gBAAgB,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,CAAA;aAC9D,CAAA;YACD,WAAW,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAA;YAC1D,UAAU,CAAC,EAAE;gBACT,KAAK,CAAC,EAAE,MAAM,CAAA;gBACd,SAAS,CAAC,EAAE,OAAO,CAAA;gBACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;gBAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;aACzB,CAAA;SACJ,CAAA;KACJ;IACD;QACI,MAAM,EAAE,wBAAwB,CAAA;QAChC,UAAU,EAAE;YACR;gBACI,EAAE,EAAE,MAAM,CAAA;gBACV,KAAK,EAAE,MAAM,CAAA;gBACb,QAAQ,EAAE;oBACN,cAAc,EAAE,MAAM,CAAA;oBACtB,iBAAiB,EAAE,MAAM,CAAA;oBACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;oBAC1B,UAAU,CAAC,EAAE,CACP,KAAK,GACL,OAAO,GACP,QAAQ,GACR,UAAU,GACV,KAAK,GACL,YAAY,GACZ,KAAK,CACV,EAAE,CAAA;oBACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;iBACzB,CAAA;gBACD,uBAAuB,EAAE,gBAAgB,GAAG,UAAU,CAAA;gBACtD,sBAAsB,EAAE;oBACpB,KAAK,CAAC,EAAE,OAAO,CAAA;oBACf,SAAS,CAAC,EAAE;wBACR,EAAE,CAAC,EAAE,OAAO,CAAA;qBACf,CAAA;oBACD,gBAAgB,CAAC,EAAE,OAAO,CAAA;iBAC7B,CAAA;gBACD,IAAI,EAAE,YAAY,CAAA;aACrB;YACD,OAAO,EAAE,OAAO;SACnB,CAAA;QACD,UAAU,EAAE;YACR,OAAO,EAAE,OAAO,CAAA;YAChB,EAAE,EAAE,MAAM,CAAA;YACV,SAAS,EAAE,GAAG,CAAA;SACjB,CAAA;KACJ;IACD;QACI,MAAM,EAAE,oBAAoB,CAAA;QAC5B,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9B,UAAU,EAAE;YACR,EAAE,EAAE,MAAM,CAAA;YACV,SAAS,EAAE,GAAG,CAAA;SACjB,EAAE,CAAA;KACN;CACJ,CAAA"}
1
+ {"version":3,"file":"passkeyServer.d.ts","sourceRoot":"","sources":["../../types/passkeyServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { Base64 } from "ox"
2
+ import type { WebAuthnP256 } from "ox"
3
+ import {
4
+ type Account,
5
+ type Chain,
6
+ type Client,
7
+ type Transport,
8
+ toHex
9
+ } from "viem"
10
+ import type { PasskeyServerRpcSchema } from "../../types/passkeyServer.js"
11
+
12
+ export type StartAuthenticationReturnType = WebAuthnP256.sign.Options & {
13
+ uuid: string
14
+ }
15
+
16
+ export const startAuthentication = async (
17
+ client: Client<
18
+ Transport,
19
+ Chain | undefined,
20
+ Account | undefined,
21
+ PasskeyServerRpcSchema
22
+ >
23
+ ): Promise<StartAuthenticationReturnType> => {
24
+ const response = await client.request({
25
+ method: "pks_startAuthentication",
26
+ params: []
27
+ })
28
+
29
+ return {
30
+ challenge: toHex(Base64.toBytes(response.challenge)),
31
+ rpId: response.rpId,
32
+ userVerification: response.userVerification,
33
+ uuid: response.uuid
34
+ }
35
+ }
@@ -0,0 +1,121 @@
1
+ import { Base64, type WebAuthnP256 } from "ox"
2
+ // import { Base64 } from "ox"
3
+ import type { Account, Chain, Client, Hex, Transport } from "viem"
4
+ import type { PasskeyServerRpcSchema } from "../../types/passkeyServer.js"
5
+
6
+ export type VerifyAuthenticationParameters = WebAuthnP256.sign.ReturnType & {
7
+ uuid: string
8
+ }
9
+
10
+ export type VerifyAuthenticationReturnType = {
11
+ success: boolean
12
+ id: string
13
+ publicKey: Hex
14
+ }
15
+
16
+ export const verifyAuthentication = async (
17
+ client: Client<
18
+ Transport,
19
+ Chain | undefined,
20
+ Account | undefined,
21
+ PasskeyServerRpcSchema
22
+ >,
23
+ args: VerifyAuthenticationParameters
24
+ ): Promise<VerifyAuthenticationReturnType> => {
25
+ const { raw, uuid } = args
26
+
27
+ let responseAuthenticatorData: string
28
+
29
+ if ("authenticatorData" in raw.response) {
30
+ responseAuthenticatorData = Base64.fromBytes(
31
+ new Uint8Array(raw.response.authenticatorData as ArrayBuffer),
32
+ {
33
+ url: true
34
+ }
35
+ )
36
+ } else {
37
+ throw new Error("authenticatorData not found in the signature")
38
+ }
39
+
40
+ let signature: string
41
+ if ("signature" in raw.response) {
42
+ signature = Base64.fromBytes(
43
+ new Uint8Array(raw.response.signature as ArrayBuffer),
44
+ {
45
+ pad: false,
46
+ url: true
47
+ }
48
+ )
49
+ } else {
50
+ throw new Error("signature not found in the signature")
51
+ }
52
+
53
+ let userHandle: string | undefined
54
+ if ("userHandle" in raw.response) {
55
+ userHandle = Base64.fromBytes(
56
+ new Uint8Array(raw.response.userHandle as ArrayBuffer),
57
+ {
58
+ pad: false,
59
+ url: true
60
+ }
61
+ )
62
+ }
63
+
64
+ const serverResponse = await client.request(
65
+ {
66
+ method: "pks_verifyAuthentication",
67
+ params: [
68
+ {
69
+ id: raw.id,
70
+ rawId: Base64.fromBytes(new Uint8Array(raw.rawId), {
71
+ pad: false,
72
+ url: true
73
+ }),
74
+ authenticatorAttachment: raw.authenticatorAttachment as
75
+ | "cross-platform"
76
+ | "platform",
77
+ response: {
78
+ clientDataJSON: Base64.fromBytes(
79
+ new Uint8Array(raw.response.clientDataJSON),
80
+ {
81
+ pad: false,
82
+ url: true
83
+ }
84
+ ),
85
+ authenticatorData: responseAuthenticatorData,
86
+ signature,
87
+ userHandle
88
+ },
89
+ clientExtensionResults: raw.getClientExtensionResults(),
90
+ type: raw.type as "public-key"
91
+ },
92
+ {
93
+ uuid
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ retryCount: 0
99
+ }
100
+ )
101
+
102
+ const success = Boolean(serverResponse?.success)
103
+ const id = serverResponse?.id
104
+ const publicKey = serverResponse?.publicKey
105
+
106
+ if (typeof id !== "string") {
107
+ throw new Error("Invalid passkey id returned from server")
108
+ }
109
+
110
+ if (typeof publicKey !== "string" || !publicKey.startsWith("0x")) {
111
+ throw new Error(
112
+ "Invalid public key returned from server - must be hex string starting with 0x"
113
+ )
114
+ }
115
+
116
+ return {
117
+ success,
118
+ id,
119
+ publicKey: publicKey as Hex
120
+ }
121
+ }
@@ -48,49 +48,59 @@ export const verifyRegistration = async (
48
48
  }
49
49
  }
50
50
 
51
- const serverResponse = await client.request({
52
- method: "pks_verifyRegistration",
53
- params: [
54
- {
55
- id: credential.id,
56
- rawId: Base64.fromBytes(new Uint8Array(credential.raw.rawId), {
57
- pad: false,
58
- url: true
59
- }),
60
- response: {
61
- clientDataJSON: Base64.fromBytes(
62
- new Uint8Array(response.clientDataJSON)
63
- ),
64
- attestationObject: Base64.fromBytes(
65
- new Uint8Array(response.attestationObject),
51
+ const serverResponse = await client.request(
52
+ {
53
+ method: "pks_verifyRegistration",
54
+ params: [
55
+ {
56
+ id: credential.id,
57
+ rawId: Base64.fromBytes(
58
+ new Uint8Array(credential.raw.rawId),
66
59
  {
60
+ pad: false,
67
61
  url: true
68
62
  }
69
63
  ),
70
- transports:
71
- typeof response.getTransports === "function"
72
- ? (response.getTransports() as (
73
- | "ble"
74
- | "cable"
75
- | "hybrid"
76
- | "internal"
77
- | "nfc"
78
- | "smart-card"
79
- | "usb"
80
- )[])
81
- : undefined,
82
- publicKeyAlgorithm: responsePublicKeyAlgorithm,
83
- authenticatorData: responseAuthenticatorData
64
+ response: {
65
+ clientDataJSON: Base64.fromBytes(
66
+ new Uint8Array(response.clientDataJSON)
67
+ ),
68
+ attestationObject: Base64.fromBytes(
69
+ new Uint8Array(response.attestationObject),
70
+ {
71
+ url: true
72
+ }
73
+ ),
74
+ transports:
75
+ typeof response.getTransports === "function"
76
+ ? (response.getTransports() as (
77
+ | "ble"
78
+ | "cable"
79
+ | "hybrid"
80
+ | "internal"
81
+ | "nfc"
82
+ | "smart-card"
83
+ | "usb"
84
+ )[])
85
+ : undefined,
86
+ publicKeyAlgorithm: responsePublicKeyAlgorithm,
87
+ authenticatorData: responseAuthenticatorData
88
+ },
89
+ authenticatorAttachment: credential.raw
90
+ .authenticatorAttachment as
91
+ | "cross-platform"
92
+ | "platform",
93
+ clientExtensionResults:
94
+ credential.raw.getClientExtensionResults(),
95
+ type: credential.raw.type as "public-key"
84
96
  },
85
- authenticatorAttachment: credential.raw
86
- .authenticatorAttachment as "cross-platform" | "platform",
87
- clientExtensionResults:
88
- credential.raw.getClientExtensionResults(),
89
- type: credential.raw.type as "public-key"
90
- },
91
- context
92
- ]
93
- })
97
+ context
98
+ ]
99
+ },
100
+ {
101
+ retryCount: 0
102
+ }
103
+ )
94
104
 
95
105
  const success = Boolean(serverResponse?.success)
96
106
  const id = serverResponse?.id
@@ -6,16 +6,16 @@ import {
6
6
  type OneOf,
7
7
  type Prettify,
8
8
  concat,
9
- encodeDeployData,
10
- getAddress
9
+ decodeAbiParameters,
10
+ encodeDeployData
11
11
  } from "viem"
12
12
 
13
13
  import { call } from "viem/actions"
14
14
  import { getAction } from "viem/utils"
15
15
 
16
- // https://github.com/pimlicolabs/entrypoint-estimations/blob/main/src/GetSenderAddressHelper.sol
16
+ // https://github.com/pimlicolabs/contracts/blob/80277d0de609e6b5fb4cedeeb1fb9a023caed59f/src/GetSenderAddressHelper.sol
17
17
  const GetSenderAddressHelperByteCode =
18
- "0x6080604052604051610302380380610302833981016040819052610022916101de565b600080836001600160a01b0316639b249f6960e01b8460405160240161004891906102b2565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161008691906102e5565b6000604051808303816000865af19150503d80600081146100c3576040519150601f19603f3d011682016040523d82523d6000602084013e6100c8565b606091505b5091509150600082610148576004825111156100ef5760248201519050806000526014600cf35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b60648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b606482015260840161013f565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101d55781810151838201526020016101bd565b50506000910152565b600080604083850312156101f157600080fd5b82516001600160a01b038116811461020857600080fd5b60208401519092506001600160401b0381111561022457600080fd5b8301601f8101851361023557600080fd5b80516001600160401b0381111561024e5761024e6101a4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561027c5761027c6101a4565b60405281815282820160200187101561029457600080fd5b6102a58260208301602086016101ba565b8093505050509250929050565b60208152600082518060208401526102d18160408501602087016101ba565b601f01601f19169190910160400192915050565b600082516102f78184602087016101ba565b919091019291505056fe"
18
+ "0x60806040526102a28038038091610015826100ae565b6080396040816080019112610093576080516001600160a01b03811681036100935760a0516001600160401b0381116100935782609f82011215610093578060800151610061816100fc565b9361006f60405195866100d9565b81855260a082840101116100935761008e9160a0602086019101610117565b610196565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100d457604052565b610098565b601f909101601f19168101906001600160401b038211908210176100d457604052565b6001600160401b0381116100d457601f01601f191660200190565b60005b83811061012a5750506000910152565b818101518382015260200161011a565b6040916020825261015a8151809281602086015260208686019101610117565b601f01601f1916010190565b3d15610191573d90610177826100fc565b9161018560405193846100d9565b82523d6000602084013e565b606090565b600091908291826040516101cd816101bf6020820195639b249f6960e01b87526024830161013a565b03601f1981018352826100d9565b51925af16101d9610166565b906102485760048151116000146101f7576024015160005260206000f35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b6064820152608490fdfe"
19
19
 
20
20
  const GetSenderAddressHelperAbi = [
21
21
  {
@@ -125,5 +125,5 @@ export const getSenderAddress = async (
125
125
  throw new Error("Failed to get sender address")
126
126
  }
127
127
 
128
- return getAddress(data)
128
+ return decodeAbiParameters([{ type: "address" }], data)[0]
129
129
  }
@@ -4,11 +4,20 @@ import {
4
4
  type GetCredentialsReturnType,
5
5
  getCredentials
6
6
  } from "../../actions/passkeyServer/getCredentials.js"
7
+ import {
8
+ type StartAuthenticationReturnType,
9
+ startAuthentication
10
+ } from "../../actions/passkeyServer/startAuthentication.js"
7
11
  import {
8
12
  type StartRegistrationParameters,
9
13
  type StartRegistrationReturnType,
10
14
  startRegistration
11
15
  } from "../../actions/passkeyServer/startRegistration.js"
16
+ import {
17
+ type VerifyAuthenticationParameters,
18
+ type VerifyAuthenticationReturnType,
19
+ verifyAuthentication
20
+ } from "../../actions/passkeyServer/verifyAuthentication.js"
12
21
  import {
13
22
  type VerifyRegistrationParameters,
14
23
  type VerifyRegistrationReturnType,
@@ -23,6 +32,10 @@ export type PasskeyServerActions = {
23
32
  verifyRegistration: (
24
33
  args: VerifyRegistrationParameters
25
34
  ) => Promise<VerifyRegistrationReturnType>
35
+ startAuthentication: () => Promise<StartAuthenticationReturnType>
36
+ verifyAuthentication: (
37
+ args: VerifyAuthenticationParameters
38
+ ) => Promise<VerifyAuthenticationReturnType>
26
39
  getCredentials: (
27
40
  args: GetCredentialsParameters
28
41
  ) => Promise<GetCredentialsReturnType>
@@ -38,5 +51,7 @@ export const passkeyServerActions = (
38
51
  ): PasskeyServerActions => ({
39
52
  startRegistration: (args) => startRegistration(client, args),
40
53
  verifyRegistration: (args) => verifyRegistration(client, args),
41
- getCredentials: (args) => getCredentials(client, args)
54
+ getCredentials: (args) => getCredentials(client, args),
55
+ startAuthentication: () => startAuthentication(client),
56
+ verifyAuthentication: (args) => verifyAuthentication(client, args)
42
57
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "permissionless",
3
- "version": "0.2.38",
3
+ "version": "0.2.40",
4
4
  "author": "Pimlico",
5
5
  "homepage": "https://docs.pimlico.io/permissionless",
6
6
  "repository": "github:pimlicolabs/permissionless.js",
@@ -1,6 +1,17 @@
1
1
  import type { Hex } from "viem"
2
2
 
3
3
  export type PasskeyServerRpcSchema = [
4
+ {
5
+ Method: "pks_startAuthentication"
6
+ Parameters: []
7
+ ReturnType: {
8
+ challenge: string
9
+ rpId: string
10
+ timeout?: number
11
+ userVerification?: "required" | "preferred" | "discouraged"
12
+ uuid: string
13
+ }
14
+ },
4
15
  {
5
16
  Method: "pks_startRegistration"
6
17
  Parameters: [context: unknown]
@@ -71,6 +82,36 @@ export type PasskeyServerRpcSchema = [
71
82
  publicKey: Hex
72
83
  }
73
84
  },
85
+ {
86
+ Method: "pks_verifyAuthentication"
87
+ Parameters: [
88
+ {
89
+ id: string
90
+ rawId: string
91
+ response: {
92
+ clientDataJSON: string
93
+ authenticatorData: string
94
+ signature: string
95
+ userHandle?: string
96
+ }
97
+ authenticatorAttachment: "cross-platform" | "platform"
98
+ clientExtensionResults: {
99
+ appid?: boolean
100
+ credProps?: {
101
+ rk?: boolean
102
+ }
103
+ hmacCreateSecret?: boolean
104
+ }
105
+ type: "public-key"
106
+ },
107
+ context: unknown
108
+ ]
109
+ ReturnType: {
110
+ success: boolean
111
+ id: string
112
+ publicKey: Hex
113
+ }
114
+ },
74
115
  {
75
116
  Method: "pks_getCredentials"
76
117
  Parameters: [context: unknown]