Skip to content

Commit

Permalink
add memory versions
Browse files Browse the repository at this point in the history
  • Loading branch information
AgusVelez5 committed Oct 9, 2024
1 parent 59e474c commit a318761
Showing 1 changed file with 49 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,23 @@ library PermitParsing {

uint constant SIGNATURE_SIZE = 65;

function asPermitUnchecked(
bytes memory params,
uint offset
) internal pure returns (uint256, uint256, bytes32, bytes32, uint8, uint) {
uint256 value;
uint256 deadline;
bytes32 r;
bytes32 s;
uint8 v;
(value, offset) = params.asUint256Unchecked(offset);
(deadline, offset) = params.asUint256Unchecked(offset);
(r, offset) = params.asBytes32Unchecked(offset);
(s, offset) = params.asBytes32Unchecked(offset);
(v, offset) = params.asUint8Unchecked(offset);
return (value, deadline, r, s, v, offset);
}

function asPermitCdUnchecked(
bytes calldata params,
uint offset
Expand All @@ -26,6 +43,23 @@ library PermitParsing {
return (value, deadline, r, s, v, offset);
}

function asPermit2PermitUnchecked(
bytes memory params,
uint offset
) internal pure returns (uint160, uint48, uint48, uint256, bytes memory, uint) {
uint160 amount;
uint48 expiration;
uint48 nonce;
uint256 sigDeadline;
bytes memory signature;
(amount, offset) = params.asUint160Unchecked(offset);
(expiration, offset) = params.asUint48Unchecked(offset);
(nonce, offset) = params.asUint48Unchecked(offset);
(sigDeadline, offset) = params.asUint256Unchecked(offset);
(signature, offset) = params.sliceUnchecked(offset, SIGNATURE_SIZE);
return (amount, expiration, nonce, sigDeadline, signature, offset);
}

function asPermit2PermitCdUnchecked(
bytes calldata params,
uint offset
Expand All @@ -43,6 +77,21 @@ library PermitParsing {
return (amount, expiration, nonce, sigDeadline, signature, offset);
}

function asPermit2TransferUnchecked(
bytes memory params,
uint offset
) internal pure returns (uint256, uint256, uint256, bytes memory, uint) {
uint256 amount;
uint256 nonce;
uint256 sigDeadline;
bytes memory signature;
(amount, offset) = params.asUint256Unchecked(offset);
(nonce, offset) = params.asUint256Unchecked(offset);
(sigDeadline, offset) = params.asUint256Unchecked(offset);
(signature, offset) = params.sliceUnchecked(offset, SIGNATURE_SIZE);
return (amount, nonce, sigDeadline, signature, offset);
}

function asPermit2TransferCdUnchecked(
bytes calldata params,
uint offset
Expand Down

0 comments on commit a318761

Please sign in to comment.