mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-04 08:51:27 +01:00
Extend Persist with AttestationKey to record a hardware-backed attestation key for the node's identity. Add a flag to tailscaled to allow users to control the use of hardware-backed keys to bind node identity to individual machines. Updates tailscale/corp#31269 Change-Id: Idcf40d730a448d85f07f1bebf387f086d4c58be3 Signed-off-by: Patrick O'Doherty <patrick@tailscale.com>
35 lines
821 B
Go
35 lines
821 B
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
//go:generate go run tailscale.com/cmd/cloner -clonefunc=true -type SliceContainer,InterfaceContainer
|
|
|
|
// Package clonerex is an example package for the cloner tool.
|
|
package clonerex
|
|
|
|
type SliceContainer struct {
|
|
Slice []*int
|
|
}
|
|
|
|
// Cloneable is an interface with a Clone method.
|
|
type Cloneable interface {
|
|
Clone() Cloneable
|
|
}
|
|
|
|
// CloneableImpl is a concrete type that implements Cloneable.
|
|
type CloneableImpl struct {
|
|
Value int
|
|
}
|
|
|
|
func (c *CloneableImpl) Clone() Cloneable {
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return &CloneableImpl{Value: c.Value}
|
|
}
|
|
|
|
// InterfaceContainer has a pointer to an interface field, which tests
|
|
// the special handling for interface types in the cloner.
|
|
type InterfaceContainer struct {
|
|
Interface Cloneable
|
|
}
|