Use asm for hashEIP712Message, increment free memory pointer after asm hashing functions
This commit is contained in:
		@@ -131,11 +131,15 @@ contract MixinTransactions is
 | 
				
			|||||||
        // ));
 | 
					        // ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assembly {
 | 
					        assembly {
 | 
				
			||||||
 | 
					            // Load free memory pointer
 | 
				
			||||||
            let memPtr := mload(64)
 | 
					            let memPtr := mload(64)
 | 
				
			||||||
            mstore(memPtr, schemaHash)
 | 
					
 | 
				
			||||||
            mstore(add(memPtr, 32), salt)
 | 
					            mstore(memPtr, schemaHash)                                                               // hash of schema
 | 
				
			||||||
            mstore(add(memPtr, 64), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff))
 | 
					            mstore(add(memPtr, 32), salt)                                                            // salt
 | 
				
			||||||
            mstore(add(memPtr, 96), dataHash)
 | 
					            mstore(add(memPtr, 64), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff))  // signerAddress
 | 
				
			||||||
 | 
					            mstore(add(memPtr, 96), dataHash)                                                        // hash of data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Compute hash
 | 
				
			||||||
            result := keccak256(memPtr, 128)
 | 
					            result := keccak256(memPtr, 128)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,11 +61,26 @@ contract LibEIP712 {
 | 
				
			|||||||
        view
 | 
					        view
 | 
				
			||||||
        returns (bytes32 result)
 | 
					        returns (bytes32 result)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        result = keccak256(abi.encodePacked(
 | 
					        bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;
 | 
				
			||||||
            EIP191_HEADER,
 | 
					
 | 
				
			||||||
            EIP712_DOMAIN_HASH,
 | 
					        // Assembly for more efficient computing:
 | 
				
			||||||
            hashStruct
 | 
					        // keccak256(abi.encodePacked(
 | 
				
			||||||
        ));
 | 
					        //     EIP191_HEADER,
 | 
				
			||||||
 | 
					        //     EIP712_DOMAIN_HASH,
 | 
				
			||||||
 | 
					        //     hashStruct    
 | 
				
			||||||
 | 
					        // ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assembly {
 | 
				
			||||||
 | 
					            // Load free memory pointer
 | 
				
			||||||
 | 
					            let memPtr := mload(64)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000)  // EIP191 header
 | 
				
			||||||
 | 
					            mstore(add(memPtr, 2), eip712DomainHash)                                            // EIP712 domain hash
 | 
				
			||||||
 | 
					            mstore(add(memPtr, 34), hashStruct)                                                 // Hash of struct
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Compute hash
 | 
				
			||||||
 | 
					            result := keccak256(memPtr, 66)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user