UNPKG

@hyperlane-xyz/core

Version:

Core solidity contracts for Hyperlane

84 lines (72 loc) 3.07 kB
/* * Copyright 2020, Offchain Labs, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* eslint-env node, mocha */ import { ethers } from 'hardhat' import { BytesLike } from '@ethersproject/bytes' import { expect } from 'chai' import { CryptographyPrimitivesTester } from '../../build/types' let cryptographyPrimitivesTester: CryptographyPrimitivesTester describe('CryptographyPrimitives', () => { before(async () => { const CryptographyPrimitivesTester = await ethers.getContractFactory( 'CryptographyPrimitivesTester' ) cryptographyPrimitivesTester = (await CryptographyPrimitivesTester.deploy()) as CryptographyPrimitivesTester await cryptographyPrimitivesTester.deployed() }) it('calculates sha256 compression function correctly', async () => { // test vectors from https://homes.esat.kuleuven.be/~nsmart/MPC/sha-256-test.txt const initialHashState = '0x6a09e667bb67ae853c6ef372a54ff53a510e527f9b05688c1f83d9ab5be0cd19' const input1: [BytesLike, BytesLike] = [ ethers.constants.HashZero, ethers.constants.HashZero, ] const input2: [BytesLike, BytesLike] = [ '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', '0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f', ] const input3: [BytesLike, BytesLike] = [ '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF', '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF', ] const input4: [BytesLike, BytesLike] = [ '0x243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89', '0x452821E638D01377BE5466CF34E90C6CC0AC29B7C97C50DD3f84D5B5b5470917', ] const output1 = '0xda5698be17b9b46962335799779fbeca8ce5d491c0d26243bafef9ea1837a9d8' const output2 = '0xfc99a2df88f42a7a7bb9d18033cdc6a20256755f9d5b9a5044a9cc315abe84a7' const output3 = '0xef0c748df4da50a8d6c43c013edc3ce76c9d9fa9a1458ade56eb86c0a64492d2' const output4 = '0xcf0ae4eb67d38ffeb94068984b22abde4e92bc548d14585e48dca8882d7b09ce' expect( await cryptographyPrimitivesTester.sha256Block(input1, initialHashState) ).to.equal(output1) expect( await cryptographyPrimitivesTester.sha256Block(input2, initialHashState) ).to.equal(output2) expect( await cryptographyPrimitivesTester.sha256Block(input3, initialHashState) ).to.equal(output3) expect( await cryptographyPrimitivesTester.sha256Block(input4, initialHashState) ).to.equal(output4) }) })