auto seed
This commit is contained in:
parent
a6c329054e
commit
640491d424
37
sign.go
37
sign.go
@ -7,7 +7,6 @@ import (
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/ugorji/go/codec"
|
||||
"hash/crc64"
|
||||
"strings"
|
||||
@ -51,21 +50,13 @@ func (tc TokenCoder) SeedHex() string {
|
||||
return hex.EncodeToString(tc.Seed())
|
||||
}
|
||||
|
||||
func NewTokenCoder(seed []byte, pubKeys ...[]byte) (tc TokenCoder, err error) {
|
||||
tc.pubKeys = make([]ed25519.PublicKey, len(pubKeys)+1, len(pubKeys)+1)
|
||||
if len(seed) == 0 {
|
||||
seed = make([]byte, ed25519.SeedSize, ed25519.SeedSize)
|
||||
_, err = rand.Read(seed)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func NewTokenCoderWithSeed(seed []byte, pubKeys ...[]byte) (tc TokenCoder, err error) {
|
||||
if len(seed) != ed25519.SeedSize {
|
||||
err = errors.New("Incorrect seed size")
|
||||
return
|
||||
}
|
||||
|
||||
tc.pubKeys = make([]ed25519.PublicKey, len(pubKeys)+1, len(pubKeys)+1)
|
||||
tc.privKey = ed25519.NewKeyFromSeed(seed)
|
||||
tc.pubKeys[len(pubKeys)] = tc.privKey.Public().(ed25519.PublicKey)
|
||||
|
||||
@ -80,7 +71,16 @@ func NewTokenCoder(seed []byte, pubKeys ...[]byte) (tc TokenCoder, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func NewTokenCoderHex(seed string, pubKeys ...string) (tc TokenCoder, err error) {
|
||||
func NewTokenCoder(pubKeys ...[]byte) (tc TokenCoder, err error) {
|
||||
seed := make([]byte, ed25519.SeedSize, ed25519.SeedSize)
|
||||
_, err = rand.Read(seed)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return NewTokenCoderWithSeed(seed, pubKeys...)
|
||||
}
|
||||
|
||||
func NewTokenCoderHexWithSeed(seed string, pubKeys ...string) (tc TokenCoder, err error) {
|
||||
var rawSeed []byte
|
||||
rawPubKeys := make([][]byte, len(pubKeys), len(pubKeys))
|
||||
rawSeed, err = hex.DecodeString(seed)
|
||||
@ -93,7 +93,18 @@ func NewTokenCoderHex(seed string, pubKeys ...string) (tc TokenCoder, err error)
|
||||
return
|
||||
}
|
||||
}
|
||||
return NewTokenCoder(rawSeed, rawPubKeys...)
|
||||
return NewTokenCoderWithSeed(rawSeed, rawPubKeys...)
|
||||
}
|
||||
|
||||
func NewTokenCoderHex(pubKeys ...string) (tc TokenCoder, err error) {
|
||||
rawPubKeys := make([][]byte, len(pubKeys), len(pubKeys))
|
||||
for pos, pubKey := range pubKeys {
|
||||
rawPubKeys[pos], err = hex.DecodeString(pubKey)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return NewTokenCoder(rawPubKeys...)
|
||||
}
|
||||
|
||||
func trim(r rune) bool {
|
||||
|
Loading…
Reference in New Issue
Block a user