mirror of
https://github.com/henrydcase/nobs.git
synced 2024-11-29 10:21:23 +00:00
go fmt
This commit is contained in:
parent
8cf7cfdc8d
commit
4b06c1b314
@ -243,4 +243,3 @@ func (d *digest) compress(input []byte, blocks int) {
|
|||||||
H = d.h[7]
|
H = d.h[7]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,11 +88,15 @@ func (d *digest) Sum(in []byte) []byte {
|
|||||||
dc.Write(in)
|
dc.Write(in)
|
||||||
|
|
||||||
idx := int(dc.len & uint64(dc.BlockSize()-1))
|
idx := int(dc.len & uint64(dc.BlockSize()-1))
|
||||||
for i:=idx+1; i<len(dc.b); i++ {dc.b[i] = 0}
|
for i := idx + 1; i < len(dc.b); i++ {
|
||||||
|
dc.b[i] = 0
|
||||||
|
}
|
||||||
dc.b[idx] = 0x80
|
dc.b[idx] = 0x80
|
||||||
if idx >= 56 {
|
if idx >= 56 {
|
||||||
dc.compress(dc.b[:], 1)
|
dc.compress(dc.b[:], 1)
|
||||||
for i:=range (dc.b) {dc.b[i] = 0}
|
for i := range dc.b {
|
||||||
|
dc.b[i] = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add total bits
|
// add total bits
|
||||||
|
53
rand/ctr_drbg.go
Normal file
53
rand/ctr_drbg.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import rand
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/aes"
|
||||||
|
"crypto/cipher"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Constants below correspond to AES-256, which is currently
|
||||||
|
// the only block cipher supported.
|
||||||
|
const {
|
||||||
|
Blocklen = 16
|
||||||
|
Keylen = 32
|
||||||
|
}
|
||||||
|
|
||||||
|
type CtrDrbg struct {
|
||||||
|
v uint
|
||||||
|
keylen uint // OZAPTF: is it needed?
|
||||||
|
counter uint
|
||||||
|
strength uint
|
||||||
|
resistance bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *CtrDrbg) update(data []byte) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func New() *CtrDrbg {
|
||||||
|
c = new(CtrDrbg)
|
||||||
|
c.key = make([]byte, 0, Keylen)
|
||||||
|
c.v = make([]byte, 0, Blocklen)
|
||||||
|
// Security strength for AES-256 as per SP800-57, 5.6.1
|
||||||
|
c.strength = 256
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *CtrDrbg) Init(entropy []byte, personalization []byte, strength uint) bool {
|
||||||
|
|
||||||
|
if len(entropy) < (c.strength/8) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// does enropyt needs to have some minimal length?
|
||||||
|
seed := make([]byte, 0, c.strength / 8)
|
||||||
|
|
||||||
|
c.update(seed)
|
||||||
|
c.counter = 1
|
||||||
|
return c
|
||||||
|
|
||||||
|
}
|
||||||
|
func (c *CtrDrbg) Update() {}
|
||||||
|
func (c *CtrDrbg) Read(b []byte) (n int, err error) {
|
||||||
|
|
||||||
|
}
|
21
rand/ctr_drbg_test.go
Normal file
21
rand/ctr_drbg_test.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import rand
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"crypto/aes"
|
||||||
|
"crypto/cipher"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNominal(t* testing.T) {
|
||||||
|
block, err := aes.NewCipher(key)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
stream := cipher.NewCTR(block, iv)
|
||||||
|
stream.XORKeyStream(pt, ct)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user