mirror of https://github.com/docker/docs.git
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
package api_test
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/agl/ed25519"
|
|
"github.com/docker/notary/signer/api"
|
|
"github.com/docker/notary/signer/keys"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
pb "github.com/docker/notary/proto"
|
|
)
|
|
|
|
type zeroReader struct{}
|
|
|
|
func (zeroReader) Read(buf []byte) (int, error) {
|
|
for i := range buf {
|
|
buf[i] = 0
|
|
}
|
|
return len(buf), nil
|
|
}
|
|
|
|
func TestSign(t *testing.T) {
|
|
var zero zeroReader
|
|
public, private, _ := ed25519.GenerateKey(zero)
|
|
|
|
blob := []byte("test message")
|
|
|
|
directSig := ed25519.Sign(private, blob)
|
|
directSigHex := hex.EncodeToString(directSig[:])
|
|
|
|
signer := api.NewEd25519Signer(&keys.Key{Private: private, Public: *public, ID: "fake_id"})
|
|
|
|
sigRequest := &pb.SignatureRequest{KeyID: &pb.KeyID{ID: "fake_id"}, Content: blob}
|
|
|
|
sig, err := signer.Sign(sigRequest)
|
|
assert.Nil(t, err)
|
|
signatureHex := fmt.Sprintf("%x", sig.Content)
|
|
|
|
assert.Equal(t, directSigHex, signatureHex)
|
|
assert.Equal(t, sig.KeyInfo.KeyID.ID, "fake_id")
|
|
}
|
|
|
|
func BenchmarkSign(b *testing.B) {
|
|
blob := []byte("7d16f1d0b95310a7bc557747fc4f20fcd41c1c5095ae42f189df")
|
|
|
|
keyDB := keys.NewKeyDB()
|
|
var sigService = api.NewEdDSASigningService(keyDB)
|
|
|
|
key, _ := sigService.CreateKey()
|
|
privkey, _ := keyDB.GetKey(key.KeyInfo.KeyID)
|
|
|
|
signer := api.NewEd25519Signer(privkey)
|
|
sigRequest := &pb.SignatureRequest{KeyID: key.KeyInfo.KeyID, Content: blob}
|
|
|
|
for n := 0; n < b.N; n++ {
|
|
_, _ = signer.Sign(sigRequest)
|
|
}
|
|
}
|