isle/go/nebula/signed_test.go

49 lines
789 B
Go

package nebula
import (
"encoding/json"
"errors"
"testing"
)
func TestSigned(t *testing.T) {
type msg struct {
A int
B string
C bool
}
a := msg{1, "FOO", true}
signedA, err := Sign(a, hostPrivCredsA.SigningPrivateKey)
if err != nil {
t.Fatal(err)
}
signedJSON, err := json.Marshal(signedA)
if err != nil {
t.Fatal(err)
}
t.Log(string(signedJSON))
var signedB Signed[msg]
if err := json.Unmarshal(signedJSON, &signedB); err != nil {
t.Fatal(err)
}
_, err = signedB.Unwrap(hostPubCredsB.SigningKey)
if !errors.Is(err, ErrInvalidSignature) {
t.Fatalf("expected ErrInvalidSignature but got: %v", err)
}
b, err := signedB.Unwrap(hostPubCredsA.SigningKey)
if err != nil {
t.Fatal(err)
}
if a != b {
t.Fatalf("expected:%+v, got:%+v", a, b)
}
}