func (prkg *KeyIterator) Init(compositeSeed []byte) bool {
	buf := bytes.NewBuffer(compositeSeed)
	var fieldLen uint8
	if err := binary.Read(buf, binary.BigEndian,
		&fieldLen); (nil != err) && (0 == fieldLen) {
		return false
	}
	compactSeed := make([]byte, fieldLen)
	if err := binary.Read(buf, binary.BigEndian,
		compactSeed); nil != err {
		return false
	}
	prkg.rng = rand.New(compactSeed)
	if nil == prkg.WtnOpts {
		prkg.WtnOpts = NewWtnOpts(SecurityLevel)
	}
	var offset uint32
	if err := binary.Read(buf, binary.BigEndian,
		&offset); nil != err {
		return false
	}
	prkg.offset = offset
	prkg.SetKeyIdx(prkg.offset)
	fieldLen = 0
	if err := binary.Read(buf, binary.BigEndian,
		&fieldLen); (nil != err) && (0 == fieldLen) {
		return false
	}
	nonce := make([]byte, fieldLen)
	if err := binary.Read(buf, binary.BigEndian,
		nonce); io.ErrUnexpectedEOF == err {
		return false
	}
	prkg.WtnOpts.SetNonce(nonce)
	return true
}
Init initialises the prkgator with the composite seed
exported by Serialize()
package winternitz
import (
	"bytes"
	"encoding/binary"
	"io"
	"github.com/LoCCS/mss/rand"
)
type KeyIterator struct {
	rng *rand.Rand
	offset uint32
	*WtnOpts
}
func NewKeyIterator(compactSeed []byte) *KeyIterator {
	prkg := new(KeyIterator)
	prkg.rng = rand.New(compactSeed)
	prkg.offset = 0
	prkg.WtnOpts = NewWtnOpts(SecurityLevel)
	return prkg
}