SHA256 for ReconfiigureIO - WORK IN PROGRESS! DO NOT USE!
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd/test-sha256
vendor/foolmarks/crypto/sha256
.gitattributes
.gitignore
README.md
main.go
main_test.go
reco.yml

README.md

SHA256 for ReconfigureIO

This is an implementation of the FIPS 180-4 SHA256 hashing algorithm written in Go and intended for use with ReconfigureIO tools. It uses the SMI protocol for memory communication.

vendor/crypto/sha256/sha256.go

  • A package that contains the functions necessary to implement a SHA256 hash generator. The main function is 'HashGen' which iterates over all the 512bit blocks of the input message which it reads from the msgChan channel and outputs a 256 hash (or digest) to the hashChan channel.

vendor/crypto/sha256/host/padsha256.go

  • A padding function design to be run on the host. It will pad the message according to FIPS 180-4 such that its length is and integer multiple of 512bits.

cmd/test-sha256/main.go

  • An example host code.

main.go

  • An example kernel code.

main_test.go

  • A go test file that was used to emulate the functionality of both host and kernel for initial prototyping and debugging.

Possible modifications

  • the main loop of 64 rounds in the 'HashGen' function could be unrolled partially or completely to improve performance at the cost of extra resources.