Files
teleport/lib/devicetrust/assertserver/assert.go
T
Alan Parra 2cb249dc9f Define server-side device assertion interfaces (#44036)
* Define server-side device assertion interfaces

* Update proto comments

* Update generated protos
2024-07-11 13:13:47 +00:00

51 lines
1.9 KiB
Go

// Teleport
// Copyright (C) 2024 Gravitational, Inc.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package assertserver
import (
"context"
devicepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1"
)
// AssertDeviceServerStream represents a server-side device assertion stream.
type AssertDeviceServerStream interface {
Send(*devicepb.AssertDeviceResponse) error
Recv() (*devicepb.AssertDeviceRequest, error)
}
// Ceremony is the server-side device assertion ceremony.
//
// Device assertion is a light form of device authentication where the user
// isn't considered and no side-effects (like certificate issuance) happen.
//
// Assertion is meant to be embedded in RPCs or streams external to the
// DeviceTrustService itself.
//
// Implementations are provided by e/.
// See e/lib/devicetrustv1.Service.CreateAssertCeremony.
type Ceremony interface {
// AssertDevice runs the device assertion ceremonies.
//
// Requests and responses are consumed from the stream until the device is
// asserted or authentication fails.
//
// As long as any device information is acquired from the stream, a non-nil
// device is returned, even if the ceremony itself failed.
AssertDevice(ctx context.Context, stream AssertDeviceServerStream) (*devicepb.Device, error)
}