Newer
Older
package sso
import (
"testing"
"time"
"golang.org/x/crypto/ed25519"
)
func TestEd25519(t *testing.T) {
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
if err != nil {
t.Fatal(err)
}
signer := &ssoSigner{key: priv}
validator := &ssoValidator{
publicKey: pub,
domain: "domain",
}
tkt := NewTicket("user", "service", "domain", "nonce", nil, 300*time.Second)
signed, err := signer.Sign(tkt)
if err != nil {
t.Fatal("Sign():", err)
}
if signed == "" {
t.Fatal("signed is nil")
}
tkt2, err := validator.Validate(signed, "nonce", "service", nil)
if err != nil {
t.Fatal("Validate():", err)
}
if tkt.User != tkt2.User || tkt.Service != tkt2.Service || tkt.Domain != tkt2.Domain || tkt.Nonce != tkt2.Nonce || tkt.Expires != tkt2.Expires {
t.Fatalf("decoded ticket differs: orig=%v, decoded=%v", tkt, tkt2)
}
}
var (
legacyTicket = "yIo0k9TRhTT9F1C89nMbTDqJH905aMbN_O72ke2mWlss3vQAWffQWMRHoc0auYBGEex01fNFVRREEJALcZ15BzR8dXNlcnxzZXJ2aWNlfGRvbWFpbnx8MTUwODA3MjQyNXw"
legacyPublicKey = []byte{47, 234, 144, 101, 76, 245, 1, 73, 155, 115, 89, 105, 165, 252, 49, 114, 48, 166, 231, 130, 82, 123, 147, 179, 50, 50, 34, 198, 219, 251, 151, 17}
)
func TestLegacy(t *testing.T) {
validator := &ssoValidator{publicKey: legacyPublicKey}
tkt, err := validator.parse(legacyTicket)
if err != nil {
t.Fatal("Parse():", err)
}
if tkt.User != "user" || tkt.Service != "service" || tkt.Domain != "domain" {
t.Fatalf("decoded bad values: %+v", tkt)
}
}