43b564e711
--- type: change message: |- refactor pgp types a bit to use the openpgp.Entity type By using Entity the pgp code will have access to the public key's identity information, which will help in making more readable commit messages from anonymous users. change_hash: AAJCn1/lybheXWv8Rfy2Y2r4UF9seGptC6uvFn894c8Y credentials: - type: pgp_signature pub_key_id: 95C46FA6A41148AC body: iQIzBAABAgAdFiEEJ6tQKp6olvZKJ0lwlcRvpqQRSKwFAl6TSX4ACgkQlcRvpqQRSKzCpQ/+I/8BmEtsbwepiGZiIFg0HZK+z4CR5DWLpKQg3w5+NDSfzY9dkdwqbt0ohPyFmLXZz7s1cn/iU0OOb59fUPmH0TklMedY+l1q5XDNZ160l5494QXNXZDKMGC2QIjst+Fu9Qwys7U+1pTu8rN3K1x/ZQCCJvDVFH13jj7bIna2ltxhsqNY6OiVUc5EJsZHbNAgFXqYJNt4XbC+9QcOyDyyYytmJnjEX2oquj7skac9uyBjjJGkqA70sjD4yn44iFqEpFuJAqFuEJDj1D4bkt7Ib+syi/eMPZgDvHRtMGAxl+fBU2OAG8GIlxveYqeUejCp8SYoat+0Tdoi3lT/wj2lTQRtMBeOGUccpsOMRI1t+g5ggKx3YcQgbKLixuAgl649fnX7fmBLB3IuG5PdgnTqjQBPkTBYhkR80fDSg3nfuh+1TVDGiW6C8HtJRlFWWDRcyaYhcWZwKXVTMm7xtgNJYwpLeDmuTCJV6kvldxmBZEmfrQ/1u+wKG2/kCun9stSHdEuuZVM8sv4ECME4C+1fTNnEkzJhHvULV39b41ODZolxNj8ZRa1qt8emC1Hw6ZUjdkA0gXS70l8tfOtQunPTPLDGzNZNYNw8H2JqEM3O6NLIzwEUJVYOA6BmibQj5I7QMSvOS2PpD9KDKIR2vXNsk1yUqdpu9PmLhcclrMqEGOc= account: mediocregopher
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package sigcred
|
|
|
|
import (
|
|
"errors"
|
|
"math/rand"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSelfVerifyingCredentials(t *testing.T) {
|
|
seed := time.Now().UnixNano()
|
|
t.Logf("seed: %d", seed)
|
|
rand := rand.New(rand.NewSource(seed))
|
|
|
|
tests := []struct {
|
|
descr string
|
|
mkCred func(toSign []byte) (Credential, error)
|
|
expErr bool
|
|
}{
|
|
{
|
|
descr: "pgp sig no body",
|
|
mkCred: func(toSign []byte) (Credential, error) {
|
|
privKey, _ := TestSignifierPGP("", rand)
|
|
return privKey.Sign(nil, toSign)
|
|
},
|
|
expErr: true,
|
|
},
|
|
{
|
|
descr: "pgp sig with body",
|
|
mkCred: func(toSign []byte) (Credential, error) {
|
|
privKey, pubKeyBody := TestSignifierPGP("", rand)
|
|
cred, err := privKey.Sign(nil, toSign)
|
|
cred.PGPSignature.PubKeyBody = string(pubKeyBody)
|
|
return cred, err
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.descr, func(t *testing.T) {
|
|
data := make([]byte, rand.Intn(1024))
|
|
if _, err := rand.Read(data); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
cred, err := test.mkCred(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = cred.SelfVerify(data)
|
|
isNotSelfVerifying := errors.As(err, new(ErrNotSelfVerifying))
|
|
if test.expErr && !isNotSelfVerifying {
|
|
t.Fatalf("expected ErrNotSelfVerifying but got: %v", err)
|
|
} else if !test.expErr && err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|