Skip to content

Commit

Permalink
chore: more polishes
Browse files Browse the repository at this point in the history
  • Loading branch information
fedealconada committed Jan 22, 2024
1 parent 67b1222 commit 0a83ea2
Showing 1 changed file with 22 additions and 51 deletions.
73 changes: 22 additions & 51 deletions src/wallet/KintoWallet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -268,66 +268,37 @@ contract KintoWallet is Initializable, BaseAccount, TokenCallbackHandler, IKinto
{
if (!kintoID.isKYC(owners[0])) return SIG_VALIDATION_FAILED; // check first owner is KYC'ed

// get target and whether it's a batch call
(address target, bool batch) = _decodeCallData(userOp.callData);
address app = appRegistry.getSponsor(target); // get app's sponsor

// validate signatures
address app = appRegistry.getSponsor(target);
bytes32 hashData = userOpHash.toEthSignedMessageHash();

// if an app key is set, use this signature and bypass policy
// check if an app key is set
if (appKeySigner[app] != address(0)) {
if (
(validationData = _verifySingleSignature(appKeySigner[app], hashData, userOp.signature))
== SIG_VALIDATION_SUCCESS
) {
if (!batch) {
if (target == address(this)) {
return SIG_VALIDATION_FAILED;
} else {
return SIG_VALIDATION_SUCCESS;
}
} else {
if (_verifyBatch(app, userOp.callData, appKeySigner[app])) {
return SIG_VALIDATION_SUCCESS;
} else {
return SIG_VALIDATION_FAILED;
}
}
if (_verifySingleSignature(appKeySigner[app], hashData, userOp.signature) == SIG_VALIDATION_SUCCESS) {
// if using an app key, no calls to wallet are allowed
return (target != address(this) && (!batch || _verifyBatch(app, userOp.callData, true)))
? SIG_VALIDATION_SUCCESS
: SIG_VALIDATION_FAILED;
}
}

// verify policy is respected
if (signerPolicy == SINGLE_SIGNER && owners.length == 1) {
if (
(validationData = _verifySingleSignature(owners[0], hashData, userOp.signature))
== SIG_VALIDATION_SUCCESS
) {
console.log("SIPPP");
if (!batch) {
return SIG_VALIDATION_SUCCESS;
} else {
console.log("LALA");
if (_verifyBatch(app, userOp.callData, address(0))) {
return SIG_VALIDATION_SUCCESS;
} else {
return SIG_VALIDATION_FAILED;
}
}
}
// if app key is not set or signature is not valid, verify signer policy
if (
(
signerPolicy == SINGLE_SIGNER && owners.length == 1
&& _verifySingleSignature(owners[0], hashData, userOp.signature) == SIG_VALIDATION_SUCCESS
)
|| (
signerPolicy != SINGLE_SIGNER
&& _verifyMultipleSignatures(hashData, userOp.signature) == SIG_VALIDATION_SUCCESS
)
) {
// allow wallet calls based on batch rules
return
(!batch || _verifyBatch(app, userOp.callData, false)) ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED;
}

if ((validationData = _verifyMultipleSignatures(hashData, userOp.signature)) == SIG_VALIDATION_SUCCESS) {
if (!batch) {
return SIG_VALIDATION_SUCCESS;
} else {
if (_verifyBatch(app, userOp.callData, address(0))) {
return SIG_VALIDATION_SUCCESS;
} else {
return SIG_VALIDATION_FAILED;
}
}
}
return SIG_VALIDATION_FAILED;
}

/* ============ Internal/Private Functions ============ */
Expand Down

0 comments on commit 0a83ea2

Please sign in to comment.