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 @@ -code lines: 12476code lines12476 \ No newline at end of file +code lines: 12480code lines12480 \ 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 @@ - +