summaryrefslogtreecommitdiff
path: root/teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
committerMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
commite9c24f4af7ed56760f6db7941827d09f6db9020b (patch)
tree62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go
parent58d5e7cfda4781d8a57ec52aefd02983835c301a (diff)
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go')
-rw-r--r--teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go b/teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go
new file mode 100644
index 0000000..11b0cb9
--- /dev/null
+++ b/teleirc/matterbridge/vendor/github.com/minio/md5-simd/md5.go
@@ -0,0 +1,63 @@
+package md5simd
+
+import (
+ "crypto/md5"
+ "hash"
+ "sync"
+)
+
+const (
+ // The blocksize of MD5 in bytes.
+ BlockSize = 64
+
+ // The size of an MD5 checksum in bytes.
+ Size = 16
+
+ // internalBlockSize is the internal block size.
+ internalBlockSize = 32 << 10
+)
+
+type Server interface {
+ NewHash() Hasher
+ Close()
+}
+
+type Hasher interface {
+ hash.Hash
+ Close()
+}
+
+// StdlibHasher returns a Hasher that uses the stdlib for hashing.
+// Used hashers are stored in a pool for fast reuse.
+func StdlibHasher() Hasher {
+ return &md5Wrapper{Hash: md5Pool.New().(hash.Hash)}
+}
+
+// md5Wrapper is a wrapper around the builtin hasher.
+type md5Wrapper struct {
+ hash.Hash
+}
+
+var md5Pool = sync.Pool{New: func() interface{} {
+ return md5.New()
+}}
+
+// fallbackServer - Fallback when no assembly is available.
+type fallbackServer struct {
+}
+
+// NewHash -- return regular Golang md5 hashing from crypto
+func (s *fallbackServer) NewHash() Hasher {
+ return &md5Wrapper{Hash: md5Pool.New().(hash.Hash)}
+}
+
+func (s *fallbackServer) Close() {
+}
+
+func (m *md5Wrapper) Close() {
+ if m.Hash != nil {
+ m.Reset()
+ md5Pool.Put(m.Hash)
+ m.Hash = nil
+ }
+}