@charterlabs/rhinestone-sdk 0.3.9 → 0.4.2
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/README.md +89 -1
- package/dist/src/accounts/index.d.ts +6 -3
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/index.js +8 -2
- package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -1
- package/dist/src/accounts/json-rpc/providers.js +3 -3
- package/dist/src/accounts/safe.d.ts.map +1 -1
- package/dist/src/accounts/safe.js +4 -1
- package/dist/src/accounts/signing/common.d.ts +10 -5
- package/dist/src/accounts/signing/common.d.ts.map +1 -1
- package/dist/src/accounts/signing/common.js +21 -7
- package/dist/src/accounts/signing/message.d.ts +3 -1
- package/dist/src/accounts/signing/message.d.ts.map +1 -1
- package/dist/src/accounts/signing/mfa-webauthn.d.ts +30 -0
- package/dist/src/accounts/signing/mfa-webauthn.d.ts.map +1 -0
- package/dist/src/accounts/signing/mfa-webauthn.js +119 -0
- package/dist/src/accounts/startale.js +1 -1
- package/dist/src/accounts/utils.d.ts +1 -1
- package/dist/src/accounts/utils.d.ts.map +1 -1
- package/dist/src/actions/mfa.d.ts +6 -2
- package/dist/src/actions/mfa.d.ts.map +1 -1
- package/dist/src/actions/mfa.js +14 -4
- package/dist/src/auth/provider.d.ts +7 -0
- package/dist/src/auth/provider.d.ts.map +1 -0
- package/dist/src/auth/provider.js +41 -0
- package/dist/src/errors/index.d.ts +2 -2
- package/dist/src/errors/index.d.ts.map +1 -1
- package/dist/src/errors/index.js +2 -1
- package/dist/src/execution/error.d.ts +9 -1
- package/dist/src/execution/error.d.ts.map +1 -1
- package/dist/src/execution/error.js +12 -1
- package/dist/src/execution/index.d.ts +6 -4
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +17 -13
- package/dist/src/execution/utils.d.ts +17 -6
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +193 -43
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +13 -11
- package/dist/src/jwt-server/digest.d.ts +11 -0
- package/dist/src/jwt-server/digest.d.ts.map +1 -0
- package/dist/src/jwt-server/digest.js +22 -0
- package/dist/src/jwt-server/express.d.ts +16 -0
- package/dist/src/jwt-server/express.d.ts.map +1 -0
- package/dist/src/jwt-server/express.js +24 -0
- package/dist/src/jwt-server/handlers.d.ts +10 -0
- package/dist/src/jwt-server/handlers.d.ts.map +1 -0
- package/dist/src/jwt-server/handlers.js +41 -0
- package/dist/src/jwt-server/index.d.ts +8 -0
- package/dist/src/jwt-server/index.d.ts.map +1 -0
- package/dist/src/jwt-server/index.js +18 -0
- package/dist/src/jwt-server/jcs.d.ts +12 -0
- package/dist/src/jwt-server/jcs.d.ts.map +1 -0
- package/dist/src/jwt-server/jcs.js +60 -0
- package/dist/src/jwt-server/signer.d.ts +18 -0
- package/dist/src/jwt-server/signer.d.ts.map +1 -0
- package/dist/src/jwt-server/signer.js +71 -0
- package/dist/src/jwt-server/sponsorship.d.ts +19 -0
- package/dist/src/jwt-server/sponsorship.d.ts.map +1 -0
- package/dist/src/jwt-server/sponsorship.js +56 -0
- package/dist/src/jwt-server/web.d.ts +4 -0
- package/dist/src/jwt-server/web.d.ts.map +1 -0
- package/dist/src/jwt-server/web.js +27 -0
- package/dist/src/modules/validators/core.d.ts +6 -2
- package/dist/src/modules/validators/core.d.ts.map +1 -1
- package/dist/src/modules/validators/core.js +46 -21
- package/dist/src/modules/validators/index.d.ts +2 -2
- package/dist/src/modules/validators/index.d.ts.map +1 -1
- package/dist/src/modules/validators/index.js +5 -1
- package/dist/src/modules/validators/policies/claim/permit2.d.ts +55 -0
- package/dist/src/modules/validators/policies/claim/permit2.d.ts.map +1 -0
- package/dist/src/modules/validators/policies/claim/permit2.js +239 -0
- package/dist/src/modules/validators/policies/claim/types.d.ts +12 -0
- package/dist/src/modules/validators/policies/claim/types.d.ts.map +1 -0
- package/dist/src/modules/validators/policies/claim/types.js +18 -0
- package/dist/src/modules/validators/smart-sessions.d.ts +22 -7
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +82 -22
- package/dist/src/orchestrator/client.d.ts +9 -4
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +29 -17
- package/dist/src/orchestrator/consts.d.ts +3 -2
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +4 -2
- package/dist/src/orchestrator/index.d.ts +4 -3
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +2 -2
- package/dist/src/orchestrator/registry.d.ts +2 -1
- package/dist/src/orchestrator/registry.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.js +17 -1
- package/dist/src/orchestrator/types.d.ts +6 -1
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/types.d.ts +88 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +3 -9
- package/dist/src/utils/index.d.ts.map +1 -1
- package/package.json +18 -4
- package/dist/src/accounts/index.test.d.ts +0 -2
- package/dist/src/accounts/index.test.d.ts.map +0 -1
- package/dist/src/accounts/index.test.js +0 -33
- package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
- package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
- package/dist/src/accounts/json-rpc/index.test.js +0 -35
- package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
- package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
- package/dist/src/accounts/json-rpc/providers.test.js +0 -43
- package/dist/src/accounts/kernel.test.d.ts +0 -2
- package/dist/src/accounts/kernel.test.d.ts.map +0 -1
- package/dist/src/accounts/kernel.test.js +0 -132
- package/dist/src/accounts/nexus.test.d.ts +0 -2
- package/dist/src/accounts/nexus.test.d.ts.map +0 -1
- package/dist/src/accounts/nexus.test.js +0 -118
- package/dist/src/accounts/safe.test.d.ts +0 -2
- package/dist/src/accounts/safe.test.d.ts.map +0 -1
- package/dist/src/accounts/safe.test.js +0 -118
- package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
- package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
- package/dist/src/accounts/signing/passkeys.test.js +0 -88
- package/dist/src/accounts/startale.test.d.ts +0 -2
- package/dist/src/accounts/startale.test.d.ts.map +0 -1
- package/dist/src/accounts/startale.test.js +0 -189
- package/dist/src/accounts/utils.test.d.ts +0 -2
- package/dist/src/accounts/utils.test.d.ts.map +0 -1
- package/dist/src/accounts/utils.test.js +0 -49
- package/dist/src/actions/ecdsa.test.d.ts +0 -2
- package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
- package/dist/src/actions/ecdsa.test.js +0 -99
- package/dist/src/actions/passkeys.test.d.ts +0 -2
- package/dist/src/actions/passkeys.test.d.ts.map +0 -1
- package/dist/src/actions/passkeys.test.js +0 -54
- package/dist/src/actions/recovery.test.d.ts +0 -2
- package/dist/src/actions/recovery.test.d.ts.map +0 -1
- package/dist/src/actions/recovery.test.js +0 -168
- package/dist/src/execution/utils.test.d.ts +0 -2
- package/dist/src/execution/utils.test.d.ts.map +0 -1
- package/dist/src/execution/utils.test.js +0 -150
- package/dist/src/modules/index.test.d.ts +0 -2
- package/dist/src/modules/index.test.d.ts.map +0 -1
- package/dist/src/modules/index.test.js +0 -81
- package/dist/src/modules/validators/core.test.d.ts +0 -2
- package/dist/src/modules/validators/core.test.d.ts.map +0 -1
- package/dist/src/modules/validators/core.test.js +0 -101
- package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
- package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
- package/dist/src/modules/validators/smart-sessions.test.js +0 -61
- package/dist/src/orchestrator/registry.test.d.ts +0 -2
- package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
- package/dist/src/orchestrator/registry.test.js +0 -154
- package/dist/test/consts.d.ts +0 -10
- package/dist/test/consts.d.ts.map +0 -1
- package/dist/test/consts.js +0 -22
- package/dist/test/utils/utils.d.ts +0 -5
- package/dist/test/utils/utils.d.ts.map +0 -1
- package/dist/test/utils/utils.js +0 -20
package/README.md
CHANGED
|
@@ -31,6 +31,94 @@ npm install viem @rhinestone/sdk
|
|
|
31
31
|
bun install viem @rhinestone/sdk
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
## Authentication
|
|
35
|
+
|
|
36
|
+
The SDK supports two authentication modes: **API key** and **JWT**.
|
|
37
|
+
|
|
38
|
+
### API Key
|
|
39
|
+
|
|
40
|
+
Pass the API key from the [Rhinestone dashboard](https://dashboard.rhinestone.dev):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
const rhinestone = new RhinestoneSDK({
|
|
44
|
+
auth: {
|
|
45
|
+
mode: 'apiKey',
|
|
46
|
+
apiKey: 'your-api-key',
|
|
47
|
+
},
|
|
48
|
+
})
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### JWT (Experimental)
|
|
52
|
+
|
|
53
|
+
JWT authentication uses RS256-signed tokens for fine-grained access control. There are two integration patterns depending on your architecture:
|
|
54
|
+
|
|
55
|
+
#### Client-server (SDK runs in browser/client)
|
|
56
|
+
|
|
57
|
+
When the SDK runs on the client and a separate backend holds the signing key, fetch tokens via HTTP:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
const rhinestone = new RhinestoneSDK({
|
|
61
|
+
auth: {
|
|
62
|
+
mode: 'experimental_jwt',
|
|
63
|
+
accessToken: async () => {
|
|
64
|
+
const res = await fetch('/api/auth/token')
|
|
65
|
+
const { token } = await res.json()
|
|
66
|
+
return token
|
|
67
|
+
},
|
|
68
|
+
// Only needed for sponsored intents:
|
|
69
|
+
getIntentExtensionToken: async (intentInput) => {
|
|
70
|
+
const res = await fetch('/api/auth/extension-token', {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: { 'Content-Type': 'application/json' },
|
|
73
|
+
body: JSON.stringify({ intentInput }),
|
|
74
|
+
})
|
|
75
|
+
const { token } = await res.json()
|
|
76
|
+
return token
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
})
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Your backend is responsible for signing JWTs with the correct claims. See the [JWT documentation](https://docs.rhinestone.dev) for the required token format.
|
|
83
|
+
|
|
84
|
+
#### Same-host (SDK and signing key on the same server)
|
|
85
|
+
|
|
86
|
+
When the SDK runs server-side with access to the private key, use `createJwtSigner` to sign tokens in-process without an HTTP round-trip:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { createJwtSigner } from '@rhinestone/sdk/jwt-server'
|
|
90
|
+
|
|
91
|
+
const signer = createJwtSigner({
|
|
92
|
+
jwt: {
|
|
93
|
+
privateKey: myJwk, // RS256 private key in JWK format
|
|
94
|
+
integratorId: 'int_abc',
|
|
95
|
+
projectId: 'proj_xyz',
|
|
96
|
+
appId: 'app_prod',
|
|
97
|
+
keyId: 'key_1',
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
const rhinestone = new RhinestoneSDK({
|
|
102
|
+
auth: { mode: 'experimental_jwt', ...signer },
|
|
103
|
+
})
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`createJwtSigner` returns `{ accessToken, getIntentExtensionToken }` — the same shape as the `auth` config, so you can spread it directly. It handles all claim structure, key caching, and intent digest computation internally.
|
|
107
|
+
|
|
108
|
+
To control which intents your backend sponsors, pass `shouldSponsor` filters. The signer checks them before signing — denied requests throw a `SponsorshipDeniedError`:
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
import { createJwtSigner } from '@rhinestone/sdk/jwt-server'
|
|
112
|
+
|
|
113
|
+
const signer = createJwtSigner({
|
|
114
|
+
// ...
|
|
115
|
+
shouldSponsor: {
|
|
116
|
+
chain: ({ id }) => [1, 8453, 10].includes(id),
|
|
117
|
+
account: async (address) => isUser(address),
|
|
118
|
+
},
|
|
119
|
+
})
|
|
120
|
+
```
|
|
121
|
+
|
|
34
122
|
## Quickstart
|
|
35
123
|
|
|
36
124
|
Create a smart account:
|
|
@@ -38,7 +126,7 @@ Create a smart account:
|
|
|
38
126
|
```ts
|
|
39
127
|
import { RhinestoneSDK } from '@rhinestone/sdk'
|
|
40
128
|
|
|
41
|
-
const rhinestone = new RhinestoneSDK()
|
|
129
|
+
const rhinestone = new RhinestoneSDK({ apiKey: 'your-api-key' })
|
|
42
130
|
const account = await rhinestone.createAccount({
|
|
43
131
|
owners: {
|
|
44
132
|
type: 'ecdsa',
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { type Account, type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type TypedData } from 'viem';
|
|
2
2
|
import type { Module } from '../modules/common';
|
|
3
|
+
import type { ResolvedSessionSignerSet } from '../modules/validators/smart-sessions';
|
|
3
4
|
import type { AccountProviderConfig, Call, OwnerSet, RhinestoneConfig, SignerSet } from '../types';
|
|
4
5
|
import { AccountConfigurationNotSupportedError, AccountError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, Eip7702NotSupportedForAccountError, EoaAccountMustHaveAccountError, EoaSigningMethodNotConfiguredError, EoaSigningNotSupportedError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, isAccountError, ModuleInstallationNotSupportedError, OwnersFieldRequiredError, SigningNotSupportedForAccountError, SmartSessionsNotEnabledError, WalletClientNoConnectedAccountError } from './error';
|
|
5
6
|
import { type ValidatorConfig } from './utils';
|
|
7
|
+
type InternalSignerSet = SignerSet | ResolvedSessionSignerSet;
|
|
6
8
|
declare function getInitCode(config: RhinestoneConfig): {
|
|
7
9
|
address: import("viem").Address;
|
|
8
10
|
} | {
|
|
@@ -31,12 +33,13 @@ declare function getModuleInstallationCalls(config: RhinestoneConfig, module: Mo
|
|
|
31
33
|
declare function getModuleUninstallationCalls(config: RhinestoneConfig, module: Module): Call[];
|
|
32
34
|
declare function getAddress(config: RhinestoneConfig): `0x${string}`;
|
|
33
35
|
declare function checkAddress(config: RhinestoneConfig): boolean;
|
|
34
|
-
declare function getEip1271Signature(config: RhinestoneConfig, signers:
|
|
35
|
-
declare function getEmissarySignature(config: RhinestoneConfig, signers:
|
|
36
|
-
declare function getTypedDataPackedSignature<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, signers:
|
|
36
|
+
declare function getEip1271Signature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
37
|
+
declare function getEmissarySignature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
38
|
+
declare function getTypedDataPackedSignature<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, parameters: HashTypedDataParameters<typedData, primaryType>, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
37
39
|
declare function isDeployed(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
|
|
38
40
|
declare function deploy(config: RhinestoneConfig, chain: Chain, params?: {
|
|
39
41
|
sponsored?: boolean;
|
|
42
|
+
eip7702InitSignature?: Hex;
|
|
40
43
|
}): Promise<boolean>;
|
|
41
44
|
declare function setup(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
|
|
42
45
|
declare function deployStandaloneWithEoa(chain: Chain, config: RhinestoneConfig, deployer: Account): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAMV,KAAK,uBAAuB,EAC5B,KAAK,GAAG,EAER,KAAK,YAAY,EAEjB,KAAK,SAAS,EAGf,MAAM,MAAM,CAAA;AAUb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,KAAK,EACV,qBAAqB,EACrB,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACV,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,qCAAqC,EACrC,YAAY,EACZ,6BAA6B,EAC7B,8BAA8B,EAC9B,kCAAkC,EAClC,8BAA8B,EAC9B,kCAAkC,EAClC,2BAA2B,EAC3B,wCAAwC,EACxC,4BAA4B,EAC5B,cAAc,EACd,mCAAmC,EACnC,wBAAwB,EACxB,kCAAkC,EAClC,4BAA4B,EAC5B,mCAAmC,EACpC,MAAM,SAAS,CAAA;AAkDhB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -434,7 +434,7 @@ async function deploy(config, chain, params) {
|
|
|
434
434
|
await deployWithBundler(chain, config);
|
|
435
435
|
}
|
|
436
436
|
else {
|
|
437
|
-
await deployWithIntent(chain, config, params?.sponsored ?? false);
|
|
437
|
+
await deployWithIntent(chain, config, params?.sponsored ?? false, params?.eip7702InitSignature);
|
|
438
438
|
}
|
|
439
439
|
return true;
|
|
440
440
|
}
|
|
@@ -504,7 +504,7 @@ async function setup(config, chain) {
|
|
|
504
504
|
await (0, execution_1.waitForExecution)(config, result, true);
|
|
505
505
|
return true;
|
|
506
506
|
}
|
|
507
|
-
async function deployWithIntent(chain, config, sponsored) {
|
|
507
|
+
async function deployWithIntent(chain, config, sponsored, eip7702InitSignature) {
|
|
508
508
|
const publicClient = (0, viem_1.createPublicClient)({
|
|
509
509
|
chain,
|
|
510
510
|
transport: (0, utils_1.createTransport)(chain, config.provider),
|
|
@@ -515,11 +515,17 @@ async function deployWithIntent(chain, config, sponsored) {
|
|
|
515
515
|
// Already deployed
|
|
516
516
|
return;
|
|
517
517
|
}
|
|
518
|
+
// For EIP-7702 accounts, auto-sign if no signature was provided
|
|
519
|
+
let initSignature = eip7702InitSignature;
|
|
520
|
+
if (!initSignature && is7702(config)) {
|
|
521
|
+
initSignature = await signEip7702InitData(config);
|
|
522
|
+
}
|
|
518
523
|
const result = await (0, execution_1.sendTransaction)(config, {
|
|
519
524
|
sourceChains: [chain],
|
|
520
525
|
targetChain: chain,
|
|
521
526
|
calls: [],
|
|
522
527
|
sponsored,
|
|
528
|
+
eip7702InitSignature: initSignature,
|
|
523
529
|
});
|
|
524
530
|
await (0, execution_1.waitForExecution)(config, result, true);
|
|
525
531
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../accounts/json-rpc/providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../accounts/json-rpc/providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAIxD,iBAAS,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBtE;AAED,iBAAS,YAAY,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,CAEpB;AAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -36,19 +36,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.getAlchemyUrl = getAlchemyUrl;
|
|
37
37
|
exports.getCustomUrl = getCustomUrl;
|
|
38
38
|
const sharedConfigs = __importStar(require("@rhinestone/shared-configs"));
|
|
39
|
+
const ALCHEMY_API_KEY_PLACEHOLDER = '$' + '{ALCHEMY_API_KEY}';
|
|
39
40
|
function getAlchemyUrl(chainId, apiKey) {
|
|
40
41
|
const providers = sharedConfigs.providerRegistry ||
|
|
41
42
|
sharedConfigs.ProviderRegistry;
|
|
42
43
|
const urlTemplate = providers.Alchemy.url_template;
|
|
43
|
-
const mapping = providers.Alchemy
|
|
44
|
-
.chain_mapping;
|
|
44
|
+
const mapping = providers.Alchemy.chain_mapping;
|
|
45
45
|
const chainParam = mapping[chainId];
|
|
46
46
|
if (!chainParam) {
|
|
47
47
|
throw new Error(`Unsupported chain: ${chainId}`);
|
|
48
48
|
}
|
|
49
49
|
return urlTemplate
|
|
50
50
|
.replace('{{chain_param}}', chainParam)
|
|
51
|
-
.split(
|
|
51
|
+
.split(ALCHEMY_API_KEY_PLACEHOLDER)
|
|
52
52
|
.join(apiKey);
|
|
53
53
|
}
|
|
54
54
|
function getCustomUrl(chainId, urls) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../accounts/safe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,KAAK,EAOV,KAAK,GAAG,EAER,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAEhC,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAe,MAAM,UAAU,CAAA;AAM9E,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,SAAS,CAAA;AAoBhF,iBAAS,aAAa,CAAC,MAAM,EAAE,uBAAuB;;;;;;SAmGrD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB;;;;;;EAgFvD;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../accounts/safe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,KAAK,EAOV,KAAK,GAAG,EAER,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAEhC,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAe,MAAM,UAAU,CAAA;AAM9E,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,SAAS,CAAA;AAoBhF,iBAAS,aAAa,CAAC,MAAM,EAAE,uBAAuB;;;;;;SAmGrD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB;;;;;;EAgFvD;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,uBAAuB,iBAoBlD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK;;;;;;EAarE;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,iBA2BrC;AAED,iBAAe,aAAa,CAC1B,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,eAAe,EAC1B,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,0BAMvE;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,QAAQ,EAChB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAWlC;AAED,iBAAe,uBAAuB,CACpC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAalC;AA0GD,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,uBAAuB,GACxB,CAAA"}
|
|
@@ -186,6 +186,9 @@ function getV0DeployArgs(config) {
|
|
|
186
186
|
function getAddress(config) {
|
|
187
187
|
const deployArgs = getDeployArgs(config);
|
|
188
188
|
if (!deployArgs) {
|
|
189
|
+
if (config.initData?.address) {
|
|
190
|
+
return config.initData.address;
|
|
191
|
+
}
|
|
189
192
|
throw new Error('Cannot derive address: deploy args not available');
|
|
190
193
|
}
|
|
191
194
|
const { factory, implementation, salt } = deployArgs;
|
|
@@ -199,7 +202,7 @@ function getAddress(config) {
|
|
|
199
202
|
return address;
|
|
200
203
|
}
|
|
201
204
|
function getEip712Domain(config, chain) {
|
|
202
|
-
if (config.initData) {
|
|
205
|
+
if (config.initData && !('factory' in config.initData)) {
|
|
203
206
|
throw new error_1.Eip712DomainNotAvailableError('Existing Safe-7579 accounts are not yet supported');
|
|
204
207
|
}
|
|
205
208
|
return {
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import type { WebAuthnP256 } from 'ox';
|
|
2
1
|
import { type Account, type Address, type Chain, type Hex } from 'viem';
|
|
3
2
|
import type { WebAuthnAccount } from 'viem/account-abstraction';
|
|
3
|
+
import { type ResolvedSessionSignerSet } from '../../modules/validators/smart-sessions';
|
|
4
4
|
import type { OwnerSet, SignerSet } from '../../types';
|
|
5
5
|
declare function convertOwnerSetToSignerSet(owners: OwnerSet): SignerSet;
|
|
6
|
+
type WebAuthnSignMetadata = {
|
|
7
|
+
authenticatorData: Hex;
|
|
8
|
+
challengeIndex?: number | undefined;
|
|
9
|
+
clientDataJSON: string;
|
|
10
|
+
typeIndex?: number | undefined;
|
|
11
|
+
userVerificationRequired?: boolean | undefined;
|
|
12
|
+
};
|
|
6
13
|
type SigningFunctions<T> = {
|
|
7
14
|
signEcdsa: (account: Account, params: T, updateV: boolean) => Promise<Hex>;
|
|
8
15
|
signPasskey: (account: WebAuthnAccount, params: T) => Promise<{
|
|
9
|
-
webauthn:
|
|
16
|
+
webauthn: WebAuthnSignMetadata;
|
|
10
17
|
signature: Hex;
|
|
11
18
|
}>;
|
|
12
19
|
};
|
|
@@ -14,9 +21,7 @@ declare function signWithMultiFactorAuth<T>(signers: SignerSet & {
|
|
|
14
21
|
type: 'owner';
|
|
15
22
|
kind: 'multi-factor';
|
|
16
23
|
}, chain: Chain, address: Address, params: T, isUserOpHash: boolean, signMain: (signers: SignerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
|
|
17
|
-
declare function signWithSession(signers: SignerSet
|
|
18
|
-
type: 'experimental_session';
|
|
19
|
-
}, chain: Chain, address: Address, hash: Hex, signMain: (signers: SignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
|
|
24
|
+
declare function signWithSession(signers: ResolvedSessionSignerSet, chain: Chain, address: Address, hash: Hex, signMain: (signers: SignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
|
|
20
25
|
declare function signWithGuardians<T>(signers: SignerSet & {
|
|
21
26
|
type: 'guardians';
|
|
22
27
|
}, params: T, signingFunctions: SigningFunctions<T>): Promise<Hex>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAMV,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAQ/D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAUtD,iBAAS,0BAA0B,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAkE/D;AAED,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC/C,CAAA;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1E,WAAW,EAAE,CACX,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAC,KACN,OAAO,CAAC;QACX,QAAQ,EAAE,oBAAoB,CAAA;QAC9B,SAAS,EAAE,GAAG,CAAA;KACf,CAAC,CAAA;CACH,CAAA;AAgDD,iBAAe,uBAAuB,CAAC,CAAC,EACtC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,EAC5D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CA6Cd;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAiBd;AAED,iBAAe,iBAAiB,CAAC,CAAC,EAChC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,EAC1C,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,iBAAe,cAAc,CAAC,CAAC,EAC7B,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACrC,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAqFd;AAED,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,KAAK,gBAAgB,GACtB,CAAA"}
|
|
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
|
|
|
9
9
|
const modules_1 = require("../../modules");
|
|
10
10
|
const core_1 = require("../../modules/validators/core");
|
|
11
11
|
const smart_sessions_1 = require("../../modules/validators/smart-sessions");
|
|
12
|
+
const mfa_webauthn_1 = require("./mfa-webauthn");
|
|
12
13
|
const passkeys_1 = require("./passkeys");
|
|
13
14
|
function convertOwnerSetToSignerSet(owners) {
|
|
14
15
|
switch (owners.type) {
|
|
@@ -75,14 +76,27 @@ function convertOwnerSetToSignerSet(owners) {
|
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
}
|
|
79
|
+
async function signMfaSubValidator(validator, chain, address, params, isUserOpHash, signMain) {
|
|
80
|
+
if (validator === null) {
|
|
81
|
+
return '0x';
|
|
82
|
+
}
|
|
83
|
+
if (validator.type === 'passkey') {
|
|
84
|
+
const signature = await signMain({
|
|
85
|
+
type: 'owner',
|
|
86
|
+
kind: 'passkey',
|
|
87
|
+
accounts: validator.accounts,
|
|
88
|
+
}, chain, address, params, isUserOpHash);
|
|
89
|
+
return (0, mfa_webauthn_1.encodeMfaWebAuthnSignatureForAccounts)({
|
|
90
|
+
passkeySignature: signature,
|
|
91
|
+
accounts: validator.accounts,
|
|
92
|
+
accountAddress: address,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const validatorSigners = convertOwnerSetToSignerSet(validator);
|
|
96
|
+
return signMain(validatorSigners, chain, address, params, isUserOpHash);
|
|
97
|
+
}
|
|
78
98
|
async function signWithMultiFactorAuth(signers, chain, address, params, isUserOpHash, signMain) {
|
|
79
|
-
const signatures = await Promise.all(signers.validators.map(
|
|
80
|
-
if (validator === null) {
|
|
81
|
-
return '0x';
|
|
82
|
-
}
|
|
83
|
-
const validatorSigners = convertOwnerSetToSignerSet(validator);
|
|
84
|
-
return signMain(validatorSigners, chain, address, params, isUserOpHash);
|
|
85
|
-
}));
|
|
99
|
+
const signatures = await Promise.all(signers.validators.map((validator) => signMfaSubValidator(validator, chain, address, params, isUserOpHash, signMain)));
|
|
86
100
|
const data = (0, viem_1.encodeAbiParameters)([
|
|
87
101
|
{
|
|
88
102
|
components: [
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type Address, type Chain, type Hex } from 'viem';
|
|
2
|
+
import type { ResolvedSessionSignerSet } from '../../modules/validators/smart-sessions';
|
|
2
3
|
import type { SignerSet } from '../../types';
|
|
3
|
-
|
|
4
|
+
type InternalSignerSet = SignerSet | ResolvedSessionSignerSet;
|
|
5
|
+
declare function sign(signers: InternalSignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean): Promise<Hex>;
|
|
4
6
|
export { sign };
|
|
5
7
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,iBAAe,IAAI,CACjB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,KAAK,iBAAiB,GAAG,SAAS,GAAG,wBAAwB,CAAA;AAE7D,iBAAe,IAAI,CACjB,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CA+Bd;AA4BD,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Address, type Hex } from 'viem';
|
|
2
|
+
import type { WebAuthnAccount } from 'viem/account-abstraction';
|
|
3
|
+
import { type WebAuthnSignature } from './passkeys';
|
|
4
|
+
type WebAuthnCredentialData = {
|
|
5
|
+
pubKeyX: bigint;
|
|
6
|
+
pubKeyY: bigint;
|
|
7
|
+
requireUV?: boolean;
|
|
8
|
+
};
|
|
9
|
+
type DecodedPasskeySignature = {
|
|
10
|
+
credIds: Hex[];
|
|
11
|
+
usePrecompile: boolean;
|
|
12
|
+
webAuthns: WebAuthnSignature[];
|
|
13
|
+
};
|
|
14
|
+
declare function generateMfaWebAuthnCredentialId(pubKeyX: bigint, pubKeyY: bigint): Hex;
|
|
15
|
+
declare function encodeMfaWebAuthnValidatorData(input: {
|
|
16
|
+
usePrecompile: boolean;
|
|
17
|
+
threshold: number;
|
|
18
|
+
credentials: WebAuthnCredentialData[];
|
|
19
|
+
}): Hex;
|
|
20
|
+
declare function decodePasskeySignature(signature: Hex): DecodedPasskeySignature;
|
|
21
|
+
declare function encodeMfaWebAuthnSignature(webAuthns: WebAuthnSignature[]): Hex;
|
|
22
|
+
declare function extractMfaWebAuthnSignatureFromPasskeySignature(signature: Hex): Hex;
|
|
23
|
+
declare function encodeMfaWebAuthnSignatureForAccounts(input: {
|
|
24
|
+
passkeySignature: Hex;
|
|
25
|
+
accounts: WebAuthnAccount[];
|
|
26
|
+
accountAddress: Address;
|
|
27
|
+
}): Hex;
|
|
28
|
+
export { decodePasskeySignature, encodeMfaWebAuthnSignature, encodeMfaWebAuthnSignatureForAccounts, encodeMfaWebAuthnValidatorData, extractMfaWebAuthnSignatureFromPasskeySignature, generateMfaWebAuthnCredentialId, };
|
|
29
|
+
export type { WebAuthnCredentialData };
|
|
30
|
+
//# sourceMappingURL=mfa-webauthn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mfa-webauthn.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/mfa-webauthn.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,GAAG,EAET,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAEnB,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,iBAAiB,EAAE,CAAA;CAC/B,CAAA;AAwCD,iBAAS,+BAA+B,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,GAAG,CAcL;AAED,iBAAS,8BAA8B,CAAC,KAAK,EAAE;IAC7C,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,sBAAsB,EAAE,CAAA;CACtC,GAAG,GAAG,CA4BN;AAED,iBAAS,sBAAsB,CAAC,SAAS,EAAE,GAAG,GAAG,uBAAuB,CAkBvE;AAED,iBAAS,0BAA0B,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAEvE;AAED,iBAAS,+CAA+C,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAE5E;AAED,iBAAS,qCAAqC,CAAC,KAAK,EAAE;IACpD,gBAAgB,EAAE,GAAG,CAAA;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,cAAc,EAAE,OAAO,CAAA;CACxB,GAAG,GAAG,CA8BN;AAED,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qCAAqC,EACrC,8BAA8B,EAC9B,+CAA+C,EAC/C,+BAA+B,GAChC,CAAA;AACD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodePasskeySignature = decodePasskeySignature;
|
|
4
|
+
exports.encodeMfaWebAuthnSignature = encodeMfaWebAuthnSignature;
|
|
5
|
+
exports.encodeMfaWebAuthnSignatureForAccounts = encodeMfaWebAuthnSignatureForAccounts;
|
|
6
|
+
exports.encodeMfaWebAuthnValidatorData = encodeMfaWebAuthnValidatorData;
|
|
7
|
+
exports.extractMfaWebAuthnSignatureFromPasskeySignature = extractMfaWebAuthnSignatureFromPasskeySignature;
|
|
8
|
+
exports.generateMfaWebAuthnCredentialId = generateMfaWebAuthnCredentialId;
|
|
9
|
+
const viem_1 = require("viem");
|
|
10
|
+
const passkeys_1 = require("./passkeys");
|
|
11
|
+
const webAuthnAuthAbiParameter = {
|
|
12
|
+
type: 'tuple[]',
|
|
13
|
+
name: 'webAuthns',
|
|
14
|
+
components: [
|
|
15
|
+
{ type: 'bytes', name: 'authenticatorData' },
|
|
16
|
+
{ type: 'string', name: 'clientDataJSON' },
|
|
17
|
+
{ type: 'uint256', name: 'challengeIndex' },
|
|
18
|
+
{ type: 'uint256', name: 'typeIndex' },
|
|
19
|
+
{ type: 'uint256', name: 'r' },
|
|
20
|
+
{ type: 'uint256', name: 's' },
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
const passkeySignatureAbiParameters = [
|
|
24
|
+
{ type: 'bytes32[]', name: 'credIds' },
|
|
25
|
+
{ type: 'bool', name: 'usePrecompile' },
|
|
26
|
+
webAuthnAuthAbiParameter,
|
|
27
|
+
];
|
|
28
|
+
const webAuthnMfaContextAbiParameter = {
|
|
29
|
+
type: 'tuple',
|
|
30
|
+
name: 'context',
|
|
31
|
+
components: [
|
|
32
|
+
{ type: 'bool', name: 'usePrecompile' },
|
|
33
|
+
{ type: 'uint256', name: 'threshold' },
|
|
34
|
+
{ type: 'bytes32[]', name: 'credentialIds' },
|
|
35
|
+
{
|
|
36
|
+
type: 'tuple[]',
|
|
37
|
+
name: 'credentialData',
|
|
38
|
+
components: [
|
|
39
|
+
{ type: 'uint256', name: 'pubKeyX' },
|
|
40
|
+
{ type: 'uint256', name: 'pubKeyY' },
|
|
41
|
+
{ type: 'bool', name: 'requireUV' },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
function generateMfaWebAuthnCredentialId(pubKeyX, pubKeyY) {
|
|
47
|
+
return (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
|
|
48
|
+
{
|
|
49
|
+
type: 'uint256',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'uint256',
|
|
53
|
+
},
|
|
54
|
+
], [pubKeyX, pubKeyY]));
|
|
55
|
+
}
|
|
56
|
+
function encodeMfaWebAuthnValidatorData(input) {
|
|
57
|
+
const credentials = input.credentials
|
|
58
|
+
.map((credential) => ({
|
|
59
|
+
credentialId: generateMfaWebAuthnCredentialId(credential.pubKeyX, credential.pubKeyY),
|
|
60
|
+
credentialData: {
|
|
61
|
+
pubKeyX: credential.pubKeyX,
|
|
62
|
+
pubKeyY: credential.pubKeyY,
|
|
63
|
+
requireUV: credential.requireUV ?? false,
|
|
64
|
+
},
|
|
65
|
+
}))
|
|
66
|
+
.sort((left, right) => left.credentialId.localeCompare(right.credentialId));
|
|
67
|
+
return (0, viem_1.encodeAbiParameters)([webAuthnMfaContextAbiParameter], [
|
|
68
|
+
{
|
|
69
|
+
usePrecompile: input.usePrecompile,
|
|
70
|
+
threshold: BigInt(input.threshold),
|
|
71
|
+
credentialIds: credentials.map((credential) => credential.credentialId),
|
|
72
|
+
credentialData: credentials.map((credential) => credential.credentialData),
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
function decodePasskeySignature(signature) {
|
|
77
|
+
const [credIds, usePrecompile, webAuthns] = (0, viem_1.decodeAbiParameters)(passkeySignatureAbiParameters, signature);
|
|
78
|
+
return {
|
|
79
|
+
credIds: [...credIds],
|
|
80
|
+
usePrecompile,
|
|
81
|
+
webAuthns: webAuthns.map((webAuthn) => ({
|
|
82
|
+
authenticatorData: webAuthn.authenticatorData,
|
|
83
|
+
clientDataJSON: webAuthn.clientDataJSON,
|
|
84
|
+
challengeIndex: BigInt(webAuthn.challengeIndex),
|
|
85
|
+
typeIndex: BigInt(webAuthn.typeIndex),
|
|
86
|
+
r: BigInt(webAuthn.r),
|
|
87
|
+
s: BigInt(webAuthn.s),
|
|
88
|
+
})),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function encodeMfaWebAuthnSignature(webAuthns) {
|
|
92
|
+
return (0, viem_1.encodeAbiParameters)([webAuthnAuthAbiParameter], [webAuthns]);
|
|
93
|
+
}
|
|
94
|
+
function extractMfaWebAuthnSignatureFromPasskeySignature(signature) {
|
|
95
|
+
return encodeMfaWebAuthnSignature(decodePasskeySignature(signature).webAuthns);
|
|
96
|
+
}
|
|
97
|
+
function encodeMfaWebAuthnSignatureForAccounts(input) {
|
|
98
|
+
const decoded = decodePasskeySignature(input.passkeySignature);
|
|
99
|
+
const authByStatefulCredentialId = new Map(decoded.credIds.map((credId, index) => [
|
|
100
|
+
credId.toLowerCase(),
|
|
101
|
+
decoded.webAuthns[index],
|
|
102
|
+
]));
|
|
103
|
+
const webAuthns = input.accounts
|
|
104
|
+
.map((account) => {
|
|
105
|
+
const { x, y } = (0, passkeys_1.parsePublicKey)(account.publicKey);
|
|
106
|
+
const statefulCredentialId = (0, passkeys_1.generateCredentialId)(x, y, input.accountAddress).toLowerCase();
|
|
107
|
+
const webAuthn = authByStatefulCredentialId.get(statefulCredentialId);
|
|
108
|
+
if (!webAuthn) {
|
|
109
|
+
throw new Error('Missing WebAuthn signature for MFA credential');
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
credentialId: generateMfaWebAuthnCredentialId(x, y),
|
|
113
|
+
webAuthn,
|
|
114
|
+
};
|
|
115
|
+
})
|
|
116
|
+
.sort((left, right) => left.credentialId.localeCompare(right.credentialId))
|
|
117
|
+
.map(({ webAuthn }) => webAuthn);
|
|
118
|
+
return encodeMfaWebAuthnSignature(webAuthns);
|
|
119
|
+
}
|
|
@@ -27,7 +27,7 @@ interface GetAccountNonceParams {
|
|
|
27
27
|
}
|
|
28
28
|
declare function encode7579Calls<callType extends CallType>({ mode, callData, }: EncodeCallDataParams<callType>): Hex;
|
|
29
29
|
declare function getAccountNonce(client: Client, args: GetAccountNonceParams): Promise<bigint>;
|
|
30
|
-
declare function getBundlerClient(config: RhinestoneConfig, client: Client): import("viem/account-abstraction").BundlerClient<import("viem").HttpTransport<undefined, false>, undefined, undefined, Client, undefined>;
|
|
30
|
+
declare function getBundlerClient(config: RhinestoneConfig, client: Client): import("viem/_types/account-abstraction").BundlerClient<import("viem").HttpTransport<undefined, false>, undefined, undefined, Client, undefined>;
|
|
31
31
|
export { encode7579Calls, getAccountNonce, getBundlerClient, createTransport };
|
|
32
32
|
export type { ValidatorConfig };
|
|
33
33
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../accounts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAgBhD,OAAO,KAAK,EAAkC,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,KAAK,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,WAAW,CAAA;AAErD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,aAAa,CAAC,QAAQ,SAAS,QAAQ;IAC/C,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED,UAAU,oBAAoB,CAAC,QAAQ,SAAS,QAAQ;IACtD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC7B,QAAQ,EAAE,SAAS;QACjB,EAAE,EAAE,OAAO,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;KACvB,EAAE,CAAA;CACJ;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAkDD,iBAAS,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAE,EAClD,IAAI,EACJ,QAAQ,GACT,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAuFtC;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../accounts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAgBhD,OAAO,KAAK,EAAkC,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,KAAK,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,WAAW,CAAA;AAErD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,aAAa,CAAC,QAAQ,SAAS,QAAQ;IAC/C,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED,UAAU,oBAAoB,CAAC,QAAQ,SAAS,QAAQ;IACtD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC7B,QAAQ,EAAE,SAAS;QACjB,EAAE,EAAE,OAAO,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;KACvB,EAAE,CAAA;CACJ;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAkDD,iBAAS,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAE,EAClD,IAAI,EACJ,QAAQ,GACT,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAuFtC;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,oJAuDjE;AAyBD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { type Hex } from 'viem';
|
|
1
|
+
import { type Chain, type Hex } from 'viem';
|
|
2
2
|
import type { CalldataInput, LazyCallInput, OwnableValidatorConfig, WebauthnValidatorConfig } from '../types';
|
|
3
|
+
type MfaSubValidatorDataOptions = {
|
|
4
|
+
chain?: Chain;
|
|
5
|
+
useWebAuthnPrecompile?: boolean;
|
|
6
|
+
};
|
|
3
7
|
/**
|
|
4
8
|
* Enable multi-factor authentication
|
|
5
9
|
* @param validators List of validators to use
|
|
@@ -25,7 +29,7 @@ declare function disable(): LazyCallInput;
|
|
|
25
29
|
* @param validator Validator module
|
|
26
30
|
* @returns Call to set the sub-validator
|
|
27
31
|
*/
|
|
28
|
-
declare function setSubValidator(id: Hex | number, validator: OwnableValidatorConfig | WebauthnValidatorConfig): CalldataInput;
|
|
32
|
+
declare function setSubValidator(id: Hex | number, validator: OwnableValidatorConfig | WebauthnValidatorConfig, options?: MfaSubValidatorDataOptions): CalldataInput;
|
|
29
33
|
/**
|
|
30
34
|
* Remove a sub-validator (multi-factor)
|
|
31
35
|
* @param id Validator ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfa.d.ts","sourceRoot":"","sources":["../../../actions/mfa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,GAAG,EAAiB,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"mfa.d.ts","sourceRoot":"","sources":["../../../actions/mfa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,KAAK,GAAG,EAAiB,MAAM,MAAM,CAAA;AAY9E,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,UAAU,CAAA;AAEjB,KAAK,0BAA0B,GAAG;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AASD;;;;;GAKG;AACH,iBAAS,MAAM,CACb,UAAU,EAAE,CAAC,sBAAsB,GAAG,uBAAuB,GAAG,IAAI,CAAC,EAAE,EACvE,SAAS,SAAI,GACZ,aAAa,CASf;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAkB5D;AAED;;;;GAIG;AACH,iBAAS,OAAO,IAAI,aAAa,CAOhC;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CACtB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,sBAAsB,GAAG,uBAAuB,EAC3D,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,CAkCf;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CACzB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,sBAAsB,GAAG,uBAAuB,GAC1D,aAAa,CA2Bf;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
package/dist/src/actions/mfa.js
CHANGED
|
@@ -7,7 +7,12 @@ exports.setSubValidator = setSubValidator;
|
|
|
7
7
|
exports.removeSubValidator = removeSubValidator;
|
|
8
8
|
const viem_1 = require("viem");
|
|
9
9
|
const accounts_1 = require("../accounts");
|
|
10
|
+
const modules_1 = require("../modules");
|
|
10
11
|
const core_1 = require("../modules/validators/core");
|
|
12
|
+
function resolveUseWebAuthnPrecompile(options) {
|
|
13
|
+
return (options?.useWebAuthnPrecompile ??
|
|
14
|
+
(options?.chain ? (0, modules_1.isRip7212SupportedNetwork)(options.chain) : false));
|
|
15
|
+
}
|
|
11
16
|
/**
|
|
12
17
|
* Enable multi-factor authentication
|
|
13
18
|
* @param validators List of validators to use
|
|
@@ -15,9 +20,11 @@ const core_1 = require("../modules/validators/core");
|
|
|
15
20
|
* @returns Calls to enable multi-factor authentication
|
|
16
21
|
*/
|
|
17
22
|
function enable(validators, threshold = 1) {
|
|
18
|
-
const module = (0, core_1.getMultiFactorValidator)(threshold, validators);
|
|
19
23
|
return {
|
|
20
|
-
async resolve({ config }) {
|
|
24
|
+
async resolve({ config, chain }) {
|
|
25
|
+
const module = (0, core_1.getMultiFactorValidator)(threshold, validators, {
|
|
26
|
+
useWebAuthnPrecompile: (0, modules_1.isRip7212SupportedNetwork)(chain),
|
|
27
|
+
});
|
|
21
28
|
return (0, accounts_1.getModuleInstallationCalls)(config, module);
|
|
22
29
|
},
|
|
23
30
|
};
|
|
@@ -65,9 +72,12 @@ function disable() {
|
|
|
65
72
|
* @param validator Validator module
|
|
66
73
|
* @returns Call to set the sub-validator
|
|
67
74
|
*/
|
|
68
|
-
function setSubValidator(id, validator) {
|
|
75
|
+
function setSubValidator(id, validator, options) {
|
|
69
76
|
const validatorId = (0, viem_1.padHex)((0, viem_1.toHex)(id), { size: 12 });
|
|
70
77
|
const validatorModule = (0, core_1.getValidator)(validator);
|
|
78
|
+
const validatorData = (0, core_1.getMultiFactorSubValidatorData)(validator, {
|
|
79
|
+
useWebAuthnPrecompile: resolveUseWebAuthnPrecompile(options),
|
|
80
|
+
});
|
|
71
81
|
return {
|
|
72
82
|
to: core_1.MULTI_FACTOR_VALIDATOR_ADDRESS,
|
|
73
83
|
value: 0n,
|
|
@@ -93,7 +103,7 @@ function setSubValidator(id, validator) {
|
|
|
93
103
|
},
|
|
94
104
|
],
|
|
95
105
|
functionName: 'setValidator',
|
|
96
|
-
args: [validatorModule.address, validatorId,
|
|
106
|
+
args: [validatorModule.address, validatorId, validatorData],
|
|
97
107
|
}),
|
|
98
108
|
};
|
|
99
109
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RhinestoneConfig, RhinestoneSDKConfig } from '../types';
|
|
2
|
+
export interface AuthProvider {
|
|
3
|
+
getHeaders(): Promise<Record<string, string>>;
|
|
4
|
+
getSubmitHeaders(intentInput: unknown, isSponsored: boolean): Promise<Record<string, string>>;
|
|
5
|
+
}
|
|
6
|
+
export declare function createAuthProvider(config: RhinestoneSDKConfig | RhinestoneConfig): AuthProvider;
|
|
7
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../auth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7C,gBAAgB,CACd,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACnC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,GAC7C,YAAY,CAqCd"}
|