|
@@ -98,9 +98,12 @@ library ECDSA {
|
|
|
* _Available since v4.3._
|
|
|
*/
|
|
|
function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {
|
|
|
- bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
|
|
|
- uint8 v = uint8((uint256(vs) >> 255) + 27);
|
|
|
- return tryRecover(hash, v, r, s);
|
|
|
+ unchecked {
|
|
|
+ bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
|
|
|
+ // We do not check for an overflow here since the shift operation results in 0 or 1.
|
|
|
+ uint8 v = uint8((uint256(vs) >> 255) + 27);
|
|
|
+ return tryRecover(hash, v, r, s);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|