auto seed
This commit is contained in:
		
							
								
								
									
										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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user