49 lines
788 B
Go
49 lines
788 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)
|
|
}
|
|
}
|