tka, types/key: add NLPublic.KeyID
This allows direct use of NLPublic with tka.Authority.KeyTrusted() and similar without using tricks like converting the return value of Verifier. Signed-off-by: Adrian Dewhurst <adrian@tailscale.com>
This commit is contained in:
parent
944f43f1c8
commit
8c09ae9032
@ -9,6 +9,7 @@
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
"tailscale.com/types/key"
|
||||||
"tailscale.com/types/tkatype"
|
"tailscale.com/types/tkatype"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -437,3 +438,40 @@ func TestAuthorityInformLinear(t *testing.T) {
|
|||||||
t.Fatal("authority did not converge to correct AUM")
|
t.Fatal("authority did not converge to correct AUM")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInteropWithNLKey(t *testing.T) {
|
||||||
|
priv1 := key.NewNLPrivate()
|
||||||
|
pub1 := priv1.Public()
|
||||||
|
pub2 := key.NewNLPrivate().Public()
|
||||||
|
pub3 := key.NewNLPrivate().Public()
|
||||||
|
|
||||||
|
a, _, err := Create(&Mem{}, State{
|
||||||
|
Keys: []Key{
|
||||||
|
{
|
||||||
|
Kind: Key25519,
|
||||||
|
Votes: 1,
|
||||||
|
Public: pub1.KeyID(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Kind: Key25519,
|
||||||
|
Votes: 1,
|
||||||
|
Public: pub2.KeyID(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
DisablementSecrets: [][]byte{DisablementKDF([]byte{1, 2, 3})},
|
||||||
|
}, priv1)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("tka.Create: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !a.KeyTrusted(pub1.KeyID()) {
|
||||||
|
t.Error("pub1 want trusted, got untrusted")
|
||||||
|
}
|
||||||
|
if !a.KeyTrusted(pub2.KeyID()) {
|
||||||
|
t.Error("pub2 want trusted, got untrusted")
|
||||||
|
}
|
||||||
|
if a.KeyTrusted(pub3.KeyID()) {
|
||||||
|
t.Error("pub3 want untrusted, got trusted")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -125,3 +125,8 @@ func (k NLPublic) IsZero() bool {
|
|||||||
func (k NLPublic) Equal(other NLPublic) bool {
|
func (k NLPublic) Equal(other NLPublic) bool {
|
||||||
return subtle.ConstantTimeCompare(k.k[:], other.k[:]) == 1
|
return subtle.ConstantTimeCompare(k.k[:], other.k[:]) == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// KeyID returns a tkatype.KeyID that can be used with a tka.Authority.
|
||||||
|
func (k NLPublic) KeyID() tkatype.KeyID {
|
||||||
|
return k.k[:]
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user