Following the pattern elsewhere, we create a new tka-specific types package for the types that need to couple between the serialized structure types, and tka. Signed-off-by: Tom DNetto <tom@tailscale.com>main
parent
a9f6cd41fd
commit
f50043f6cb
@ -0,0 +1,34 @@ |
||||
// Copyright (c) 2022 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package tkatype defines types for working with the tka package.
|
||||
//
|
||||
// Do not add extra dependencies to this package unless they are tiny,
|
||||
// because this package encodes wire types that should be lightweight to use.
|
||||
package tkatype |
||||
|
||||
// KeyID references a verification key stored in the key authority. A keyID
|
||||
// uniquely identifies a key. KeyIDs are all 32 bytes.
|
||||
//
|
||||
// For 25519 keys: We just use the 32-byte public key.
|
||||
//
|
||||
// Even though this is a 32-byte value, we use a byte slice because
|
||||
// CBOR-encoded byte slices have a different prefix to CBOR-encoded arrays.
|
||||
// Encoding as a byte slice allows us to change the size in the future if we
|
||||
// ever need to.
|
||||
type KeyID []byte |
||||
|
||||
// MarshaledSignature represents a marshaled tka.NodeKeySignature.
|
||||
type MarshaledSignature []byte |
||||
|
||||
// AUMSigHash represents the BLAKE2s digest of an Authority Update
|
||||
// Message (AUM), sans any signatures.
|
||||
type AUMSigHash [32]byte |
||||
|
||||
// Signature describes a signature over an AUM, which can be verified
|
||||
// using the key referenced by KeyID.
|
||||
type Signature struct { |
||||
KeyID KeyID `cbor:"1,keyasint"` |
||||
Signature []byte `cbor:"2,keyasint"` |
||||
} |
||||
@ -0,0 +1,17 @@ |
||||
// Copyright (c) 2022 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package tkatype |
||||
|
||||
import ( |
||||
"golang.org/x/crypto/blake2s" |
||||
"testing" |
||||
) |
||||
|
||||
func TestSigHashSize(t *testing.T) { |
||||
var sigHash AUMSigHash |
||||
if len(sigHash) != blake2s.Size { |
||||
t.Errorf("AUMSigHash is wrong size: got %d, want %d", len(sigHash), blake2s.Size) |
||||
} |
||||
} |
||||
Loading…
Reference in new issue