aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/format/idxfile/encoder.go
diff options
context:
space:
mode:
authorPaulo Gomes <pjbgf@linux.com>2022-11-25 14:07:01 +0000
committerPaulo Gomes <pjbgf@linux.com>2022-11-25 14:07:01 +0000
commit7c37589e95f6a88e470bf91d3a0ef8536702f3f4 (patch)
treea8d7351b3d6094cea5974750a312346f1c066e0a /plumbing/format/idxfile/encoder.go
parentc798d4a42004b1c8976a6a4f42f131f16d08b6fa (diff)
downloadgo-git-7c37589e95f6a88e470bf91d3a0ef8536702f3f4.tar.gz
sha1: Add collision resistent implementation
Implement the same SHA1 collision resistent algorithm used by both the Git CLI and libgit2. Only commits with input that match the unavoidable bit conditions will be further processed, which will result in different hashes. Which is the same behaviour experienced in the Git CLI and Libgit2. Users can override the hash algorithm used with: hash.RegisterHash(crypto.SHA1, sha1.New) xref links: https://github.com/libgit2/libgit2/pull/4136/commits/2dfd1294f7a694bfa9e864a9489ae3cb318a5ed0 https://github.com/git/git/commit/28dc98e343ca4eb370a29ceec4c19beac9b5c01e Signed-off-by: Paulo Gomes <pjbgf@linux.com>
Diffstat (limited to 'plumbing/format/idxfile/encoder.go')
-rw-r--r--plumbing/format/idxfile/encoder.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/plumbing/format/idxfile/encoder.go b/plumbing/format/idxfile/encoder.go
index 26b2e4d..6ac445f 100644
--- a/plumbing/format/idxfile/encoder.go
+++ b/plumbing/format/idxfile/encoder.go
@@ -1,10 +1,10 @@
package idxfile
import (
- "crypto/sha1"
- "hash"
+ "crypto"
"io"
+ "github.com/go-git/go-git/v5/plumbing/hash"
"github.com/go-git/go-git/v5/utils/binary"
)
@@ -16,7 +16,7 @@ type Encoder struct {
// NewEncoder returns a new stream encoder that writes to w.
func NewEncoder(w io.Writer) *Encoder {
- h := sha1.New()
+ h := hash.New(crypto.SHA1)
mw := io.MultiWriter(w, h)
return &Encoder{mw, h}
}