init: v1.0.0
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package entropy
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type OSEntropySource struct {
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func (e *OSEntropySource) GetEntropy(minEntropy int64, minEntropyInputLength int64, maxEntropyInputLength int64) ([]byte, error) {
|
||||
//使用互斥锁保证熵源的独占性
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
n := minEntropy
|
||||
if n < minEntropyInputLength {
|
||||
n = minEntropyInputLength
|
||||
}
|
||||
entropy := make([]byte, n)
|
||||
if _, err := rand.Reader.Read(entropy); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entropy, nil
|
||||
}
|
||||
Reference in New Issue
Block a user