// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 // protoc v6.32.1 // source: sgard/v1/sgard.proto package sgardpb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type PushManifestResponse_Decision int32 const ( PushManifestResponse_DECISION_UNSPECIFIED PushManifestResponse_Decision = 0 PushManifestResponse_ACCEPTED PushManifestResponse_Decision = 1 // server is older; push proceeds PushManifestResponse_REJECTED PushManifestResponse_Decision = 2 // server is newer; client should pull PushManifestResponse_UP_TO_DATE PushManifestResponse_Decision = 3 // timestamps match; nothing to do ) // Enum value maps for PushManifestResponse_Decision. var ( PushManifestResponse_Decision_name = map[int32]string{ 0: "DECISION_UNSPECIFIED", 1: "ACCEPTED", 2: "REJECTED", 3: "UP_TO_DATE", } PushManifestResponse_Decision_value = map[string]int32{ "DECISION_UNSPECIFIED": 0, "ACCEPTED": 1, "REJECTED": 2, "UP_TO_DATE": 3, } ) func (x PushManifestResponse_Decision) Enum() *PushManifestResponse_Decision { p := new(PushManifestResponse_Decision) *p = x return p } func (x PushManifestResponse_Decision) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (PushManifestResponse_Decision) Descriptor() protoreflect.EnumDescriptor { return file_sgard_v1_sgard_proto_enumTypes[0].Descriptor() } func (PushManifestResponse_Decision) Type() protoreflect.EnumType { return &file_sgard_v1_sgard_proto_enumTypes[0] } func (x PushManifestResponse_Decision) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use PushManifestResponse_Decision.Descriptor instead. func (PushManifestResponse_Decision) EnumDescriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{6, 0} } // ManifestEntry mirrors manifest.Entry from the YAML model. type ManifestEntry struct { state protoimpl.MessageState `protogen:"open.v1"` Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` // "file", "directory", "link" Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` Target string `protobuf:"bytes,5,opt,name=target,proto3" json:"target,omitempty"` Updated *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated,proto3" json:"updated,omitempty"` PlaintextHash string `protobuf:"bytes,7,opt,name=plaintext_hash,json=plaintextHash,proto3" json:"plaintext_hash,omitempty"` // SHA-256 of plaintext (encrypted entries only) Encrypted bool `protobuf:"varint,8,opt,name=encrypted,proto3" json:"encrypted,omitempty"` Locked bool `protobuf:"varint,9,opt,name=locked,proto3" json:"locked,omitempty"` // repo-authoritative; restore always overwrites Only []string `protobuf:"bytes,10,rep,name=only,proto3" json:"only,omitempty"` // per-machine targeting: only apply on matching Never []string `protobuf:"bytes,11,rep,name=never,proto3" json:"never,omitempty"` // per-machine targeting: never apply on matching unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ManifestEntry) Reset() { *x = ManifestEntry{} mi := &file_sgard_v1_sgard_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ManifestEntry) String() string { return protoimpl.X.MessageStringOf(x) } func (*ManifestEntry) ProtoMessage() {} func (x *ManifestEntry) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ManifestEntry.ProtoReflect.Descriptor instead. func (*ManifestEntry) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{0} } func (x *ManifestEntry) GetPath() string { if x != nil { return x.Path } return "" } func (x *ManifestEntry) GetHash() string { if x != nil { return x.Hash } return "" } func (x *ManifestEntry) GetType() string { if x != nil { return x.Type } return "" } func (x *ManifestEntry) GetMode() string { if x != nil { return x.Mode } return "" } func (x *ManifestEntry) GetTarget() string { if x != nil { return x.Target } return "" } func (x *ManifestEntry) GetUpdated() *timestamppb.Timestamp { if x != nil { return x.Updated } return nil } func (x *ManifestEntry) GetPlaintextHash() string { if x != nil { return x.PlaintextHash } return "" } func (x *ManifestEntry) GetEncrypted() bool { if x != nil { return x.Encrypted } return false } func (x *ManifestEntry) GetLocked() bool { if x != nil { return x.Locked } return false } func (x *ManifestEntry) GetOnly() []string { if x != nil { return x.Only } return nil } func (x *ManifestEntry) GetNever() []string { if x != nil { return x.Never } return nil } // KekSlot describes a single KEK source for unwrapping the DEK. type KekSlot struct { state protoimpl.MessageState `protogen:"open.v1"` Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "passphrase" or "fido2" Argon2Time int32 `protobuf:"varint,2,opt,name=argon2_time,json=argon2Time,proto3" json:"argon2_time,omitempty"` Argon2Memory int32 `protobuf:"varint,3,opt,name=argon2_memory,json=argon2Memory,proto3" json:"argon2_memory,omitempty"` // KiB Argon2Threads int32 `protobuf:"varint,4,opt,name=argon2_threads,json=argon2Threads,proto3" json:"argon2_threads,omitempty"` CredentialId string `protobuf:"bytes,5,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` // base64, fido2 only Salt string `protobuf:"bytes,6,opt,name=salt,proto3" json:"salt,omitempty"` // base64 WrappedDek string `protobuf:"bytes,7,opt,name=wrapped_dek,json=wrappedDek,proto3" json:"wrapped_dek,omitempty"` // base64 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *KekSlot) Reset() { *x = KekSlot{} mi := &file_sgard_v1_sgard_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *KekSlot) String() string { return protoimpl.X.MessageStringOf(x) } func (*KekSlot) ProtoMessage() {} func (x *KekSlot) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use KekSlot.ProtoReflect.Descriptor instead. func (*KekSlot) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{1} } func (x *KekSlot) GetType() string { if x != nil { return x.Type } return "" } func (x *KekSlot) GetArgon2Time() int32 { if x != nil { return x.Argon2Time } return 0 } func (x *KekSlot) GetArgon2Memory() int32 { if x != nil { return x.Argon2Memory } return 0 } func (x *KekSlot) GetArgon2Threads() int32 { if x != nil { return x.Argon2Threads } return 0 } func (x *KekSlot) GetCredentialId() string { if x != nil { return x.CredentialId } return "" } func (x *KekSlot) GetSalt() string { if x != nil { return x.Salt } return "" } func (x *KekSlot) GetWrappedDek() string { if x != nil { return x.WrappedDek } return "" } // Encryption holds the encryption configuration. type Encryption struct { state protoimpl.MessageState `protogen:"open.v1"` Algorithm string `protobuf:"bytes,1,opt,name=algorithm,proto3" json:"algorithm,omitempty"` KekSlots map[string]*KekSlot `protobuf:"bytes,2,rep,name=kek_slots,json=kekSlots,proto3" json:"kek_slots,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Encryption) Reset() { *x = Encryption{} mi := &file_sgard_v1_sgard_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Encryption) String() string { return protoimpl.X.MessageStringOf(x) } func (*Encryption) ProtoMessage() {} func (x *Encryption) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Encryption.ProtoReflect.Descriptor instead. func (*Encryption) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{2} } func (x *Encryption) GetAlgorithm() string { if x != nil { return x.Algorithm } return "" } func (x *Encryption) GetKekSlots() map[string]*KekSlot { if x != nil { return x.KekSlots } return nil } // Manifest mirrors the top-level manifest.Manifest. type Manifest struct { state protoimpl.MessageState `protogen:"open.v1"` Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` Created *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"` Updated *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated,proto3" json:"updated,omitempty"` Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` Files []*ManifestEntry `protobuf:"bytes,5,rep,name=files,proto3" json:"files,omitempty"` Encryption *Encryption `protobuf:"bytes,6,opt,name=encryption,proto3" json:"encryption,omitempty"` Exclude []string `protobuf:"bytes,7,rep,name=exclude,proto3" json:"exclude,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Manifest) Reset() { *x = Manifest{} mi := &file_sgard_v1_sgard_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Manifest) String() string { return protoimpl.X.MessageStringOf(x) } func (*Manifest) ProtoMessage() {} func (x *Manifest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Manifest.ProtoReflect.Descriptor instead. func (*Manifest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{3} } func (x *Manifest) GetVersion() int32 { if x != nil { return x.Version } return 0 } func (x *Manifest) GetCreated() *timestamppb.Timestamp { if x != nil { return x.Created } return nil } func (x *Manifest) GetUpdated() *timestamppb.Timestamp { if x != nil { return x.Updated } return nil } func (x *Manifest) GetMessage() string { if x != nil { return x.Message } return "" } func (x *Manifest) GetFiles() []*ManifestEntry { if x != nil { return x.Files } return nil } func (x *Manifest) GetEncryption() *Encryption { if x != nil { return x.Encryption } return nil } func (x *Manifest) GetExclude() []string { if x != nil { return x.Exclude } return nil } // BlobChunk is one piece of a streamed blob. The first chunk for a given // hash carries the hash field; subsequent chunks omit it. type BlobChunk struct { state protoimpl.MessageState `protogen:"open.v1"` Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` // SHA-256 hex, present on the first chunk of each blob Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // up to 64 KiB per chunk unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BlobChunk) Reset() { *x = BlobChunk{} mi := &file_sgard_v1_sgard_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *BlobChunk) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlobChunk) ProtoMessage() {} func (x *BlobChunk) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BlobChunk.ProtoReflect.Descriptor instead. func (*BlobChunk) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{4} } func (x *BlobChunk) GetHash() string { if x != nil { return x.Hash } return "" } func (x *BlobChunk) GetData() []byte { if x != nil { return x.Data } return nil } type PushManifestRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Manifest *Manifest `protobuf:"bytes,1,opt,name=manifest,proto3" json:"manifest,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PushManifestRequest) Reset() { *x = PushManifestRequest{} mi := &file_sgard_v1_sgard_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PushManifestRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushManifestRequest) ProtoMessage() {} func (x *PushManifestRequest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PushManifestRequest.ProtoReflect.Descriptor instead. func (*PushManifestRequest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{5} } func (x *PushManifestRequest) GetManifest() *Manifest { if x != nil { return x.Manifest } return nil } type PushManifestResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Decision PushManifestResponse_Decision `protobuf:"varint,1,opt,name=decision,proto3,enum=sgard.v1.PushManifestResponse_Decision" json:"decision,omitempty"` MissingBlobs []string `protobuf:"bytes,2,rep,name=missing_blobs,json=missingBlobs,proto3" json:"missing_blobs,omitempty"` // hashes the server needs ServerUpdated *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=server_updated,json=serverUpdated,proto3" json:"server_updated,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PushManifestResponse) Reset() { *x = PushManifestResponse{} mi := &file_sgard_v1_sgard_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PushManifestResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushManifestResponse) ProtoMessage() {} func (x *PushManifestResponse) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PushManifestResponse.ProtoReflect.Descriptor instead. func (*PushManifestResponse) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{6} } func (x *PushManifestResponse) GetDecision() PushManifestResponse_Decision { if x != nil { return x.Decision } return PushManifestResponse_DECISION_UNSPECIFIED } func (x *PushManifestResponse) GetMissingBlobs() []string { if x != nil { return x.MissingBlobs } return nil } func (x *PushManifestResponse) GetServerUpdated() *timestamppb.Timestamp { if x != nil { return x.ServerUpdated } return nil } type PushBlobsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Chunk *BlobChunk `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PushBlobsRequest) Reset() { *x = PushBlobsRequest{} mi := &file_sgard_v1_sgard_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PushBlobsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushBlobsRequest) ProtoMessage() {} func (x *PushBlobsRequest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PushBlobsRequest.ProtoReflect.Descriptor instead. func (*PushBlobsRequest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{7} } func (x *PushBlobsRequest) GetChunk() *BlobChunk { if x != nil { return x.Chunk } return nil } type PushBlobsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` BlobsReceived int32 `protobuf:"varint,1,opt,name=blobs_received,json=blobsReceived,proto3" json:"blobs_received,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PushBlobsResponse) Reset() { *x = PushBlobsResponse{} mi := &file_sgard_v1_sgard_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PushBlobsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushBlobsResponse) ProtoMessage() {} func (x *PushBlobsResponse) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PushBlobsResponse.ProtoReflect.Descriptor instead. func (*PushBlobsResponse) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{8} } func (x *PushBlobsResponse) GetBlobsReceived() int32 { if x != nil { return x.BlobsReceived } return 0 } type PullManifestRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PullManifestRequest) Reset() { *x = PullManifestRequest{} mi := &file_sgard_v1_sgard_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PullManifestRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullManifestRequest) ProtoMessage() {} func (x *PullManifestRequest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PullManifestRequest.ProtoReflect.Descriptor instead. func (*PullManifestRequest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{9} } type PullManifestResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Manifest *Manifest `protobuf:"bytes,1,opt,name=manifest,proto3" json:"manifest,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PullManifestResponse) Reset() { *x = PullManifestResponse{} mi := &file_sgard_v1_sgard_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PullManifestResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullManifestResponse) ProtoMessage() {} func (x *PullManifestResponse) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PullManifestResponse.ProtoReflect.Descriptor instead. func (*PullManifestResponse) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{10} } func (x *PullManifestResponse) GetManifest() *Manifest { if x != nil { return x.Manifest } return nil } type PullBlobsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Hashes []string `protobuf:"bytes,1,rep,name=hashes,proto3" json:"hashes,omitempty"` // blobs the client needs unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PullBlobsRequest) Reset() { *x = PullBlobsRequest{} mi := &file_sgard_v1_sgard_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PullBlobsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullBlobsRequest) ProtoMessage() {} func (x *PullBlobsRequest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PullBlobsRequest.ProtoReflect.Descriptor instead. func (*PullBlobsRequest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{11} } func (x *PullBlobsRequest) GetHashes() []string { if x != nil { return x.Hashes } return nil } type PullBlobsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Chunk *BlobChunk `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PullBlobsResponse) Reset() { *x = PullBlobsResponse{} mi := &file_sgard_v1_sgard_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PullBlobsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullBlobsResponse) ProtoMessage() {} func (x *PullBlobsResponse) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PullBlobsResponse.ProtoReflect.Descriptor instead. func (*PullBlobsResponse) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{12} } func (x *PullBlobsResponse) GetChunk() *BlobChunk { if x != nil { return x.Chunk } return nil } type PruneRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PruneRequest) Reset() { *x = PruneRequest{} mi := &file_sgard_v1_sgard_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PruneRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PruneRequest) ProtoMessage() {} func (x *PruneRequest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PruneRequest.ProtoReflect.Descriptor instead. func (*PruneRequest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{13} } type PruneResponse struct { state protoimpl.MessageState `protogen:"open.v1"` BlobsRemoved int32 `protobuf:"varint,1,opt,name=blobs_removed,json=blobsRemoved,proto3" json:"blobs_removed,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PruneResponse) Reset() { *x = PruneResponse{} mi := &file_sgard_v1_sgard_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PruneResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PruneResponse) ProtoMessage() {} func (x *PruneResponse) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PruneResponse.ProtoReflect.Descriptor instead. func (*PruneResponse) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{14} } func (x *PruneResponse) GetBlobsRemoved() int32 { if x != nil { return x.BlobsRemoved } return 0 } type AuthenticateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Nonce []byte `protobuf:"bytes,1,opt,name=nonce,proto3" json:"nonce,omitempty"` // 32-byte nonce (server-provided or client-generated) Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix seconds Signature []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` // SSH signature over (nonce || timestamp) PublicKey string `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // SSH public key in authorized_keys format unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AuthenticateRequest) Reset() { *x = AuthenticateRequest{} mi := &file_sgard_v1_sgard_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AuthenticateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuthenticateRequest) ProtoMessage() {} func (x *AuthenticateRequest) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AuthenticateRequest.ProtoReflect.Descriptor instead. func (*AuthenticateRequest) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{15} } func (x *AuthenticateRequest) GetNonce() []byte { if x != nil { return x.Nonce } return nil } func (x *AuthenticateRequest) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } func (x *AuthenticateRequest) GetSignature() []byte { if x != nil { return x.Signature } return nil } func (x *AuthenticateRequest) GetPublicKey() string { if x != nil { return x.PublicKey } return "" } type AuthenticateResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` // JWT valid for 30 days unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AuthenticateResponse) Reset() { *x = AuthenticateResponse{} mi := &file_sgard_v1_sgard_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AuthenticateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuthenticateResponse) ProtoMessage() {} func (x *AuthenticateResponse) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AuthenticateResponse.ProtoReflect.Descriptor instead. func (*AuthenticateResponse) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{16} } func (x *AuthenticateResponse) GetToken() string { if x != nil { return x.Token } return "" } // ReauthChallenge is embedded in Unauthenticated error details when a // token is expired but was previously valid. The client signs this // challenge to obtain a new token without generating its own nonce. type ReauthChallenge struct { state protoimpl.MessageState `protogen:"open.v1"` Nonce []byte `protobuf:"bytes,1,opt,name=nonce,proto3" json:"nonce,omitempty"` // server-generated 32-byte nonce Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // server's current Unix timestamp unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReauthChallenge) Reset() { *x = ReauthChallenge{} mi := &file_sgard_v1_sgard_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReauthChallenge) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReauthChallenge) ProtoMessage() {} func (x *ReauthChallenge) ProtoReflect() protoreflect.Message { mi := &file_sgard_v1_sgard_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReauthChallenge.ProtoReflect.Descriptor instead. func (*ReauthChallenge) Descriptor() ([]byte, []int) { return file_sgard_v1_sgard_proto_rawDescGZIP(), []int{17} } func (x *ReauthChallenge) GetNonce() []byte { if x != nil { return x.Nonce } return nil } func (x *ReauthChallenge) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } var File_sgard_v1_sgard_proto protoreflect.FileDescriptor const file_sgard_v1_sgard_proto_rawDesc = "" + "\n" + "\x14sgard/v1/sgard.proto\x12\bsgard.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb4\x02\n" + "\rManifestEntry\x12\x12\n" + "\x04path\x18\x01 \x01(\tR\x04path\x12\x12\n" + "\x04hash\x18\x02 \x01(\tR\x04hash\x12\x12\n" + "\x04type\x18\x03 \x01(\tR\x04type\x12\x12\n" + "\x04mode\x18\x04 \x01(\tR\x04mode\x12\x16\n" + "\x06target\x18\x05 \x01(\tR\x06target\x124\n" + "\aupdated\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\aupdated\x12%\n" + "\x0eplaintext_hash\x18\a \x01(\tR\rplaintextHash\x12\x1c\n" + "\tencrypted\x18\b \x01(\bR\tencrypted\x12\x16\n" + "\x06locked\x18\t \x01(\bR\x06locked\x12\x12\n" + "\x04only\x18\n" + " \x03(\tR\x04only\x12\x14\n" + "\x05never\x18\v \x03(\tR\x05never\"\xe4\x01\n" + "\aKekSlot\x12\x12\n" + "\x04type\x18\x01 \x01(\tR\x04type\x12\x1f\n" + "\vargon2_time\x18\x02 \x01(\x05R\n" + "argon2Time\x12#\n" + "\rargon2_memory\x18\x03 \x01(\x05R\fargon2Memory\x12%\n" + "\x0eargon2_threads\x18\x04 \x01(\x05R\rargon2Threads\x12#\n" + "\rcredential_id\x18\x05 \x01(\tR\fcredentialId\x12\x12\n" + "\x04salt\x18\x06 \x01(\tR\x04salt\x12\x1f\n" + "\vwrapped_dek\x18\a \x01(\tR\n" + "wrappedDek\"\xbb\x01\n" + "\n" + "Encryption\x12\x1c\n" + "\talgorithm\x18\x01 \x01(\tR\talgorithm\x12?\n" + "\tkek_slots\x18\x02 \x03(\v2\".sgard.v1.Encryption.KekSlotsEntryR\bkekSlots\x1aN\n" + "\rKekSlotsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12'\n" + "\x05value\x18\x02 \x01(\v2\x11.sgard.v1.KekSlotR\x05value:\x028\x01\"\xa9\x02\n" + "\bManifest\x12\x18\n" + "\aversion\x18\x01 \x01(\x05R\aversion\x124\n" + "\acreated\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\acreated\x124\n" + "\aupdated\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\aupdated\x12\x18\n" + "\amessage\x18\x04 \x01(\tR\amessage\x12-\n" + "\x05files\x18\x05 \x03(\v2\x17.sgard.v1.ManifestEntryR\x05files\x124\n" + "\n" + "encryption\x18\x06 \x01(\v2\x14.sgard.v1.EncryptionR\n" + "encryption\x12\x18\n" + "\aexclude\x18\a \x03(\tR\aexclude\"3\n" + "\tBlobChunk\x12\x12\n" + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + "\x04data\x18\x02 \x01(\fR\x04data\"E\n" + "\x13PushManifestRequest\x12.\n" + "\bmanifest\x18\x01 \x01(\v2\x12.sgard.v1.ManifestR\bmanifest\"\x95\x02\n" + "\x14PushManifestResponse\x12C\n" + "\bdecision\x18\x01 \x01(\x0e2'.sgard.v1.PushManifestResponse.DecisionR\bdecision\x12#\n" + "\rmissing_blobs\x18\x02 \x03(\tR\fmissingBlobs\x12A\n" + "\x0eserver_updated\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\rserverUpdated\"P\n" + "\bDecision\x12\x18\n" + "\x14DECISION_UNSPECIFIED\x10\x00\x12\f\n" + "\bACCEPTED\x10\x01\x12\f\n" + "\bREJECTED\x10\x02\x12\x0e\n" + "\n" + "UP_TO_DATE\x10\x03\"=\n" + "\x10PushBlobsRequest\x12)\n" + "\x05chunk\x18\x01 \x01(\v2\x13.sgard.v1.BlobChunkR\x05chunk\":\n" + "\x11PushBlobsResponse\x12%\n" + "\x0eblobs_received\x18\x01 \x01(\x05R\rblobsReceived\"\x15\n" + "\x13PullManifestRequest\"F\n" + "\x14PullManifestResponse\x12.\n" + "\bmanifest\x18\x01 \x01(\v2\x12.sgard.v1.ManifestR\bmanifest\"*\n" + "\x10PullBlobsRequest\x12\x16\n" + "\x06hashes\x18\x01 \x03(\tR\x06hashes\">\n" + "\x11PullBlobsResponse\x12)\n" + "\x05chunk\x18\x01 \x01(\v2\x13.sgard.v1.BlobChunkR\x05chunk\"\x0e\n" + "\fPruneRequest\"4\n" + "\rPruneResponse\x12#\n" + "\rblobs_removed\x18\x01 \x01(\x05R\fblobsRemoved\"\x86\x01\n" + "\x13AuthenticateRequest\x12\x14\n" + "\x05nonce\x18\x01 \x01(\fR\x05nonce\x12\x1c\n" + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x1c\n" + "\tsignature\x18\x03 \x01(\fR\tsignature\x12\x1d\n" + "\n" + "public_key\x18\x04 \x01(\tR\tpublicKey\",\n" + "\x14AuthenticateResponse\x12\x14\n" + "\x05token\x18\x01 \x01(\tR\x05token\"E\n" + "\x0fReauthChallenge\x12\x14\n" + "\x05nonce\x18\x01 \x01(\fR\x05nonce\x12\x1c\n" + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp2\xc3\x03\n" + "\n" + "GardenSync\x12M\n" + "\fAuthenticate\x12\x1d.sgard.v1.AuthenticateRequest\x1a\x1e.sgard.v1.AuthenticateResponse\x12M\n" + "\fPushManifest\x12\x1d.sgard.v1.PushManifestRequest\x1a\x1e.sgard.v1.PushManifestResponse\x12F\n" + "\tPushBlobs\x12\x1a.sgard.v1.PushBlobsRequest\x1a\x1b.sgard.v1.PushBlobsResponse(\x01\x12M\n" + "\fPullManifest\x12\x1d.sgard.v1.PullManifestRequest\x1a\x1e.sgard.v1.PullManifestResponse\x12F\n" + "\tPullBlobs\x12\x1a.sgard.v1.PullBlobsRequest\x1a\x1b.sgard.v1.PullBlobsResponse0\x01\x128\n" + "\x05Prune\x12\x16.sgard.v1.PruneRequest\x1a\x17.sgard.v1.PruneResponseB Z\x1egithub.com/kisom/sgard/sgardpbb\x06proto3" var ( file_sgard_v1_sgard_proto_rawDescOnce sync.Once file_sgard_v1_sgard_proto_rawDescData []byte ) func file_sgard_v1_sgard_proto_rawDescGZIP() []byte { file_sgard_v1_sgard_proto_rawDescOnce.Do(func() { file_sgard_v1_sgard_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_sgard_v1_sgard_proto_rawDesc), len(file_sgard_v1_sgard_proto_rawDesc))) }) return file_sgard_v1_sgard_proto_rawDescData } var file_sgard_v1_sgard_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_sgard_v1_sgard_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_sgard_v1_sgard_proto_goTypes = []any{ (PushManifestResponse_Decision)(0), // 0: sgard.v1.PushManifestResponse.Decision (*ManifestEntry)(nil), // 1: sgard.v1.ManifestEntry (*KekSlot)(nil), // 2: sgard.v1.KekSlot (*Encryption)(nil), // 3: sgard.v1.Encryption (*Manifest)(nil), // 4: sgard.v1.Manifest (*BlobChunk)(nil), // 5: sgard.v1.BlobChunk (*PushManifestRequest)(nil), // 6: sgard.v1.PushManifestRequest (*PushManifestResponse)(nil), // 7: sgard.v1.PushManifestResponse (*PushBlobsRequest)(nil), // 8: sgard.v1.PushBlobsRequest (*PushBlobsResponse)(nil), // 9: sgard.v1.PushBlobsResponse (*PullManifestRequest)(nil), // 10: sgard.v1.PullManifestRequest (*PullManifestResponse)(nil), // 11: sgard.v1.PullManifestResponse (*PullBlobsRequest)(nil), // 12: sgard.v1.PullBlobsRequest (*PullBlobsResponse)(nil), // 13: sgard.v1.PullBlobsResponse (*PruneRequest)(nil), // 14: sgard.v1.PruneRequest (*PruneResponse)(nil), // 15: sgard.v1.PruneResponse (*AuthenticateRequest)(nil), // 16: sgard.v1.AuthenticateRequest (*AuthenticateResponse)(nil), // 17: sgard.v1.AuthenticateResponse (*ReauthChallenge)(nil), // 18: sgard.v1.ReauthChallenge nil, // 19: sgard.v1.Encryption.KekSlotsEntry (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp } var file_sgard_v1_sgard_proto_depIdxs = []int32{ 20, // 0: sgard.v1.ManifestEntry.updated:type_name -> google.protobuf.Timestamp 19, // 1: sgard.v1.Encryption.kek_slots:type_name -> sgard.v1.Encryption.KekSlotsEntry 20, // 2: sgard.v1.Manifest.created:type_name -> google.protobuf.Timestamp 20, // 3: sgard.v1.Manifest.updated:type_name -> google.protobuf.Timestamp 1, // 4: sgard.v1.Manifest.files:type_name -> sgard.v1.ManifestEntry 3, // 5: sgard.v1.Manifest.encryption:type_name -> sgard.v1.Encryption 4, // 6: sgard.v1.PushManifestRequest.manifest:type_name -> sgard.v1.Manifest 0, // 7: sgard.v1.PushManifestResponse.decision:type_name -> sgard.v1.PushManifestResponse.Decision 20, // 8: sgard.v1.PushManifestResponse.server_updated:type_name -> google.protobuf.Timestamp 5, // 9: sgard.v1.PushBlobsRequest.chunk:type_name -> sgard.v1.BlobChunk 4, // 10: sgard.v1.PullManifestResponse.manifest:type_name -> sgard.v1.Manifest 5, // 11: sgard.v1.PullBlobsResponse.chunk:type_name -> sgard.v1.BlobChunk 2, // 12: sgard.v1.Encryption.KekSlotsEntry.value:type_name -> sgard.v1.KekSlot 16, // 13: sgard.v1.GardenSync.Authenticate:input_type -> sgard.v1.AuthenticateRequest 6, // 14: sgard.v1.GardenSync.PushManifest:input_type -> sgard.v1.PushManifestRequest 8, // 15: sgard.v1.GardenSync.PushBlobs:input_type -> sgard.v1.PushBlobsRequest 10, // 16: sgard.v1.GardenSync.PullManifest:input_type -> sgard.v1.PullManifestRequest 12, // 17: sgard.v1.GardenSync.PullBlobs:input_type -> sgard.v1.PullBlobsRequest 14, // 18: sgard.v1.GardenSync.Prune:input_type -> sgard.v1.PruneRequest 17, // 19: sgard.v1.GardenSync.Authenticate:output_type -> sgard.v1.AuthenticateResponse 7, // 20: sgard.v1.GardenSync.PushManifest:output_type -> sgard.v1.PushManifestResponse 9, // 21: sgard.v1.GardenSync.PushBlobs:output_type -> sgard.v1.PushBlobsResponse 11, // 22: sgard.v1.GardenSync.PullManifest:output_type -> sgard.v1.PullManifestResponse 13, // 23: sgard.v1.GardenSync.PullBlobs:output_type -> sgard.v1.PullBlobsResponse 15, // 24: sgard.v1.GardenSync.Prune:output_type -> sgard.v1.PruneResponse 19, // [19:25] is the sub-list for method output_type 13, // [13:19] is the sub-list for method input_type 13, // [13:13] is the sub-list for extension type_name 13, // [13:13] is the sub-list for extension extendee 0, // [0:13] is the sub-list for field type_name } func init() { file_sgard_v1_sgard_proto_init() } func file_sgard_v1_sgard_proto_init() { if File_sgard_v1_sgard_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_sgard_v1_sgard_proto_rawDesc), len(file_sgard_v1_sgard_proto_rawDesc)), NumEnums: 1, NumMessages: 19, NumExtensions: 0, NumServices: 1, }, GoTypes: file_sgard_v1_sgard_proto_goTypes, DependencyIndexes: file_sgard_v1_sgard_proto_depIdxs, EnumInfos: file_sgard_v1_sgard_proto_enumTypes, MessageInfos: file_sgard_v1_sgard_proto_msgTypes, }.Build() File_sgard_v1_sgard_proto = out.File file_sgard_v1_sgard_proto_goTypes = nil file_sgard_v1_sgard_proto_depIdxs = nil }