commit | e983fa27418787af5c51d172b508cd85bc6644d0 | [log] [tgz] |
---|---|---|
author | Garrett Bodley <garrett.bodley@gmail.com> | Mon Jun 24 18:56:28 2024 -0400 |
committer | Gopher Robot <gobot@golang.org> | Tue Jul 16 18:24:57 2024 +0000 |
tree | 9b5145985888cd3a41dde5fa0dc9c95e1948f010 | |
parent | 80fd97208db0a6f1c2dccfc63ccde57b4e994875 [diff] |
sha3: Avo port of keccakf_amd64.s This implementation utilizes the same registers found in the reference implementation, aiming to produce a minimal semantic diff between the Avo-generated output and the original hand-written assembly. To verify the Avo implementation, the reference and Avo-generated assembly files are fed to `go tool asm`, capturing the debug output into corresponding temp files. The debug output contains supplementary metadata (line numbers, instruction offsets, and source file references) that must be removed in order to obtain a semantic diff of the two files. This is accomplished via a small utility script written in awk. Commands used to verify Avo output: BASE="d66d9c31b4ae80d173d1187a9e40c188788dbdbc" go tool asm -o /dev/null -debug \ <(git cat-file -p "$BASE":sha3/keccakf_amd64.s) \ > /tmp/reference.s go tool asm -o /dev/null -debug \ sha3/keccakf_amd64.s \ > /tmp/avo.s normalize(){ awk '{ $1=$2=$3=""; print substr($0,4) }' } diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s) Change-Id: I1c0ea516531355263b83d3b66a37df090e293cea Reviewed-on: https://go-review.googlesource.com/c/crypto/+/594655 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Filippo Valsorda <filippo@golang.org> Reviewed-by: Russell Webb <russell.webb@protonmail.com> Reviewed-by: Roland Shoemaker <roland@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Filippo Valsorda <filippo@golang.org>
This repository holds supplementary Go cryptography libraries.
The easiest way to install is to run go get -u golang.org/x/crypto/...
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/crypto
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the crypto repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/crypto:” in the subject line, so it is easy to find.
Note that contributions to the cryptography package receive additional scrutiny due to their sensitive nature. Patches may take longer than normal to receive feedback.