@safe-global/protocol-kit 4.0.1 → 4.1.0-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/dist/src/Safe.d.ts +14 -7
- package/dist/src/Safe.js +93 -20
- package/dist/src/Safe.js.map +1 -1
- package/dist/src/SafeFactory.js +1 -1
- package/dist/src/SafeFactory.js.map +1 -1
- package/dist/src/SafeProvider.d.ts +10 -4
- package/dist/src/SafeProvider.js +57 -6
- package/dist/src/SafeProvider.js.map +1 -1
- package/dist/src/contracts/SafeWebAuthnSignerFactory/SafeWebAuthnSignerFactoryBaseContract.d.ts +37 -0
- package/dist/src/contracts/SafeWebAuthnSignerFactory/SafeWebAuthnSignerFactoryBaseContract.js +38 -0
- package/dist/src/contracts/SafeWebAuthnSignerFactory/SafeWebAuthnSignerFactoryBaseContract.js.map +1 -0
- package/dist/src/contracts/SafeWebAuthnSignerFactory/v1.4.1/SafeWebAuthnSignerFactoryContract_v1_4_1.d.ts +37 -0
- package/dist/src/contracts/SafeWebAuthnSignerFactory/v1.4.1/SafeWebAuthnSignerFactoryContract_v1_4_1.js +52 -0
- package/dist/src/contracts/SafeWebAuthnSignerFactory/v1.4.1/SafeWebAuthnSignerFactoryContract_v1_4_1.js.map +1 -0
- package/dist/src/contracts/config.d.ts +1 -0
- package/dist/src/contracts/config.js +31 -6
- package/dist/src/contracts/config.js.map +1 -1
- package/dist/src/contracts/contractInstances.d.ts +2 -0
- package/dist/src/contracts/contractInstances.js +16 -4
- package/dist/src/contracts/contractInstances.js.map +1 -1
- package/dist/src/contracts/safeDeploymentContracts.d.ts +2 -1
- package/dist/src/contracts/safeDeploymentContracts.js +14 -1
- package/dist/src/contracts/safeDeploymentContracts.js.map +1 -1
- package/dist/src/contracts/utils.js +2 -1
- package/dist/src/contracts/utils.js.map +1 -1
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.js +6 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/contracts.d.ts +6 -0
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/index.js +1 -0
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/passkeys.d.ts +9 -0
- package/dist/src/types/passkeys.js +3 -0
- package/dist/src/types/passkeys.js.map +1 -0
- package/dist/src/types/safeProvider.d.ts +4 -2
- package/dist/src/types/transactions.d.ts +28 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.js +1 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/passkeys/PasskeySigner.d.ts +59 -0
- package/dist/src/utils/passkeys/PasskeySigner.js +165 -0
- package/dist/src/utils/passkeys/PasskeySigner.js.map +1 -0
- package/dist/src/utils/passkeys/extractPasskeyData.d.ts +18 -0
- package/dist/src/utils/passkeys/extractPasskeyData.js +60 -0
- package/dist/src/utils/passkeys/extractPasskeyData.js.map +1 -0
- package/dist/src/utils/passkeys/index.d.ts +2 -0
- package/dist/src/utils/passkeys/index.js +19 -0
- package/dist/src/utils/passkeys/index.js.map +1 -0
- package/dist/src/utils/safeVersions.d.ts +2 -1
- package/dist/src/utils/safeVersions.js +3 -1
- package/dist/src/utils/safeVersions.js.map +1 -1
- package/dist/src/utils/signatures/utils.js +3 -1
- package/dist/src/utils/signatures/utils.js.map +1 -1
- package/dist/src/utils/transactions/utils.d.ts +12 -1
- package/dist/src/utils/transactions/utils.js +13 -1
- package/dist/src/utils/transactions/utils.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -4
package/dist/src/types/index.js
CHANGED
|
@@ -20,4 +20,5 @@ __exportStar(require("./safeFactory"), exports);
|
|
|
20
20
|
__exportStar(require("./safeProvider"), exports);
|
|
21
21
|
__exportStar(require("./signing"), exports);
|
|
22
22
|
__exportStar(require("./transactions"), exports);
|
|
23
|
+
__exportStar(require("./passkeys"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,+CAA4B;AAC5B,gDAA6B;AAC7B,iDAA8B;AAC9B,4CAAyB;AACzB,iDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,+CAA4B;AAC5B,gDAA6B;AAC7B,iDAA8B;AAC9B,4CAAyB;AACzB,iDAA8B;AAC9B,6CAA0B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkeys.js","sourceRoot":"","sources":["../../../src/types/passkeys.ts"],"names":[],"mappings":""}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import PasskeySigner from '../utils/passkeys/PasskeySigner';
|
|
2
|
+
import { PasskeyArgType } from './passkeys';
|
|
1
3
|
export type RequestArguments = {
|
|
2
4
|
readonly method: string;
|
|
3
5
|
readonly params?: readonly unknown[] | object;
|
|
@@ -9,11 +11,11 @@ export type HexAddress = string;
|
|
|
9
11
|
export type PrivateKey = string;
|
|
10
12
|
export type HttpTransport = string;
|
|
11
13
|
export type SocketTransport = string;
|
|
12
|
-
export type SafeSigner = HexAddress | PrivateKey;
|
|
14
|
+
export type SafeSigner = HexAddress | PrivateKey | PasskeySigner;
|
|
13
15
|
export type SafeProviderConfig = {
|
|
14
16
|
/** signerOrProvider - Ethers signer or provider */
|
|
15
17
|
provider: Eip1193Provider | HttpTransport | SocketTransport;
|
|
16
|
-
signer?: HexAddress | PrivateKey;
|
|
18
|
+
signer?: HexAddress | PrivateKey | PasskeyArgType;
|
|
17
19
|
};
|
|
18
20
|
export type SafeProviderTransaction = {
|
|
19
21
|
to: string;
|
|
@@ -4,6 +4,7 @@ import { SafeProviderConfig } from './safeProvider';
|
|
|
4
4
|
import { SafeContractImplementationType } from './contracts';
|
|
5
5
|
import { ContractNetworksConfig } from './contracts';
|
|
6
6
|
import { PredictedSafeProps } from './safeConfig';
|
|
7
|
+
import { PasskeyArgType } from './passkeys';
|
|
7
8
|
export type CreateTransactionProps = {
|
|
8
9
|
/** transactions - The transaction array to process */
|
|
9
10
|
transactions: MetaTransactionData[];
|
|
@@ -41,16 +42,43 @@ export type AddOwnerTxParams = {
|
|
|
41
42
|
/** threshold - The new threshold */
|
|
42
43
|
threshold?: number;
|
|
43
44
|
};
|
|
45
|
+
export type AddPasskeyOwnerTxParams = {
|
|
46
|
+
/** passkey - The passkey of the new owner */
|
|
47
|
+
passkey: PasskeyArgType;
|
|
48
|
+
/** threshold - The new threshold */
|
|
49
|
+
threshold?: number;
|
|
50
|
+
};
|
|
44
51
|
export type RemoveOwnerTxParams = {
|
|
45
52
|
/** ownerAddress - The address of the owner that will be removed */
|
|
46
53
|
ownerAddress: string;
|
|
47
54
|
/** threshold - The new threshold */
|
|
48
55
|
threshold?: number;
|
|
49
56
|
};
|
|
57
|
+
export type RemovePasskeyOwnerTxParams = {
|
|
58
|
+
/** passkey - The passkey of the owner that will be removed */
|
|
59
|
+
passkey: PasskeyArgType;
|
|
60
|
+
/** threshold - The new threshold */
|
|
61
|
+
threshold?: number;
|
|
62
|
+
};
|
|
50
63
|
export type SwapOwnerTxParams = {
|
|
51
64
|
/** oldOwnerAddress - The old owner address */
|
|
52
65
|
oldOwnerAddress: string;
|
|
53
66
|
/** newOwnerAddress - The new owner address */
|
|
54
67
|
newOwnerAddress: string;
|
|
68
|
+
} | {
|
|
69
|
+
/** oldOwnerPasskey - The old owner passkey */
|
|
70
|
+
oldOwnerPasskey: PasskeyArgType;
|
|
71
|
+
/** newOwnerAddress - The new owner address */
|
|
72
|
+
newOwnerAddress: string;
|
|
73
|
+
} | {
|
|
74
|
+
/** oldOwnerAddress - The old owner address */
|
|
75
|
+
oldOwnerAddress: string;
|
|
76
|
+
/** newOwnerPasskey - The new owner passkey */
|
|
77
|
+
newOwnerPasskey: PasskeyArgType;
|
|
78
|
+
} | {
|
|
79
|
+
/** oldOwnerPasskey - The old owner passkey */
|
|
80
|
+
oldOwnerPasskey: PasskeyArgType;
|
|
81
|
+
/** newOwnerPasskey - The new owner passkey */
|
|
82
|
+
newOwnerPasskey: PasskeyArgType;
|
|
55
83
|
};
|
|
56
84
|
export {};
|
package/dist/src/utils/index.js
CHANGED
|
@@ -20,4 +20,5 @@ __exportStar(require("./eip-712"), exports);
|
|
|
20
20
|
__exportStar(require("./safeVersions"), exports);
|
|
21
21
|
__exportStar(require("./signatures"), exports);
|
|
22
22
|
__exportStar(require("./transactions"), exports);
|
|
23
|
+
__exportStar(require("./passkeys"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,6CAA0B;AAC1B,4CAAyB;AACzB,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,6CAA0B;AAC1B,4CAAyB;AACzB,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B;AAC9B,6CAA0B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ethers, AbstractSigner, Provider } from 'ethers';
|
|
2
|
+
import { PasskeyCoordinates, PasskeyArgType } from '../../types/passkeys';
|
|
3
|
+
import { SafeWebAuthnSignerFactoryContractImplementationType } from '../../types/contracts';
|
|
4
|
+
/**
|
|
5
|
+
* Represents a Signer that is created using a passkey.
|
|
6
|
+
* This class extends the AbstractSigner to implement signer functionalities.
|
|
7
|
+
*
|
|
8
|
+
* @extends {AbstractSigner}
|
|
9
|
+
*/
|
|
10
|
+
declare class PasskeySigner extends AbstractSigner {
|
|
11
|
+
/**
|
|
12
|
+
* The raw identifier of the passkey.
|
|
13
|
+
* see: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential/rawId
|
|
14
|
+
*/
|
|
15
|
+
passkeyRawId: ArrayBuffer;
|
|
16
|
+
/**
|
|
17
|
+
* Passkey Coordinates.
|
|
18
|
+
*/
|
|
19
|
+
coordinates: PasskeyCoordinates;
|
|
20
|
+
/**
|
|
21
|
+
* Safe WebAuthn signer factory Contract.
|
|
22
|
+
*/
|
|
23
|
+
safeWebAuthnSignerFactoryContract: SafeWebAuthnSignerFactoryContractImplementationType;
|
|
24
|
+
/**
|
|
25
|
+
* P256 Verifier Contract address.
|
|
26
|
+
*/
|
|
27
|
+
verifierAddress: string;
|
|
28
|
+
constructor(passkey: PasskeyArgType, safeWebAuthnSignerFactoryContract: SafeWebAuthnSignerFactoryContractImplementationType, provider: Provider);
|
|
29
|
+
/**
|
|
30
|
+
* Returns the address associated with the passkey signer.
|
|
31
|
+
* @returns {Promise<string>} A promise that resolves to the signer's address.
|
|
32
|
+
*/
|
|
33
|
+
getAddress(): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Encodes the createSigner contract function.
|
|
36
|
+
* @returns {string} The encoded data to create a signer.
|
|
37
|
+
*/
|
|
38
|
+
encodeCreateSigner(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Creates the deployment transaction to create a passkey signer.
|
|
41
|
+
* @returns {string} The deployment transaction to create a passkey signer.
|
|
42
|
+
*/
|
|
43
|
+
createPasskeyDeploymentTransaction(): Promise<{
|
|
44
|
+
to: string;
|
|
45
|
+
value: string;
|
|
46
|
+
data: string;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Signs the provided data using the passkey.
|
|
50
|
+
* @param {Uint8Array} data - The data to be signed.
|
|
51
|
+
* @returns {Promise<string>} A promise that resolves to the signed data.
|
|
52
|
+
*/
|
|
53
|
+
sign(data: Uint8Array): Promise<string>;
|
|
54
|
+
connect(provider: Provider): ethers.Signer;
|
|
55
|
+
signTransaction(): Promise<string>;
|
|
56
|
+
signMessage(message: string | Uint8Array): Promise<string>;
|
|
57
|
+
signTypedData(): Promise<string>;
|
|
58
|
+
}
|
|
59
|
+
export default PasskeySigner;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ethers_1 = require("ethers");
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const extractPasskeyData_1 = require("./extractPasskeyData");
|
|
6
|
+
// FIXME: use the production deployment packages instead of a hardcoded address
|
|
7
|
+
const P256_VERIFIER_ADDRESS = process.env.TEST_NETWORK === 'hardhat'
|
|
8
|
+
? '0x0287C6F8975f2571E8FAa1D34fe638B1468D563D' // In Hardhat, use the local deployed FCLP256Verifier contract
|
|
9
|
+
: '0xcA89CBa4813D5B40AeC6E57A30d0Eeb500d6531b'; // FCLP256Verifier deployed on Sepolia
|
|
10
|
+
/**
|
|
11
|
+
* Represents a Signer that is created using a passkey.
|
|
12
|
+
* This class extends the AbstractSigner to implement signer functionalities.
|
|
13
|
+
*
|
|
14
|
+
* @extends {AbstractSigner}
|
|
15
|
+
*/
|
|
16
|
+
class PasskeySigner extends ethers_1.AbstractSigner {
|
|
17
|
+
constructor(passkey, safeWebAuthnSignerFactoryContract, provider) {
|
|
18
|
+
super(provider);
|
|
19
|
+
const { rawId, coordinates, customVerifierAddress } = passkey;
|
|
20
|
+
this.passkeyRawId = (0, extractPasskeyData_1.hexStringToUint8Array)(rawId);
|
|
21
|
+
this.coordinates = coordinates;
|
|
22
|
+
this.verifierAddress = customVerifierAddress || P256_VERIFIER_ADDRESS;
|
|
23
|
+
this.safeWebAuthnSignerFactoryContract = safeWebAuthnSignerFactoryContract;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns the address associated with the passkey signer.
|
|
27
|
+
* @returns {Promise<string>} A promise that resolves to the signer's address.
|
|
28
|
+
*/
|
|
29
|
+
async getAddress() {
|
|
30
|
+
const [signerAddress] = await this.safeWebAuthnSignerFactoryContract.getSigner([
|
|
31
|
+
BigInt(this.coordinates.x),
|
|
32
|
+
BigInt(this.coordinates.y),
|
|
33
|
+
BigInt(this.verifierAddress)
|
|
34
|
+
]);
|
|
35
|
+
return signerAddress;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Encodes the createSigner contract function.
|
|
39
|
+
* @returns {string} The encoded data to create a signer.
|
|
40
|
+
*/
|
|
41
|
+
encodeCreateSigner() {
|
|
42
|
+
return this.safeWebAuthnSignerFactoryContract.encode('createSigner', [
|
|
43
|
+
BigInt(this.coordinates.x),
|
|
44
|
+
BigInt(this.coordinates.y),
|
|
45
|
+
BigInt(this.verifierAddress)
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates the deployment transaction to create a passkey signer.
|
|
50
|
+
* @returns {string} The deployment transaction to create a passkey signer.
|
|
51
|
+
*/
|
|
52
|
+
async createPasskeyDeploymentTransaction() {
|
|
53
|
+
const passkeyAddress = await this.getAddress();
|
|
54
|
+
const isPasskeyDeployed = (await this.provider?.getCode(passkeyAddress)) !== constants_1.EMPTY_DATA;
|
|
55
|
+
if (isPasskeyDeployed) {
|
|
56
|
+
throw new Error('Passkey Signer contract already deployed');
|
|
57
|
+
}
|
|
58
|
+
const passkeySignerDeploymentTransaction = {
|
|
59
|
+
to: await this.safeWebAuthnSignerFactoryContract.getAddress(),
|
|
60
|
+
value: '0',
|
|
61
|
+
data: this.encodeCreateSigner()
|
|
62
|
+
};
|
|
63
|
+
return passkeySignerDeploymentTransaction;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Signs the provided data using the passkey.
|
|
67
|
+
* @param {Uint8Array} data - The data to be signed.
|
|
68
|
+
* @returns {Promise<string>} A promise that resolves to the signed data.
|
|
69
|
+
*/
|
|
70
|
+
async sign(data) {
|
|
71
|
+
const assertion = (await navigator.credentials.get({
|
|
72
|
+
publicKey: {
|
|
73
|
+
challenge: data,
|
|
74
|
+
allowCredentials: [{ type: 'public-key', id: this.passkeyRawId }],
|
|
75
|
+
userVerification: 'required'
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
if (!assertion?.response?.authenticatorData) {
|
|
79
|
+
throw new Error('Failed to sign data with passkey Signer');
|
|
80
|
+
}
|
|
81
|
+
const { authenticatorData, signature, clientDataJSON } = assertion.response;
|
|
82
|
+
return ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(['bytes', 'bytes', 'uint256[2]'], [
|
|
83
|
+
new Uint8Array(authenticatorData),
|
|
84
|
+
extractClientDataFields(clientDataJSON),
|
|
85
|
+
extractSignature(signature)
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
connect(provider) {
|
|
89
|
+
const passkey = {
|
|
90
|
+
rawId: Buffer.from(this.passkeyRawId).toString('hex'),
|
|
91
|
+
coordinates: this.coordinates,
|
|
92
|
+
customVerifierAddress: this.verifierAddress
|
|
93
|
+
};
|
|
94
|
+
return new PasskeySigner(passkey, this.safeWebAuthnSignerFactoryContract, provider);
|
|
95
|
+
}
|
|
96
|
+
signTransaction() {
|
|
97
|
+
throw new Error('Passkey Signers cannot sign transactions, they can only sign data.');
|
|
98
|
+
}
|
|
99
|
+
signMessage(message) {
|
|
100
|
+
if (typeof message === 'string') {
|
|
101
|
+
return this.sign(ethers_1.ethers.getBytes(message));
|
|
102
|
+
}
|
|
103
|
+
return this.sign(message);
|
|
104
|
+
}
|
|
105
|
+
signTypedData() {
|
|
106
|
+
throw new Error('Passkey Signers cannot sign signTypedData, they can only sign data.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.default = PasskeySigner;
|
|
110
|
+
/**
|
|
111
|
+
* Compute the additional client data JSON fields. This is the fields other than `type` and
|
|
112
|
+
* `challenge` (including `origin` and any other additional client data fields that may be
|
|
113
|
+
* added by the authenticator).
|
|
114
|
+
*
|
|
115
|
+
* See <https://w3c.github.io/webauthn/#clientdatajson-serialization>
|
|
116
|
+
*
|
|
117
|
+
* @param {ArrayBuffer} clientDataJSON - The client data JSON.
|
|
118
|
+
* @returns {string} A hex string of the additional fields from the client data JSON.
|
|
119
|
+
* @throws {Error} Throws an error if the client data JSON does not contain the expected 'challenge' field pattern.
|
|
120
|
+
*/
|
|
121
|
+
function extractClientDataFields(clientDataJSON) {
|
|
122
|
+
const decodedClientDataJSON = new TextDecoder('utf-8').decode(clientDataJSON);
|
|
123
|
+
const match = decodedClientDataJSON.match(/^\{"type":"webauthn.get","challenge":"[A-Za-z0-9\-_]{43}",(.*)\}$/);
|
|
124
|
+
if (!match) {
|
|
125
|
+
throw new Error('challenge not found in client data JSON');
|
|
126
|
+
}
|
|
127
|
+
const [, fields] = match;
|
|
128
|
+
return ethers_1.ethers.hexlify(ethers_1.ethers.toUtf8Bytes(fields));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Extracts the numeric values r and s from a DER-encoded ECDSA signature.
|
|
132
|
+
* This function decodes the signature based on a specific format and validates the encoding at each step.
|
|
133
|
+
*
|
|
134
|
+
* @param {ArrayBuffer} signature - The DER-encoded signature to be decoded.
|
|
135
|
+
* @returns {[bigint, bigint]} A tuple containing two BigInt values, r and s, which are the numeric values extracted from the signature.
|
|
136
|
+
* @throws {Error} Throws an error if the signature encoding is invalid or does not meet expected conditions.
|
|
137
|
+
*/
|
|
138
|
+
function extractSignature(signature) {
|
|
139
|
+
const check = (x) => {
|
|
140
|
+
if (!x) {
|
|
141
|
+
throw new Error('invalid signature encoding');
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
// Decode the DER signature. Note that we assume that all lengths fit into 8-bit integers,
|
|
145
|
+
// which is true for the kinds of signatures we are decoding but generally false. I.e. this
|
|
146
|
+
// code should not be used in any serious application.
|
|
147
|
+
const view = new DataView(signature);
|
|
148
|
+
// check that the sequence header is valid
|
|
149
|
+
check(view.getUint8(0) === 0x30);
|
|
150
|
+
check(view.getUint8(1) === view.byteLength - 2);
|
|
151
|
+
// read r and s
|
|
152
|
+
const readInt = (offset) => {
|
|
153
|
+
check(view.getUint8(offset) === 0x02);
|
|
154
|
+
const len = view.getUint8(offset + 1);
|
|
155
|
+
const start = offset + 2;
|
|
156
|
+
const end = start + len;
|
|
157
|
+
const n = BigInt(ethers_1.ethers.hexlify(new Uint8Array(view.buffer.slice(start, end))));
|
|
158
|
+
check(n < ethers_1.ethers.MaxUint256);
|
|
159
|
+
return [n, end];
|
|
160
|
+
};
|
|
161
|
+
const [r, sOffset] = readInt(2);
|
|
162
|
+
const [s] = readInt(sOffset);
|
|
163
|
+
return [r, s];
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=PasskeySigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasskeySigner.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/PasskeySigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PasskeyCoordinates, PasskeyArgType } from '../../types/passkeys';
|
|
2
|
+
/**
|
|
3
|
+
* Extracts and returns the passkey data (coordinates and rawId) from a given passkey Credential.
|
|
4
|
+
*
|
|
5
|
+
* @param {Credential} passkeyCredential - The passkey credential generated via `navigator.credentials.create()` using correct parameters.
|
|
6
|
+
* @returns {Promise<PasskeyArgType>} A promise that resolves to an object containing the coordinates and the rawId derived from the passkey.
|
|
7
|
+
* @throws {Error} Throws an error if the coordinates could not be extracted
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractPasskeyData(passkeyCredential: Credential): Promise<PasskeyArgType>;
|
|
10
|
+
/**
|
|
11
|
+
* Extracts and returns coordinates from a given passkey public key.
|
|
12
|
+
*
|
|
13
|
+
* @param {ArrayBuffer} publicKey - The public key of the passkey from which coordinates will be extracted.
|
|
14
|
+
* @returns {Promise<PasskeyCoordinates>} A promise that resolves to an object containing the coordinates derived from the public key of the passkey.
|
|
15
|
+
* @throws {Error} Throws an error if the coordinates could not be extracted via `crypto.subtle.exportKey()`
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractPasskeyCoordinates(publicKey: ArrayBuffer): Promise<PasskeyCoordinates>;
|
|
18
|
+
export declare function hexStringToUint8Array(hexString: string): Uint8Array;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hexStringToUint8Array = exports.extractPasskeyCoordinates = exports.extractPasskeyData = void 0;
|
|
4
|
+
const buffer_1 = require("buffer");
|
|
5
|
+
/**
|
|
6
|
+
* Extracts and returns the passkey data (coordinates and rawId) from a given passkey Credential.
|
|
7
|
+
*
|
|
8
|
+
* @param {Credential} passkeyCredential - The passkey credential generated via `navigator.credentials.create()` using correct parameters.
|
|
9
|
+
* @returns {Promise<PasskeyArgType>} A promise that resolves to an object containing the coordinates and the rawId derived from the passkey.
|
|
10
|
+
* @throws {Error} Throws an error if the coordinates could not be extracted
|
|
11
|
+
*/
|
|
12
|
+
async function extractPasskeyData(passkeyCredential) {
|
|
13
|
+
const passkey = passkeyCredential;
|
|
14
|
+
const attestationResponse = passkey.response;
|
|
15
|
+
const publicKey = attestationResponse.getPublicKey();
|
|
16
|
+
if (!publicKey) {
|
|
17
|
+
throw new Error('Failed to generate passkey Coordinates. getPublicKey() failed');
|
|
18
|
+
}
|
|
19
|
+
const coordinates = await extractPasskeyCoordinates(publicKey);
|
|
20
|
+
const rawId = buffer_1.Buffer.from(passkey.rawId).toString('hex');
|
|
21
|
+
return {
|
|
22
|
+
rawId,
|
|
23
|
+
coordinates
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.extractPasskeyData = extractPasskeyData;
|
|
27
|
+
/**
|
|
28
|
+
* Extracts and returns coordinates from a given passkey public key.
|
|
29
|
+
*
|
|
30
|
+
* @param {ArrayBuffer} publicKey - The public key of the passkey from which coordinates will be extracted.
|
|
31
|
+
* @returns {Promise<PasskeyCoordinates>} A promise that resolves to an object containing the coordinates derived from the public key of the passkey.
|
|
32
|
+
* @throws {Error} Throws an error if the coordinates could not be extracted via `crypto.subtle.exportKey()`
|
|
33
|
+
*/
|
|
34
|
+
async function extractPasskeyCoordinates(publicKey) {
|
|
35
|
+
const algorithm = {
|
|
36
|
+
name: 'ECDSA',
|
|
37
|
+
namedCurve: 'P-256',
|
|
38
|
+
hash: { name: 'SHA-256' }
|
|
39
|
+
};
|
|
40
|
+
const key = await crypto.subtle.importKey('spki', publicKey, algorithm, true, ['verify']);
|
|
41
|
+
const { x, y } = await crypto.subtle.exportKey('jwk', key);
|
|
42
|
+
const isValidCoordinates = !!x && !!y;
|
|
43
|
+
if (!isValidCoordinates) {
|
|
44
|
+
throw new Error('Failed to generate passkey Coordinates. crypto.subtle.exportKey() failed');
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
x: '0x' + buffer_1.Buffer.from(x, 'base64').toString('hex'),
|
|
48
|
+
y: '0x' + buffer_1.Buffer.from(y, 'base64').toString('hex')
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
exports.extractPasskeyCoordinates = extractPasskeyCoordinates;
|
|
52
|
+
function hexStringToUint8Array(hexString) {
|
|
53
|
+
const arr = [];
|
|
54
|
+
for (let i = 0; i < hexString.length; i += 2) {
|
|
55
|
+
arr.push(parseInt(hexString.substr(i, 2), 16));
|
|
56
|
+
}
|
|
57
|
+
return new Uint8Array(arr);
|
|
58
|
+
}
|
|
59
|
+
exports.hexStringToUint8Array = hexStringToUint8Array;
|
|
60
|
+
//# sourceMappingURL=extractPasskeyData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractPasskeyData.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/extractPasskeyData.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAG/B;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CAAC,iBAA6B;IACpE,MAAM,OAAO,GAAG,iBAAwC,CAAA;IACxD,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAA4C,CAAA;IAEhF,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAA;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAExD,OAAO;QACL,KAAK;QACL,WAAW;KACZ,CAAA;AACH,CAAC;AAjBD,gDAiBC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,yBAAyB,CAC7C,SAAsB;IAEtB,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEzF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE1D,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;IAC7F,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAClD,CAAC,EAAE,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KACnD,CAAA;AACH,CAAC;AAvBD,8DAuBC;AAED,SAAgB,qBAAqB,CAAC,SAAiB;IACrD,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAND,sDAMC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./extractPasskeyData"), exports);
|
|
18
|
+
__exportStar(require("./PasskeySigner"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,kDAA+B"}
|
|
@@ -11,7 +11,8 @@ export declare enum SAFE_FEATURES {
|
|
|
11
11
|
ETH_SIGN = "ETH_SIGN",
|
|
12
12
|
ACCOUNT_ABSTRACTION = "ACCOUNT_ABSTRACTION",
|
|
13
13
|
REQUIRED_TXGAS = "REQUIRED_TXGAS",
|
|
14
|
-
SIMULATE_AND_REVERT = "SIMULATE_AND_REVERT"
|
|
14
|
+
SIMULATE_AND_REVERT = "SIMULATE_AND_REVERT",
|
|
15
|
+
PASSKEY_SIGNER = "PASSKEY_SIGNER"
|
|
15
16
|
}
|
|
16
17
|
export declare const hasSafeFeature: (feature: SAFE_FEATURES, version: string) => boolean;
|
|
17
18
|
export type SafeContractCompatibleWithFallbackHandler = SafeContract_v1_1_1 | SafeContract_v1_2_0 | SafeContract_v1_3_0 | SafeContract_v1_4_1;
|
|
@@ -14,6 +14,7 @@ var SAFE_FEATURES;
|
|
|
14
14
|
SAFE_FEATURES["ACCOUNT_ABSTRACTION"] = "ACCOUNT_ABSTRACTION";
|
|
15
15
|
SAFE_FEATURES["REQUIRED_TXGAS"] = "REQUIRED_TXGAS";
|
|
16
16
|
SAFE_FEATURES["SIMULATE_AND_REVERT"] = "SIMULATE_AND_REVERT";
|
|
17
|
+
SAFE_FEATURES["PASSKEY_SIGNER"] = "PASSKEY_SIGNER";
|
|
17
18
|
})(SAFE_FEATURES || (exports.SAFE_FEATURES = SAFE_FEATURES = {}));
|
|
18
19
|
const SAFE_FEATURES_BY_VERSION = {
|
|
19
20
|
[SAFE_FEATURES.SAFE_TX_GAS_OPTIONAL]: '>=1.3.0',
|
|
@@ -22,7 +23,8 @@ const SAFE_FEATURES_BY_VERSION = {
|
|
|
22
23
|
[SAFE_FEATURES.ETH_SIGN]: '>=1.1.0',
|
|
23
24
|
[SAFE_FEATURES.ACCOUNT_ABSTRACTION]: '>=1.3.0',
|
|
24
25
|
[SAFE_FEATURES.REQUIRED_TXGAS]: '<=1.2.0',
|
|
25
|
-
[SAFE_FEATURES.SIMULATE_AND_REVERT]: '>=1.3.0'
|
|
26
|
+
[SAFE_FEATURES.SIMULATE_AND_REVERT]: '>=1.3.0',
|
|
27
|
+
[SAFE_FEATURES.PASSKEY_SIGNER]: '>=1.3.0'
|
|
26
28
|
};
|
|
27
29
|
const hasSafeFeature = (feature, version) => {
|
|
28
30
|
if (!(feature in SAFE_FEATURES_BY_VERSION)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safeVersions.js","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAwD;AAQxD,IAAY,
|
|
1
|
+
{"version":3,"file":"safeVersions.js","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAwD;AAQxD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,8DAA6C,CAAA;IAC7C,kDAAiC,CAAA;IACjC,gEAA+C,CAAA;IAC/C,sCAAqB,CAAA;IACrB,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;AACnC,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AAED,MAAM,wBAAwB,GAAkC;IAC9D,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,SAAS;IAC/C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS;IACnC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;IAC9C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;IAC9C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;CAC1C,CAAA;AAEM,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,OAAe,EAAW,EAAE;IACjF,IAAI,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAA,mBAAe,EAAC,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B;AAmBM,KAAK,UAAU,yCAAyC,CAC7D,YAA4C;IAE5C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;IAEnD,IAAI,CAAC,IAAA,sBAAc,EAAC,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IAED,OAAO,YAAuD,CAAA;AAChE,CAAC;AAVD,8FAUC;AAEM,KAAK,UAAU,6CAA6C,CACjE,YAA4C;IAE5C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;IAEnD,IAAI,CAAC,IAAA,sBAAc,EAAC,aAAa,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;IAED,OAAO,YAA2D,CAAA;AACpE,CAAC;AAZD,sGAYC"}
|
|
@@ -77,12 +77,14 @@ const adjustVInSignature = (signingMethod, signature, safeTxHash, signerAddress)
|
|
|
77
77
|
exports.adjustVInSignature = adjustVInSignature;
|
|
78
78
|
async function generateSignature(safeProvider, hash) {
|
|
79
79
|
const signerAddress = await safeProvider.getSignerAddress();
|
|
80
|
+
const isPasskeySigner = await safeProvider.isPasskeySigner();
|
|
81
|
+
const isContractSignature = !!isPasskeySigner;
|
|
80
82
|
if (!signerAddress) {
|
|
81
83
|
throw new Error('SafeProvider must be initialized with a signer to use this method');
|
|
82
84
|
}
|
|
83
85
|
let signature = await safeProvider.signMessage(hash);
|
|
84
86
|
signature = (0, exports.adjustVInSignature)(types_1.SigningMethod.ETH_SIGN, signature, hash, signerAddress);
|
|
85
|
-
return new SafeSignature_1.EthSafeSignature(signerAddress, signature);
|
|
87
|
+
return new SafeSignature_1.EthSafeSignature(signerAddress, signature, isContractSignature);
|
|
86
88
|
}
|
|
87
89
|
exports.generateSignature = generateSignature;
|
|
88
90
|
async function generateEIP712Signature(safeProvider, safeEIP712Args, methodVersion) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/signatures/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/signatures/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
import { StandardizeSafeTransactionDataProps } from '../../types';
|
|
1
|
+
import { AddOwnerTxParams, AddPasskeyOwnerTxParams, PasskeyArgType, RemoveOwnerTxParams, RemovePasskeyOwnerTxParams, StandardizeSafeTransactionDataProps, SwapOwnerTxParams } from '../../types';
|
|
2
2
|
import { MetaTransactionData, SafeMultisigTransactionResponse, SafeTransaction, SafeTransactionData, SafeTransactionDataPartial } from '@safe-global/safe-core-sdk-types';
|
|
3
3
|
export declare function standardizeMetaTransactionData(tx: SafeTransactionDataPartial): MetaTransactionData;
|
|
4
4
|
export declare function standardizeSafeTransactionData({ safeContract, predictedSafe, provider, tx, contractNetworks }: StandardizeSafeTransactionDataProps): Promise<SafeTransactionData>;
|
|
5
5
|
export declare function encodeMultiSendData(txs: MetaTransactionData[]): string;
|
|
6
6
|
export declare function decodeMultiSendData(encodedData: string): MetaTransactionData[];
|
|
7
7
|
export declare function isSafeMultisigTransactionResponse(safeTransaction: SafeTransaction | SafeMultisigTransactionResponse): safeTransaction is SafeMultisigTransactionResponse;
|
|
8
|
+
type PasskeyParam = {
|
|
9
|
+
passkey: PasskeyArgType;
|
|
10
|
+
};
|
|
11
|
+
export declare function isPasskeyParam(params: AddOwnerTxParams | AddPasskeyOwnerTxParams | RemoveOwnerTxParams | RemovePasskeyOwnerTxParams): params is PasskeyParam;
|
|
12
|
+
export declare function isOldOwnerPasskey(params: SwapOwnerTxParams): params is SwapOwnerTxParams & {
|
|
13
|
+
oldOwnerPasskey: PasskeyArgType;
|
|
14
|
+
};
|
|
15
|
+
export declare function isNewOwnerPasskey(params: SwapOwnerTxParams): params is SwapOwnerTxParams & {
|
|
16
|
+
newOwnerPasskey: PasskeyArgType;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isSafeMultisigTransactionResponse = exports.decodeMultiSendData = exports.encodeMultiSendData = exports.standardizeSafeTransactionData = exports.standardizeMetaTransactionData = void 0;
|
|
6
|
+
exports.isNewOwnerPasskey = exports.isOldOwnerPasskey = exports.isPasskeyParam = exports.isSafeMultisigTransactionResponse = exports.decodeMultiSendData = exports.encodeMultiSendData = exports.standardizeSafeTransactionData = exports.standardizeMetaTransactionData = void 0;
|
|
7
7
|
const ethers_1 = require("ethers");
|
|
8
8
|
const SafeProvider_1 = __importDefault(require("../../SafeProvider"));
|
|
9
9
|
const config_1 = require("../../contracts/config");
|
|
@@ -112,4 +112,16 @@ function isSafeMultisigTransactionResponse(safeTransaction) {
|
|
|
112
112
|
return safeTransaction.isExecuted !== undefined;
|
|
113
113
|
}
|
|
114
114
|
exports.isSafeMultisigTransactionResponse = isSafeMultisigTransactionResponse;
|
|
115
|
+
function isPasskeyParam(params) {
|
|
116
|
+
return params.passkey !== undefined;
|
|
117
|
+
}
|
|
118
|
+
exports.isPasskeyParam = isPasskeyParam;
|
|
119
|
+
function isOldOwnerPasskey(params) {
|
|
120
|
+
return params.oldOwnerPasskey !== undefined;
|
|
121
|
+
}
|
|
122
|
+
exports.isOldOwnerPasskey = isOldOwnerPasskey;
|
|
123
|
+
function isNewOwnerPasskey(params) {
|
|
124
|
+
return params.newOwnerPasskey !== undefined;
|
|
125
|
+
}
|
|
126
|
+
exports.isNewOwnerPasskey = isNewOwnerPasskey;
|
|
115
127
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/transactions/utils.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAoF;AACpF,0FAAiE;AACjE,uEAAiF;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/transactions/utils.ts"],"names":[],"mappings":"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"}
|