Skip to content

Commit

Permalink
优化
Browse files Browse the repository at this point in the history
  • Loading branch information
deatil committed Aug 25, 2024
1 parent 104c050 commit 4111c53
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
16 changes: 14 additions & 2 deletions fernet/key.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,27 @@ import (
)

var (
errKeyLen = errors.New("fernet: key decodes to wrong size")
errNoKeys = errors.New("fernet: no keys provided")
errKeyLen = errors.New("fernet: key decodes to wrong size")
errNoKeys = errors.New("fernet: no keys provided")
errKeyShort = errors.New("fernet: key too short")
)

// Key represents a key.
type Key struct {
Value [32]byte
}

func NewKey(k []byte) (*Key, error) {
if len(k) != 32 {
return nil, errKeyShort
}

key := &Key{}
copy(key.Value[:], k)

return key, nil
}

func (k *Key) cryptBytes() []byte {
return k.Value[len(k.Value)/2:]
}
Expand Down
24 changes: 23 additions & 1 deletion fernet/key_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package fernet

import "testing"
import (
"io"
"bytes"
"testing"
"crypto/rand"
)

func setKey(in []byte) Key {
k := Key{}
Expand Down Expand Up @@ -111,3 +116,20 @@ func Test_Encode(t *testing.T) {
}
}
}

func Test_NewKey(t *testing.T) {
k := make([]byte, 32)
_, err := io.ReadFull(rand.Reader, k)
if err != nil {
t.Fatal(err)
}

key, err := NewKey(k)
if err != nil {
t.Fatal(err)
}

if !bytes.Equal(key.Value[:], k) {
t.Errorf("NewKey fail, got %x, want %x", key.Value[:], k)
}
}

0 comments on commit 4111c53

Please sign in to comment.