From 6d5f585da7458e41d947ff461d1a792ecb68cb07 Mon Sep 17 00:00:00 2001
From: josh <josh@elixxir.io>
Date: Mon, 6 Jan 2020 13:01:09 -0800
Subject: [PATCH] Standardize mutex unlocks as defers
---
blockchain/block.go | 10 +++++-----
diffieHellman/dhkx.go | 2 +-
fastRNG/stream.go | 34 +++++++++++++++++-----------------
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/blockchain/block.go b/blockchain/block.go
index d5457ce6..6723f602 100644
--- a/blockchain/block.go
+++ b/blockchain/block.go
@@ -78,9 +78,9 @@ func (b *Block) NextBlock() (*Block, error) {
// GetCreated returns a copy of the created coins list
func (b *Block) GetCreated() []coin.Coin {
b.mutex.Lock()
+ defer b.mutex.Unlock()
cCopy := make([]coin.Coin, len(b.created))
copy(cCopy, b.created)
- b.mutex.Unlock()
return cCopy
}
@@ -102,9 +102,9 @@ func (b *Block) AddCreated(c []coin.Coin) error {
// GetDestroyed returns a copy of the destroyed coins list
func (b *Block) GetDestroyed() []coin.Coin {
b.mutex.Lock()
+ defer b.mutex.Unlock()
cCopy := make([]coin.Coin, len(b.destroyed))
copy(cCopy, b.destroyed)
- b.mutex.Unlock()
return cCopy
}
@@ -139,8 +139,8 @@ func (b *Block) GetHash() (BlockHash, error) {
func (b *Block) GetPreviousHash() BlockHash {
var rtnBH BlockHash
b.mutex.Lock()
+ defer b.mutex.Unlock()
copy(rtnBH[:], b.previousHash[:])
- b.mutex.Unlock()
return rtnBH
}
@@ -148,7 +148,7 @@ func (b *Block) GetPreviousHash() BlockHash {
func (b *Block) GetLifecycle() BlockLifecycle {
b.mutex.Lock()
blc := b.lifecycle
- b.mutex.Unlock()
+ defer b.mutex.Unlock()
return blc
}
@@ -276,7 +276,7 @@ func Deserialize(sBlock []byte) (*Block, error) {
b.id = sb.ID
b.lifecycle = Baked
- b.mutex.Unlock()
+ defer b.mutex.Unlock()
return &b, nil
}
diff --git a/diffieHellman/dhkx.go b/diffieHellman/dhkx.go
index 732caada..27c55d9b 100644
--- a/diffieHellman/dhkx.go
+++ b/diffieHellman/dhkx.go
@@ -63,7 +63,7 @@ func CheckPublicKey(group *cyclic.Group, publicKey *cyclic.Int) bool {
// Definition of the upper bound to p-1
upperBound := group.GetPSub1Cyclic()
- //Cmp returns -1 if number is smaller, 0 if the same and 1 if bigger than.
+ // Cmp returns -1 if number is smaller, 0 if the same and 1 if bigger than.
x := publicKey.Cmp(lowerBound)
y := publicKey.Cmp(upperBound)
diff --git a/fastRNG/stream.go b/fastRNG/stream.go
index b0d4bb90..e3d5ef8c 100644
--- a/fastRNG/stream.go
+++ b/fastRNG/stream.go
@@ -38,7 +38,7 @@ type Stream struct {
rng csprng.Source
source []byte
numStream uint
- mut sync.Mutex
+ mutex sync.Mutex
fortunaHash hash.Hash
}
@@ -81,21 +81,21 @@ func (sg *StreamGenerator) newStream() *Stream {
// If the # of open streams exceeds streamCount,
// this function blocks (and prints a log warning) until a stream is available
func (sg *StreamGenerator) GetStream() *Stream {
- //Initialize a stream
var retStream *Stream
- //If there is a stream waiting to be used, take that from the channel and return in
+
+ // If there is a stream waiting to be used, take that from the channel and return in
select {
case retStream = <-sg.waitingStreams:
default:
}
- //If there was no waiting channels, ie we exited the select statement
+ // If there was no waiting channels, ie we exited the select statement
if retStream == nil {
- //If we have not reached the maximum amount of streams (specified by streamCount), then create a new one
+ // If we have not reached the maximum amount of streams (specified by streamCount), then create a new one
if sg.numStreams < sg.maxStreams {
retStream = sg.newStream()
} else {
- //Else block until a stream is put in the waiting channel
+ // Else block until a stream is put in the waiting channel
retStream = <-sg.waitingStreams
}
}
@@ -112,9 +112,10 @@ func (sg *StreamGenerator) Close(stream *Stream) {
// BlockSize into AES then run it until blockSize*scalingFactor bytes are read. Every time
// BlockSize*scalingFactor bytes are read this functions blocks until it rereads csprng.Source.
func (s *Stream) Read(b []byte) (int, error) {
- s.mut.Lock()
+ s.mutex.Lock()
+ defer s.mutex.Unlock()
+
if len(b)%aes.BlockSize != 0 {
- s.mut.Unlock()
return 0, errors.New("requested read length is not byte aligned")
}
@@ -124,19 +125,18 @@ func (s *Stream) Read(b []byte) (int, error) {
counter := make([]byte, aes.BlockSize)
count := uint64(0)
for block := 0; block < len(b)/aes.BlockSize; block++ {
- //Little endian used as a straightforward way to increment a byte array
+ // Little endian used as a straightforward way to increment a byte array
count++
binary.LittleEndian.PutUint64(counter, count)
var extension []byte
- //Decrease the entropy count
+ // Decrease the entropy count
s.entropyCnt--
- //If entropyCnt is decreased too far, add an extension and set the entropyCnt
+ // If entropyCnt is decreased too far, add an extension and set the entropyCnt
if s.entropyCnt == 0 {
extension = make([]byte, aes.BlockSize)
_, err := s.rng.Read(extension)
if err != nil {
- s.mut.Unlock()
return 0, err
}
s.entropyCnt = s.streamGen.scalingFactor
@@ -149,24 +149,25 @@ func (s *Stream) Read(b []byte) (int, error) {
copy(s.source, dst)
- s.mut.Unlock()
return len(b), nil
}
// The Fortuna construction is used to generate randomness
func Fortuna(src, ext []byte, fortunaHash hash.Hash) cipher.Stream {
- //Create a key based on the hash of the src and an extension
+ // Create a key based on the hash of the src and an extension
// extension used if entropyCnt had reached 0
fortunaHash.Reset()
fortunaHash.Write(src)
fortunaHash.Write(ext)
key := fortunaHash.Sum(nil)
- //Initialize a block cipher on that key
+
+ // Initialize a block cipher on that key
block, err := aes.NewCipher(key[:aes.BlockSize])
if err != nil {
jww.FATAL.Panicf(err.Error())
}
- //Encrypt the counter and place into destination
+
+ // Encrypt the counter and place into destination
return cipher.NewCTR(block, key[aes.BlockSize:2*aes.BlockSize])
}
@@ -174,6 +175,5 @@ func Fortuna(src, ext []byte, fortunaHash hash.Hash) cipher.Stream {
// csprng.Source interface.
func (s *Stream) SetSeed(seed []byte) error {
jww.INFO.Printf("Stream does not utilise SetSeed().")
-
return nil
}
--
GitLab