|author||Konrad Rzeszutek Wilk <firstname.lastname@example.org>||Sat Jun 12 09:18:41 2021 -0400|
|committer||Konrad Rzeszutek Wilk <email@example.com>||Sat Jun 12 09:18:41 2021 -0400|
GDS files: compress them $make compress $ gzip -dc user_project_wrapper.gds.gz | sha1sum - 04d8d21ac5e49d91fee4a76f5682b9211a9093b1 - $ gzip -dc wrapper_sha1.gds.gz | sha1sum 060db8226cb69f788368b0457ff936c52007dd5a - $ sha1sum *wrapper*.gz c57c737bbf0b823b189ccf3542c407bfe1d972f4 gds/user_project_wrapper.gds.gz a30a05136ac741e60d71cf13f6007d4c4204d270 gds/wrapper_sha1.gds.gz Signed-off-by: Konrad Rzeszutek Wilk <firstname.lastname@example.org>
See a https://github.com/konradwilk/sha1 for the full git history of this code. Branch name is submission-mpw-two-c.
This is an implementation of [https://www.rfc-editor.org/rfc/inline-errata/rfc3174.html](RFC 3174) of SHA-1 engine.
It is not the most secure one nowadays (it is still used for git commit ids and TPM PCR values), but it looked like the easiest of the SHA engines to implement. The communication channel is via WishBone commands to provide sixteen words after which the engine starts and computes the digest in about 160 cycles. Then digest can be retrieved via the wishbone. There is a IRQ line so when it has completed it will bring it high if that is enabled.
If you want to see this more interactively, I would recommend you clone https://github.com/konradwilk/sha1 and run
which will use the various WishBone commands to program it.