diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e7caff6..b388e423 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,10 @@
*??? ??, ????*
+### CHANGES
+
+- `pkg/crypto/hashing`: doOnce encoding.HexEncode -> ToString method
+
## v1.7.3
diff --git a/pkg/crypto/hashing/hashing.go b/pkg/crypto/hashing/hashing.go
index 0aadb39a..df96be99 100644
--- a/pkg/crypto/hashing/hashing.go
+++ b/pkg/crypto/hashing/hashing.go
@@ -2,6 +2,7 @@ package hashing
import (
"crypto/sha512"
+ "sync"
"github.com/number571/go-peer/pkg/encoding"
)
@@ -15,19 +16,20 @@ const (
)
type sSHA512Hasher struct {
+ fOnce sync.Once
fHash []byte
fHashStr string
}
func NewHasher(pData []byte) IHasher {
s := sha512.Sum384(pData)
- return &sSHA512Hasher{
- fHash: s[:],
- fHashStr: encoding.HexEncode(s[:]),
- }
+ return &sSHA512Hasher{fHash: s[:]}
}
func (p *sSHA512Hasher) ToString() string {
+ p.fOnce.Do(func() {
+ p.fHashStr = encoding.HexEncode(p.ToBytes())
+ })
return p.fHashStr
}
diff --git a/pkg/crypto/hashing/hmac.go b/pkg/crypto/hashing/hmac.go
index 733bf481..12f52a6f 100644
--- a/pkg/crypto/hashing/hmac.go
+++ b/pkg/crypto/hashing/hmac.go
@@ -3,6 +3,7 @@ package hashing
import (
"crypto/hmac"
"crypto/sha512"
+ "sync"
"github.com/number571/go-peer/pkg/encoding"
)
@@ -12,6 +13,7 @@ var (
)
type sHMACSHA512Hasher struct {
+ fOnce sync.Once
fHash []byte
fHashStr string
}
@@ -20,13 +22,13 @@ func NewHMACHasher(pKey []byte, pData []byte) IHasher {
h := hmac.New(sha512.New384, pKey)
h.Write(pData)
s := h.Sum(nil)
- return &sHMACSHA512Hasher{
- fHash: s,
- fHashStr: encoding.HexEncode(s),
- }
+ return &sHMACSHA512Hasher{fHash: s}
}
func (p *sHMACSHA512Hasher) ToString() string {
+ p.fOnce.Do(func() {
+ p.fHashStr = encoding.HexEncode(p.ToBytes())
+ })
return p.fHashStr
}
diff --git a/test/result/badge_codelines.svg b/test/result/badge_codelines.svg
index 773c599e..4bc8978c 100644
--- a/test/result/badge_codelines.svg
+++ b/test/result/badge_codelines.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/test/result/coverage.svg b/test/result/coverage.svg
index 01108f08..3c622912 100644
--- a/test/result/coverage.svg
+++ b/test/result/coverage.svg
@@ -7,7 +7,7 @@
>
-
+
-
+
-
+
-
+
client
@@ -52,12 +52,12 @@
-
+
crypto
@@ -65,12 +65,12 @@
-
+
encoding
@@ -78,12 +78,12 @@
-
+
logger
@@ -91,7 +91,7 @@
-
+
-
+
payload
@@ -117,12 +117,12 @@
-
+
state
@@ -130,12 +130,12 @@
-
+
storage
@@ -143,12 +143,12 @@
-
+
client.go
@@ -156,12 +156,12 @@
-
+
message
@@ -169,12 +169,12 @@
-
+
asymmetric
@@ -182,12 +182,12 @@
-
+
hashing
@@ -195,18 +195,18 @@
-
+
-
+
puzzle/puzzle.go
@@ -214,12 +214,12 @@
-
+
random/random.go
@@ -227,12 +227,12 @@
-
+
symmetric/symmetric.go
@@ -240,12 +240,12 @@
-
+
bytes.go
@@ -253,18 +253,18 @@
-
+
-
+
hex.go
@@ -272,12 +272,12 @@
-
+
serialize_json.go
@@ -285,18 +285,18 @@
-
+
-
+
logger.go
@@ -304,13 +304,13 @@
-
+
-
+
-
+
conn
@@ -336,12 +336,12 @@
-
+
connkeeper
@@ -349,18 +349,18 @@
-
+
-
+
message
@@ -368,12 +368,12 @@
-
+
network.go
@@ -381,12 +381,12 @@
-
+
settings.go
@@ -394,12 +394,12 @@
-
+
joiner
@@ -407,12 +407,12 @@
-
+
payload32.go
@@ -420,12 +420,12 @@
-
+
payload64.go
@@ -433,12 +433,12 @@
-
+
state.go
@@ -446,12 +446,12 @@
-
+
cache/lru.go
@@ -459,12 +459,12 @@
-
+
database
@@ -472,12 +472,12 @@
-
+
message.go
@@ -485,12 +485,12 @@
-
+
dsa.go
@@ -498,12 +498,12 @@
-
+
kem.go
@@ -511,12 +511,12 @@
-
+
key.go
@@ -524,12 +524,12 @@
-
+
map_pubkeys.go
@@ -537,24 +537,31 @@
-
+
-
+
+hmac.go
+
-
+
action.go
@@ -562,7 +569,7 @@
-
+
-
+
-
+
head.go
@@ -594,12 +601,12 @@
-
+
logger
@@ -607,12 +614,12 @@
-
+
queue
@@ -620,12 +627,12 @@
-
+
settings.go
@@ -633,12 +640,12 @@
-
+
conn.go
@@ -646,12 +653,12 @@
-
+
settings.go
@@ -659,12 +666,12 @@
-
+
connkeeper.go
@@ -672,37 +679,30 @@
-
+
-
+
-settings.go
-
-
+
-
+
message.go
@@ -710,12 +710,12 @@
-
+
settings.go
@@ -723,12 +723,12 @@
-
+
joiner32.go
@@ -736,12 +736,12 @@
-
+
database.go
@@ -749,12 +749,12 @@
-
+
log_builder.go
@@ -762,24 +762,24 @@
-
+
-
+
-
+
queue.go
@@ -787,7 +787,7 @@
-
+