@zerodev/permissions 5.3.1 → 5.3.2-alpha-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/deserializePermissionAccount.js.map +1 -1
- package/_cjs/signers/index.js +3 -3
- package/_cjs/signers/index.js.map +1 -1
- package/_cjs/signers/toWebAuthnSigner.js +60 -74
- package/_cjs/signers/toWebAuthnSigner.js.map +1 -1
- package/_esm/deserializePermissionAccount.js.map +1 -1
- package/_esm/signers/index.js +1 -1
- package/_esm/signers/index.js.map +1 -1
- package/_esm/signers/toWebAuthnSigner.js +72 -88
- package/_esm/signers/toWebAuthnSigner.js.map +1 -1
- package/_types/deserializePermissionAccount.d.ts.map +1 -1
- package/_types/signers/index.d.ts +1 -1
- package/_types/signers/index.d.ts.map +1 -1
- package/_types/signers/toWebAuthnSigner.d.ts +2 -3
- package/_types/signers/toWebAuthnSigner.d.ts.map +1 -1
- package/deserializePermissionAccount.ts +4 -1
- package/package.json +2 -1
- package/signers/index.ts +1 -1
- package/signers/toWebAuthnSigner.ts +99 -115
- package/_cjs/signers/toWebAuthnKey.js +0 -101
- package/_cjs/signers/toWebAuthnKey.js.map +0 -1
- package/_cjs/signers/webAuthnUtils.js +0 -45
- package/_cjs/signers/webAuthnUtils.js.map +0 -1
- package/_esm/signers/toWebAuthnKey.js +0 -110
- package/_esm/signers/toWebAuthnKey.js.map +0 -1
- package/_esm/signers/webAuthnUtils.js +0 -41
- package/_esm/signers/webAuthnUtils.js.map +0 -1
- package/_types/signers/toWebAuthnKey.d.ts +0 -17
- package/_types/signers/toWebAuthnKey.d.ts.map +0 -1
- package/_types/signers/webAuthnUtils.d.ts +0 -13
- package/_types/signers/webAuthnUtils.d.ts.map +0 -1
- package/signers/toWebAuthnKey.ts +0 -163
- package/signers/webAuthnUtils.ts +0 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AACrB,oDAA6D;AAM7D,mDAAqD;
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"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"}
|
package/_cjs/signers/index.js
CHANGED
|
@@ -5,9 +5,9 @@ var toECDSASigner_js_1 = require("./toECDSASigner.js");
|
|
|
5
5
|
Object.defineProperty(exports, "toECDSASigner", { enumerable: true, get: function () { return toECDSASigner_js_1.toECDSASigner; } });
|
|
6
6
|
var toWebAuthnSigner_js_1 = require("./toWebAuthnSigner.js");
|
|
7
7
|
Object.defineProperty(exports, "toWebAuthnSigner", { enumerable: true, get: function () { return toWebAuthnSigner_js_1.toWebAuthnSigner; } });
|
|
8
|
-
var
|
|
9
|
-
Object.defineProperty(exports, "WebAuthnMode", { enumerable: true, get: function () { return
|
|
10
|
-
Object.defineProperty(exports, "toWebAuthnKey", { enumerable: true, get: function () { return
|
|
8
|
+
var webauthn_key_1 = require("@zerodev/webauthn-key");
|
|
9
|
+
Object.defineProperty(exports, "WebAuthnMode", { enumerable: true, get: function () { return webauthn_key_1.WebAuthnMode; } });
|
|
10
|
+
Object.defineProperty(exports, "toWebAuthnKey", { enumerable: true, get: function () { return webauthn_key_1.toWebAuthnKey; } });
|
|
11
11
|
var toSignerId_js_1 = require("./utils/toSignerId.js");
|
|
12
12
|
Object.defineProperty(exports, "toSignerId", { enumerable: true, get: function () { return toSignerId_js_1.toSignerId; } });
|
|
13
13
|
var toEmptyECDSASigner_js_1 = require("./toEmptyECDSASigner.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":";;;AAAA,uDAG2B;AAFvB,iHAAA,aAAa,OAAA;AAGjB,6DAG8B;AAF1B,uHAAA,gBAAgB,OAAA;AAGpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":";;;AAAA,uDAG2B;AAFvB,iHAAA,aAAa,OAAA;AAGjB,6DAG8B;AAF1B,uHAAA,gBAAgB,OAAA;AAGpB,sDAAmE;AAA1D,4GAAA,YAAY,OAAA;AAAE,6GAAA,aAAa,OAAA;AACpC,uDAAkD;AAAzC,2GAAA,UAAU,OAAA;AACnB,iEAA4D;AAAnD,2HAAA,kBAAkB,OAAA"}
|
|
@@ -1,88 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toWebAuthnSigner = void 0;
|
|
4
|
+
const webauthn_key_1 = require("@zerodev/webauthn-key");
|
|
4
5
|
const accounts_1 = require("permissionless/accounts");
|
|
5
6
|
const viem_1 = require("viem");
|
|
6
7
|
const viem_2 = require("viem");
|
|
7
8
|
const accounts_2 = require("viem/accounts");
|
|
8
9
|
const actions_1 = require("viem/actions");
|
|
9
10
|
const constants_js_1 = require("../constants.js");
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
const userId = sessionStorage.getItem("userId");
|
|
34
|
-
const signInitiateResponse = await fetch(`${passkeyServerUrl}/sign-initiate`, {
|
|
35
|
-
method: "POST",
|
|
36
|
-
headers: { "Content-Type": "application/json" },
|
|
37
|
-
body: JSON.stringify({ data: formattedMessage, userId }),
|
|
38
|
-
credentials: "include"
|
|
39
|
-
});
|
|
40
|
-
const signInitiateResult = await signInitiateResponse.json();
|
|
41
|
-
const assertionOptions = {
|
|
42
|
-
challenge: signInitiateResult.challenge,
|
|
43
|
-
allowCredentials: signInitiateResult.allowCredentials,
|
|
44
|
-
userVerification: "required"
|
|
45
|
-
};
|
|
46
|
-
const { startAuthentication } = await Promise.resolve().then(() => require("@simplewebauthn/browser"));
|
|
47
|
-
const cred = await startAuthentication(assertionOptions);
|
|
48
|
-
const verifyResponse = await fetch(`${passkeyServerUrl}/sign-verify`, {
|
|
49
|
-
method: "POST",
|
|
50
|
-
headers: { "Content-Type": "application/json" },
|
|
51
|
-
body: JSON.stringify({ cred, userId }),
|
|
52
|
-
credentials: "include"
|
|
53
|
-
});
|
|
54
|
-
const verifyResult = await verifyResponse.json();
|
|
55
|
-
if (!verifyResult.success) {
|
|
56
|
-
throw new Error("Signature not verified");
|
|
57
|
-
}
|
|
58
|
-
const authenticatorData = verifyResult.authenticatorData;
|
|
59
|
-
const authenticatorDataHex = (0, webAuthnUtils_js_1.uint8ArrayToHexString)((0, webAuthnUtils_js_1.b64ToBytes)(authenticatorData));
|
|
60
|
-
const clientDataJSON = atob(cred.response.clientDataJSON);
|
|
61
|
-
const { beforeType } = (0, webAuthnUtils_js_1.findQuoteIndices)(clientDataJSON);
|
|
62
|
-
const signature = verifyResult.signature;
|
|
63
|
-
const signatureHex = (0, webAuthnUtils_js_1.uint8ArrayToHexString)((0, webAuthnUtils_js_1.b64ToBytes)(signature));
|
|
64
|
-
const { r, s } = (0, webAuthnUtils_js_1.parseAndNormalizeSig)(signatureHex);
|
|
65
|
-
const encodedSignature = (0, viem_2.encodeAbiParameters)([
|
|
66
|
-
{ name: "authenticatorData", type: "bytes" },
|
|
67
|
-
{ name: "clientDataJSON", type: "string" },
|
|
68
|
-
{ name: "responseTypeLocation", type: "uint256" },
|
|
69
|
-
{ name: "r", type: "uint256" },
|
|
70
|
-
{ name: "s", type: "uint256" },
|
|
71
|
-
{ name: "usePrecompiled", type: "bool" }
|
|
72
|
-
], [
|
|
73
|
-
authenticatorDataHex,
|
|
74
|
-
clientDataJSON,
|
|
75
|
-
beforeType,
|
|
76
|
-
BigInt(r),
|
|
77
|
-
BigInt(s),
|
|
78
|
-
(0, webAuthnUtils_js_1.isRIP7212SupportedNetwork)(chainId)
|
|
79
|
-
]);
|
|
80
|
-
return encodedSignature;
|
|
11
|
+
const signMessageUsingWebAuthn = async (message, chainId, allowCredentials) => {
|
|
12
|
+
let messageContent;
|
|
13
|
+
if (typeof message === "string") {
|
|
14
|
+
messageContent = message;
|
|
15
|
+
}
|
|
16
|
+
else if ("raw" in message && typeof message.raw === "string") {
|
|
17
|
+
messageContent = message.raw;
|
|
18
|
+
}
|
|
19
|
+
else if ("raw" in message && message.raw instanceof Uint8Array) {
|
|
20
|
+
messageContent = message.raw.toString();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
throw new Error("Unsupported message format");
|
|
24
|
+
}
|
|
25
|
+
const formattedMessage = messageContent.startsWith("0x")
|
|
26
|
+
? messageContent.slice(2)
|
|
27
|
+
: messageContent;
|
|
28
|
+
const challenge = (0, webauthn_key_1.base64FromUint8Array)((0, webauthn_key_1.hexStringToUint8Array)(formattedMessage), true);
|
|
29
|
+
const assertionOptions = {
|
|
30
|
+
challenge,
|
|
31
|
+
allowCredentials,
|
|
32
|
+
userVerification: "required"
|
|
81
33
|
};
|
|
34
|
+
const { startAuthentication } = await Promise.resolve().then(() => require("@simplewebauthn/browser"));
|
|
35
|
+
const cred = await startAuthentication(assertionOptions);
|
|
36
|
+
const { authenticatorData } = cred.response;
|
|
37
|
+
const authenticatorDataHex = (0, webauthn_key_1.uint8ArrayToHexString)((0, webauthn_key_1.b64ToBytes)(authenticatorData));
|
|
38
|
+
const clientDataJSON = atob(cred.response.clientDataJSON);
|
|
39
|
+
const { beforeType } = (0, webauthn_key_1.findQuoteIndices)(clientDataJSON);
|
|
40
|
+
const { signature } = cred.response;
|
|
41
|
+
const signatureHex = (0, webauthn_key_1.uint8ArrayToHexString)((0, webauthn_key_1.b64ToBytes)(signature));
|
|
42
|
+
const { r, s } = (0, webauthn_key_1.parseAndNormalizeSig)(signatureHex);
|
|
43
|
+
const encodedSignature = (0, viem_2.encodeAbiParameters)([
|
|
44
|
+
{ name: "authenticatorData", type: "bytes" },
|
|
45
|
+
{ name: "clientDataJSON", type: "string" },
|
|
46
|
+
{ name: "responseTypeLocation", type: "uint256" },
|
|
47
|
+
{ name: "r", type: "uint256" },
|
|
48
|
+
{ name: "s", type: "uint256" },
|
|
49
|
+
{ name: "usePrecompiled", type: "bool" }
|
|
50
|
+
], [
|
|
51
|
+
authenticatorDataHex,
|
|
52
|
+
clientDataJSON,
|
|
53
|
+
beforeType,
|
|
54
|
+
BigInt(r),
|
|
55
|
+
BigInt(s),
|
|
56
|
+
(0, webauthn_key_1.isRIP7212SupportedNetwork)(chainId)
|
|
57
|
+
]);
|
|
58
|
+
return encodedSignature;
|
|
59
|
+
};
|
|
60
|
+
const toWebAuthnSigner = async (client, { signerContractAddress = constants_js_1.WEBAUTHN_SIGNER_CONTRACT, webAuthnKey }) => {
|
|
61
|
+
const chainId = await (0, actions_1.getChainId)(client);
|
|
82
62
|
const account = (0, accounts_2.toAccount)({
|
|
83
63
|
address: "0x0000000000000000000000000000000000000000",
|
|
84
64
|
async signMessage({ message }) {
|
|
85
|
-
return signMessageUsingWebAuthn(message
|
|
65
|
+
return signMessageUsingWebAuthn(message, chainId, [
|
|
66
|
+
{ id: webAuthnKey.authenticatorId, type: "public-key" }
|
|
67
|
+
]);
|
|
86
68
|
},
|
|
87
69
|
async signTransaction(_, __) {
|
|
88
70
|
throw new accounts_1.SignTransactionNotSupportedBySmartAccount();
|
|
@@ -95,7 +77,11 @@ const toWebAuthnSigner = async (client, { signerContractAddress = constants_js_1
|
|
|
95
77
|
};
|
|
96
78
|
(0, viem_1.validateTypedData)({ domain, message, primaryType, types });
|
|
97
79
|
const hash = (0, viem_1.hashTypedData)(typedData);
|
|
98
|
-
|
|
80
|
+
const signature = await (0, actions_1.signMessage)(client, {
|
|
81
|
+
account,
|
|
82
|
+
message: hash
|
|
83
|
+
});
|
|
84
|
+
return signature;
|
|
99
85
|
}
|
|
100
86
|
});
|
|
101
87
|
return {
|
|
@@ -127,7 +113,7 @@ const toWebAuthnSigner = async (client, { signerContractAddress = constants_js_1
|
|
|
127
113
|
{ name: "usePrecompiled", type: "bool" }
|
|
128
114
|
], [
|
|
129
115
|
"0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000",
|
|
130
|
-
'{"type":"webauthn.get","challenge":"tbxXNFS9X_4Byr1cMwqKrIGB-_30a0QhZ6y7ucM0BOE","origin":"http://localhost:3000","crossOrigin":false}',
|
|
116
|
+
'{"type":"webauthn.get","challenge":"tbxXNFS9X_4Byr1cMwqKrIGB-_30a0QhZ6y7ucM0BOE","origin":"http://localhost:3000","crossOrigin":false, "other_keys_can_be_added_here":"do not compare clientDataJSON against a template. See https://goo.gl/yabPex"}',
|
|
131
117
|
1n,
|
|
132
118
|
44941127272049826721201904734628716258498742255959991581049806490182030242267n,
|
|
133
119
|
9910254599581058084911561569808925251374718953855182016200087235935345969636n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toWebAuthnSigner.js","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":";;;AAEA,sDAAmF;AACnF,+BAUa;AACb,+BAAgE;AAChE,4CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"toWebAuthnSigner.js","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAM7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"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"}
|
package/_esm/signers/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { toECDSASigner } from "./toECDSASigner.js";
|
|
2
2
|
export { toWebAuthnSigner } from "./toWebAuthnSigner.js";
|
|
3
|
-
export { WebAuthnMode, toWebAuthnKey } from "
|
|
3
|
+
export { WebAuthnMode, toWebAuthnKey } from "@zerodev/webauthn-key";
|
|
4
4
|
export { toSignerId } from "./utils/toSignerId.js";
|
|
5
5
|
export { toEmptyECDSASigner } from "./toEmptyECDSASigner.js";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,99 +1,79 @@
|
|
|
1
|
+
import { b64ToBytes, base64FromUint8Array, findQuoteIndices, hexStringToUint8Array, isRIP7212SupportedNetwork, parseAndNormalizeSig, uint8ArrayToHexString } from "@zerodev/webauthn-key";
|
|
1
2
|
import { SignTransactionNotSupportedBySmartAccount } from "permissionless/accounts";
|
|
2
3
|
import { getTypesForEIP712Domain, hashTypedData, validateTypedData } from "viem";
|
|
3
4
|
import { encodeAbiParameters } from "viem";
|
|
4
5
|
import { toAccount } from "viem/accounts";
|
|
5
|
-
import { getChainId } from "viem/actions";
|
|
6
|
+
import { getChainId, signMessage } from "viem/actions";
|
|
6
7
|
import { WEBAUTHN_SIGNER_CONTRACT } from "../constants.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const userId = sessionStorage.getItem("userId");
|
|
35
|
-
// initiate signing
|
|
36
|
-
const signInitiateResponse = await fetch(`${passkeyServerUrl}/sign-initiate`, {
|
|
37
|
-
method: "POST",
|
|
38
|
-
headers: { "Content-Type": "application/json" },
|
|
39
|
-
body: JSON.stringify({ data: formattedMessage, userId }),
|
|
40
|
-
credentials: "include"
|
|
41
|
-
});
|
|
42
|
-
const signInitiateResult = await signInitiateResponse.json();
|
|
43
|
-
// prepare assertion options
|
|
44
|
-
const assertionOptions = {
|
|
45
|
-
challenge: signInitiateResult.challenge,
|
|
46
|
-
allowCredentials: signInitiateResult.allowCredentials,
|
|
47
|
-
userVerification: "required"
|
|
48
|
-
};
|
|
49
|
-
// start authentication (signing)
|
|
50
|
-
const { startAuthentication } = await import("@simplewebauthn/browser");
|
|
51
|
-
const cred = await startAuthentication(assertionOptions);
|
|
52
|
-
// verify signature from server
|
|
53
|
-
const verifyResponse = await fetch(`${passkeyServerUrl}/sign-verify`, {
|
|
54
|
-
method: "POST",
|
|
55
|
-
headers: { "Content-Type": "application/json" },
|
|
56
|
-
body: JSON.stringify({ cred, userId }),
|
|
57
|
-
credentials: "include"
|
|
58
|
-
});
|
|
59
|
-
const verifyResult = await verifyResponse.json();
|
|
60
|
-
if (!verifyResult.success) {
|
|
61
|
-
throw new Error("Signature not verified");
|
|
62
|
-
}
|
|
63
|
-
// get authenticator data
|
|
64
|
-
const authenticatorData = verifyResult.authenticatorData;
|
|
65
|
-
const authenticatorDataHex = uint8ArrayToHexString(b64ToBytes(authenticatorData));
|
|
66
|
-
// get client data JSON
|
|
67
|
-
const clientDataJSON = atob(cred.response.clientDataJSON);
|
|
68
|
-
// get challenge and response type location
|
|
69
|
-
const { beforeType } = findQuoteIndices(clientDataJSON);
|
|
70
|
-
// get signature r,s
|
|
71
|
-
const signature = verifyResult.signature;
|
|
72
|
-
const signatureHex = uint8ArrayToHexString(b64ToBytes(signature));
|
|
73
|
-
const { r, s } = parseAndNormalizeSig(signatureHex);
|
|
74
|
-
// encode signature
|
|
75
|
-
const encodedSignature = encodeAbiParameters([
|
|
76
|
-
{ name: "authenticatorData", type: "bytes" },
|
|
77
|
-
{ name: "clientDataJSON", type: "string" },
|
|
78
|
-
{ name: "responseTypeLocation", type: "uint256" },
|
|
79
|
-
{ name: "r", type: "uint256" },
|
|
80
|
-
{ name: "s", type: "uint256" },
|
|
81
|
-
{ name: "usePrecompiled", type: "bool" }
|
|
82
|
-
], [
|
|
83
|
-
authenticatorDataHex,
|
|
84
|
-
clientDataJSON,
|
|
85
|
-
beforeType,
|
|
86
|
-
BigInt(r),
|
|
87
|
-
BigInt(s),
|
|
88
|
-
isRIP7212SupportedNetwork(chainId)
|
|
89
|
-
]);
|
|
90
|
-
return encodedSignature;
|
|
8
|
+
const signMessageUsingWebAuthn = async (message, chainId, allowCredentials) => {
|
|
9
|
+
let messageContent;
|
|
10
|
+
if (typeof message === "string") {
|
|
11
|
+
// message is a string
|
|
12
|
+
messageContent = message;
|
|
13
|
+
}
|
|
14
|
+
else if ("raw" in message && typeof message.raw === "string") {
|
|
15
|
+
// message.raw is a Hex string
|
|
16
|
+
messageContent = message.raw;
|
|
17
|
+
}
|
|
18
|
+
else if ("raw" in message && message.raw instanceof Uint8Array) {
|
|
19
|
+
// message.raw is a ByteArray
|
|
20
|
+
messageContent = message.raw.toString();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
throw new Error("Unsupported message format");
|
|
24
|
+
}
|
|
25
|
+
// remove 0x prefix if present
|
|
26
|
+
const formattedMessage = messageContent.startsWith("0x")
|
|
27
|
+
? messageContent.slice(2)
|
|
28
|
+
: messageContent;
|
|
29
|
+
const challenge = base64FromUint8Array(hexStringToUint8Array(formattedMessage), true);
|
|
30
|
+
// prepare assertion options
|
|
31
|
+
const assertionOptions = {
|
|
32
|
+
challenge,
|
|
33
|
+
allowCredentials,
|
|
34
|
+
userVerification: "required"
|
|
91
35
|
};
|
|
36
|
+
// start authentication (signing)
|
|
37
|
+
const { startAuthentication } = await import("@simplewebauthn/browser");
|
|
38
|
+
const cred = await startAuthentication(assertionOptions);
|
|
39
|
+
// get authenticator data
|
|
40
|
+
const { authenticatorData } = cred.response;
|
|
41
|
+
const authenticatorDataHex = uint8ArrayToHexString(b64ToBytes(authenticatorData));
|
|
42
|
+
// get client data JSON
|
|
43
|
+
const clientDataJSON = atob(cred.response.clientDataJSON);
|
|
44
|
+
// get challenge and response type location
|
|
45
|
+
const { beforeType } = findQuoteIndices(clientDataJSON);
|
|
46
|
+
// get signature r,s
|
|
47
|
+
const { signature } = cred.response;
|
|
48
|
+
const signatureHex = uint8ArrayToHexString(b64ToBytes(signature));
|
|
49
|
+
const { r, s } = parseAndNormalizeSig(signatureHex);
|
|
50
|
+
// encode signature
|
|
51
|
+
const encodedSignature = encodeAbiParameters([
|
|
52
|
+
{ name: "authenticatorData", type: "bytes" },
|
|
53
|
+
{ name: "clientDataJSON", type: "string" },
|
|
54
|
+
{ name: "responseTypeLocation", type: "uint256" },
|
|
55
|
+
{ name: "r", type: "uint256" },
|
|
56
|
+
{ name: "s", type: "uint256" },
|
|
57
|
+
{ name: "usePrecompiled", type: "bool" }
|
|
58
|
+
], [
|
|
59
|
+
authenticatorDataHex,
|
|
60
|
+
clientDataJSON,
|
|
61
|
+
beforeType,
|
|
62
|
+
BigInt(r),
|
|
63
|
+
BigInt(s),
|
|
64
|
+
isRIP7212SupportedNetwork(chainId)
|
|
65
|
+
]);
|
|
66
|
+
return encodedSignature;
|
|
67
|
+
};
|
|
68
|
+
export const toWebAuthnSigner = async (client, { signerContractAddress = WEBAUTHN_SIGNER_CONTRACT, webAuthnKey }) => {
|
|
69
|
+
const chainId = await getChainId(client);
|
|
92
70
|
const account = toAccount({
|
|
93
71
|
// note that this address will be overwritten by actual address
|
|
94
72
|
address: "0x0000000000000000000000000000000000000000",
|
|
95
73
|
async signMessage({ message }) {
|
|
96
|
-
return signMessageUsingWebAuthn(message
|
|
74
|
+
return signMessageUsingWebAuthn(message, chainId, [
|
|
75
|
+
{ id: webAuthnKey.authenticatorId, type: "public-key" }
|
|
76
|
+
]);
|
|
97
77
|
},
|
|
98
78
|
async signTransaction(_, __) {
|
|
99
79
|
throw new SignTransactionNotSupportedBySmartAccount();
|
|
@@ -106,7 +86,11 @@ export const toWebAuthnSigner = async (client, { signerContractAddress = WEBAUTH
|
|
|
106
86
|
};
|
|
107
87
|
validateTypedData({ domain, message, primaryType, types });
|
|
108
88
|
const hash = hashTypedData(typedData);
|
|
109
|
-
|
|
89
|
+
const signature = await signMessage(client, {
|
|
90
|
+
account,
|
|
91
|
+
message: hash
|
|
92
|
+
});
|
|
93
|
+
return signature;
|
|
110
94
|
}
|
|
111
95
|
});
|
|
112
96
|
return {
|
|
@@ -138,7 +122,7 @@ export const toWebAuthnSigner = async (client, { signerContractAddress = WEBAUTH
|
|
|
138
122
|
{ name: "usePrecompiled", type: "bool" }
|
|
139
123
|
], [
|
|
140
124
|
"0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000",
|
|
141
|
-
'{"type":"webauthn.get","challenge":"tbxXNFS9X_4Byr1cMwqKrIGB-_30a0QhZ6y7ucM0BOE","origin":"http://localhost:3000","crossOrigin":false}',
|
|
125
|
+
'{"type":"webauthn.get","challenge":"tbxXNFS9X_4Byr1cMwqKrIGB-_30a0QhZ6y7ucM0BOE","origin":"http://localhost:3000","crossOrigin":false, "other_keys_can_be_added_here":"do not compare clientDataJSON against a template. See https://goo.gl/yabPex"}',
|
|
142
126
|
1n,
|
|
143
127
|
44941127272049826721201904734628716258498742255959991581049806490182030242267n,
|
|
144
128
|
9910254599581058084911561569808925251374718953855182016200087235935345969636n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toWebAuthnSigner.js","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yCAAyC,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAOH,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACpB,MAAM,MAAM,CAAA;AACb,OAAO,EAAwB,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"toWebAuthnSigner.js","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACxB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,yCAAyC,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAOH,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACpB,MAAM,MAAM,CAAA;AACb,OAAO,EAAwB,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAO1D,MAAM,wBAAwB,GAAG,KAAK,EAClC,OAAwB,EACxB,OAAe,EACf,gBAA4E,EAC9E,EAAE;IACA,IAAI,cAAsB,CAAA;IAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,sBAAsB;QACtB,cAAc,GAAG,OAAO,CAAA;IAC5B,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7D,8BAA8B;QAC9B,cAAc,GAAG,OAAO,CAAC,GAAG,CAAA;IAChC,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,YAAY,UAAU,EAAE,CAAC;QAC/D,6BAA6B;QAC7B,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IACjD,CAAC;IAED,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;QACpD,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,cAAc,CAAA;IAEpB,MAAM,SAAS,GAAG,oBAAoB,CAClC,qBAAqB,CAAC,gBAAgB,CAAC,EACvC,IAAI,CACP,CAAA;IAED,4BAA4B;IAC5B,MAAM,gBAAgB,GAA0C;QAC5D,SAAS;QACT,gBAAgB;QAChB,gBAAgB,EAAE,UAAU;KAC/B,CAAA;IAED,iCAAiC;IACjC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IACvE,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAExD,yBAAyB;IACzB,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC3C,MAAM,oBAAoB,GAAG,qBAAqB,CAC9C,UAAU,CAAC,iBAAiB,CAAC,CAChC,CAAA;IAED,uBAAuB;IACvB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAEzD,2CAA2C;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAA;IAEvD,oBAAoB;IACpB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;IACnC,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IACjE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAEnD,mBAAmB;IACnB,MAAM,gBAAgB,GAAG,mBAAmB,CACxC;QACI,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;QAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1C,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE;QACjD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;KAC3C,EACD;QACI,oBAAoB;QACpB,cAAc;QACd,UAAU;QACV,MAAM,CAAC,CAAC,CAAC;QACT,MAAM,CAAC,CAAC,CAAC;QACT,yBAAyB,CAAC,OAAO,CAAC;KACrC,CACJ,CAAA;IACD,OAAO,gBAAgB,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAIjC,MAA6C,EAC7C,EACI,qBAAqB,GAAG,wBAAwB,EAChD,WAAW,EACe,EACR,EAAE;IACxB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAA;IAExC,MAAM,OAAO,GAAiB,SAAS,CAAC;QACpC,+DAA+D;QAC/D,OAAO,EAAE,4CAA4C;QACrD,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YACzB,OAAO,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE;gBAC9C,EAAE,EAAE,EAAE,WAAW,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE;aAC1D,CAAC,CAAA;QACN,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,IAAI,yCAAyC,EAAE,CAAA;QACzD,CAAC;QACD,KAAK,CAAC,aAAa,CAKjB,SAAwD;YACtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAClC,SAA+C,CAAA;YAEnD,MAAM,KAAK,GAAG;gBACV,YAAY,EAAE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;gBACjD,GAAG,SAAS,CAAC,KAAK;aACrB,CAAA;YAED,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;YAE1D,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;gBACxC,OAAO;gBACP,OAAO,EAAE,IAAI;aAChB,CAAC,CAAA;YACF,OAAO,SAAS,CAAA;QACpB,CAAC;KACJ,CAAC,CAAA;IAEF,OAAO;QACH,OAAO;QACP,qBAAqB;QACrB,aAAa,EAAE,GAAG,EAAE;YAChB,OAAO,mBAAmB,CACtB;gBACI;oBACI,UAAU,EAAE;wBACR,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;wBACpC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;qBACvC;oBACD,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,OAAO;iBAChB;gBACD,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE;aACnD,EACD;gBACI,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE;gBACxD,WAAW,CAAC,mBAAmB;aAClC,CACJ,CAAA;QACL,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE;YACpB,OAAO,mBAAmB,CACtB;gBACI,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1C,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9B,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;aAC3C,EACD;gBACI,8EAA8E;gBAC9E,sPAAsP;gBACtP,EAAE;gBACF,8EAA8E;gBAC9E,6EAA6E;gBAC7E,KAAK;aACR,CACJ,CAAA;QACL,CAAC;KACJ,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAczD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C,eAAO,MAAM,4BAA4B,6RAQL,MAAM,kBACtB,aAAa,uFAqDhC,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAkB,MAAM,oBAiB1D,CAAA;AAED,eAAO,MAAM,wBAAwB,aACvB,GAAG,iBACE,mBAAmB;;;CAqCrC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { toECDSASigner, type ECDSAModularSignerParams } from "./toECDSASigner.js";
|
|
2
2
|
export { toWebAuthnSigner, type WebAuthnModularSignerParams } from "./toWebAuthnSigner.js";
|
|
3
|
-
export { WebAuthnMode, toWebAuthnKey } from "
|
|
3
|
+
export { WebAuthnMode, toWebAuthnKey } from "@zerodev/webauthn-key";
|
|
4
4
|
export { toSignerId } from "./utils/toSignerId.js";
|
|
5
5
|
export { toEmptyECDSASigner } from "./toEmptyECDSASigner.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,KAAK,wBAAwB,EAChC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAChB,KAAK,2BAA2B,EACnC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,KAAK,wBAAwB,EAChC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAChB,KAAK,2BAA2B,EACnC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import type { WebAuthnKey } from "@zerodev/webauthn-key";
|
|
1
2
|
import { type Chain, type Client, type Transport } from "viem";
|
|
2
3
|
import type { ModularSigner, ModularSignerParams } from "../types.js";
|
|
3
|
-
import type { WebAuthnKey } from "./toWebAuthnKey.js";
|
|
4
4
|
export type WebAuthnModularSignerParams = ModularSignerParams & {
|
|
5
|
-
passkeyServerUrl: string;
|
|
6
5
|
webAuthnKey: WebAuthnKey;
|
|
7
6
|
};
|
|
8
|
-
export declare const toWebAuthnSigner: <TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined>(client: Client<TTransport, TChain, undefined>, { signerContractAddress,
|
|
7
|
+
export declare const toWebAuthnSigner: <TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined>(client: Client<TTransport, TChain, undefined>, { signerContractAddress, webAuthnKey }: WebAuthnModularSignerParams) => Promise<ModularSigner>;
|
|
9
8
|
//# sourceMappingURL=toWebAuthnSigner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toWebAuthnSigner.d.ts","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toWebAuthnSigner.d.ts","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAYxD,OAAO,EACH,KAAK,KAAK,EACV,KAAK,MAAM,EAGX,KAAK,SAAS,EAKjB,MAAM,MAAM,CAAA;AAKb,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAErE,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG;IAC5D,WAAW,EAAE,WAAW,CAAA;CAC3B,CAAA;AAiFD,eAAO,MAAM,gBAAgB,0LAQtB,2BAA2B,KAC/B,QAAQ,aAAa,CAkFvB,CAAA"}
|
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
ValidatorInitData
|
|
12
12
|
} from "@zerodev/sdk/types"
|
|
13
13
|
import { getEntryPointVersion } from "permissionless"
|
|
14
|
+
import type { SmartAccountSigner } from "permissionless/accounts"
|
|
14
15
|
import type { EntryPoint } from "permissionless/types"
|
|
15
16
|
import type { Chain, Client, Hex, Transport } from "viem"
|
|
16
17
|
import { decodeFunctionData } from "viem"
|
|
@@ -52,7 +53,9 @@ export const deserializePermissionAccount = async <
|
|
|
52
53
|
let signer: ModularSigner
|
|
53
54
|
if (params.privateKey)
|
|
54
55
|
signer = toECDSASigner({
|
|
55
|
-
signer: privateKeyToAccount(
|
|
56
|
+
signer: privateKeyToAccount(
|
|
57
|
+
params.privateKey
|
|
58
|
+
) as SmartAccountSigner<"privateKey", `0x${string}`>
|
|
56
59
|
})
|
|
57
60
|
else if (modularSigner) signer = modularSigner
|
|
58
61
|
else throw new Error("No signer or serialized sessionKey provided")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerodev/permissions",
|
|
3
|
-
"version": "5.3.1",
|
|
3
|
+
"version": "5.3.2-alpha-1",
|
|
4
4
|
"author": "ZeroDev",
|
|
5
5
|
"main": "./_cjs/index.js",
|
|
6
6
|
"module": "./_esm/index.js",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"viem": "^2.16.3",
|
|
60
60
|
"@zerodev/sdk": "^5.2.13",
|
|
61
|
+
"@zerodev/webauthn-key": "^5.3.0",
|
|
61
62
|
"permissionless": "^0.1.18"
|
|
62
63
|
}
|
|
63
64
|
}
|
package/signers/index.ts
CHANGED
|
@@ -6,6 +6,6 @@ export {
|
|
|
6
6
|
toWebAuthnSigner,
|
|
7
7
|
type WebAuthnModularSignerParams
|
|
8
8
|
} from "./toWebAuthnSigner.js"
|
|
9
|
-
export { WebAuthnMode, toWebAuthnKey } from "
|
|
9
|
+
export { WebAuthnMode, toWebAuthnKey } from "@zerodev/webauthn-key"
|
|
10
10
|
export { toSignerId } from "./utils/toSignerId.js"
|
|
11
11
|
export { toEmptyECDSASigner } from "./toEmptyECDSASigner.js"
|