pax_global_header00006660000000000000000000000064143325363530014521gustar00rootroot0000000000000052 comment=13fd7771c15b1d34731e1b9b982f2fec1b646949 linkedca-0.19.0/000077500000000000000000000000001433253635300133625ustar00rootroot00000000000000linkedca-0.19.0/.github/000077500000000000000000000000001433253635300147225ustar00rootroot00000000000000linkedca-0.19.0/.github/PULL_REQUEST_TEMPLATE000066400000000000000000000010771433253635300201310ustar00rootroot00000000000000 #### Name of feature: #### Pain or issue this feature alleviates: #### Why is this important to the project (if not answered above): #### Is there documentation on how to use this feature? If so, where? #### In what environments or workflows is this feature supported? #### In what environments or workflows is this feature explicitly NOT supported (if any)? #### Supporting links/other PRs/issues: 💔Thank you! linkedca-0.19.0/.github/dependabot.yml000066400000000000000000000007701433253635300175560ustar00rootroot00000000000000# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "gomod" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "weekly" linkedca-0.19.0/.github/workflows/000077500000000000000000000000001433253635300167575ustar00rootroot00000000000000linkedca-0.19.0/.github/workflows/ci.yml000066400000000000000000000006021433253635300200730ustar00rootroot00000000000000name: CI on: push: tags-ignore: - 'v*' branches: - "master" pull_request: workflow_call: secrets: GITLEAKS_LICENSE_KEY: required: true jobs: ci: uses: smallstep/workflows/.github/workflows/goCI.yml@main with: run-gitleaks: true run-codeql: true secrets: GITLEAKS_LICENSE_KEY: ${{ secrets.GITLEAKS_LICENSE_KEY }} linkedca-0.19.0/.github/workflows/code-scan-cron.yml000066400000000000000000000003161433253635300222750ustar00rootroot00000000000000on: schedule: - cron: '0 0 * * SUN' jobs: code-scan: uses: smallstep/workflows/.github/workflows/code-scan.yml@main secrets: GITLEAKS_LICENSE_KEY: ${{ secrets.GITLEAKS_LICENSE_KEY }} linkedca-0.19.0/.gitignore000066400000000000000000000004151433253635300153520ustar00rootroot00000000000000# Binaries for programs and plugins *.exe *.exe~ *.dll *.so *.dylib # Test binary, built with `go test -c` *.test # Output of the go coverage tool, specifically when used with LiteIDE *.out # Dependency directories (remove the comment below to include it) # vendor/ linkedca-0.19.0/LICENSE000066400000000000000000000261351433253635300143760ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. linkedca-0.19.0/Makefile000066400000000000000000000030751433253635300150270ustar00rootroot00000000000000# Set V to 1 for verbose output from the Makefile Q=$(if $V,,@) SRC=$(shell find . -type f -name '*.go') all: lint generate test ci: test .PHONY: all ci ######################################### # Build ######################################### build: ; ######################################### # Bootstrapping ######################################### bootstra%: $Q curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $$(go env GOPATH)/bin v1.49.0 $Q go install golang.org/x/vuln/cmd/govulncheck@latest $Q go install gotest.tools/gotestsum@v1.8.1 .PHONY: bootstrap ######################################### # Test ######################################### test: $Q $(GOFLAGS) gotestsum -- -coverpkg=./... -coverprofile=coverage.out -covermode=atomic ./... race: $Q $(GOFLAGS) gotestsum -- -race ./... .PHONY: test race ######################################### # Linting ######################################### fmt: $Q goimports -local github.com/golangci/golangci-lint -l -w $(SRC) lint: SHELL:=/bin/bash lint: $Q LOG_LEVEL=error golangci-lint run --config <(curl -s https://raw.githubusercontent.com/smallstep/workflows/master/.golangci.yml) --timeout=30m $Q govulncheck ./... .PHONY: fmt lint ######################################### # Generate ######################################### generate: protoc --proto_path=. --go_out=. --go-grpc_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative provisioners.proto admin.proto config.proto eab.proto majordomo.proto policy.proto .PHONY: generate linkedca-0.19.0/README.md000066400000000000000000000001021433253635300146320ustar00rootroot00000000000000# linkedca Support for Linked CAs using protocol buffers and gRPC linkedca-0.19.0/admin.pb.go000066400000000000000000000250111433253635300154000ustar00rootroot00000000000000// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.9 // source: admin.proto package linkedca 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" ) 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 Admin_Type int32 const ( Admin_UNKNOWN Admin_Type = 0 Admin_ADMIN Admin_Type = 1 Admin_SUPER_ADMIN Admin_Type = 2 ) // Enum value maps for Admin_Type. var ( Admin_Type_name = map[int32]string{ 0: "UNKNOWN", 1: "ADMIN", 2: "SUPER_ADMIN", } Admin_Type_value = map[string]int32{ "UNKNOWN": 0, "ADMIN": 1, "SUPER_ADMIN": 2, } ) func (x Admin_Type) Enum() *Admin_Type { p := new(Admin_Type) *p = x return p } func (x Admin_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Admin_Type) Descriptor() protoreflect.EnumDescriptor { return file_admin_proto_enumTypes[0].Descriptor() } func (Admin_Type) Type() protoreflect.EnumType { return &file_admin_proto_enumTypes[0] } func (x Admin_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Admin_Type.Descriptor instead. func (Admin_Type) EnumDescriptor() ([]byte, []int) { return file_admin_proto_rawDescGZIP(), []int{0, 0} } type Admin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` AuthorityId string `protobuf:"bytes,2,opt,name=authority_id,json=authorityId,proto3" json:"authority_id,omitempty"` Subject string `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"` ProvisionerId string `protobuf:"bytes,4,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` Type Admin_Type `protobuf:"varint,5,opt,name=type,proto3,enum=linkedca.Admin_Type" json:"type,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` DeletedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` } func (x *Admin) Reset() { *x = Admin{} if protoimpl.UnsafeEnabled { mi := &file_admin_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Admin) String() string { return protoimpl.X.MessageStringOf(x) } func (*Admin) ProtoMessage() {} func (x *Admin) ProtoReflect() protoreflect.Message { mi := &file_admin_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Admin.ProtoReflect.Descriptor instead. func (*Admin) Descriptor() ([]byte, []int) { return file_admin_proto_rawDescGZIP(), []int{0} } func (x *Admin) GetId() string { if x != nil { return x.Id } return "" } func (x *Admin) GetAuthorityId() string { if x != nil { return x.AuthorityId } return "" } func (x *Admin) GetSubject() string { if x != nil { return x.Subject } return "" } func (x *Admin) GetProvisionerId() string { if x != nil { return x.ProvisionerId } return "" } func (x *Admin) GetType() Admin_Type { if x != nil { return x.Type } return Admin_UNKNOWN } func (x *Admin) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Admin) GetDeletedAt() *timestamppb.Timestamp { if x != nil { return x.DeletedAt } return nil } type AdminList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Admins []*Admin `protobuf:"bytes,1,rep,name=admins,proto3" json:"admins,omitempty"` } func (x *AdminList) Reset() { *x = AdminList{} if protoimpl.UnsafeEnabled { mi := &file_admin_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdminList) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdminList) ProtoMessage() {} func (x *AdminList) ProtoReflect() protoreflect.Message { mi := &file_admin_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AdminList.ProtoReflect.Descriptor instead. func (*AdminList) Descriptor() ([]byte, []int) { return file_admin_proto_rawDescGZIP(), []int{1} } func (x *AdminList) GetAdmins() []*Admin { if x != nil { return x.Admins } return nil } var File_admin_proto protoreflect.FileDescriptor var file_admin_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x02, 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2f, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x55, 0x50, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x02, 0x22, 0x34, 0x0a, 0x09, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x42, 0x15, 0x5a, 0x13, 0x67, 0x6f, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x2e, 0x73, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_admin_proto_rawDescOnce sync.Once file_admin_proto_rawDescData = file_admin_proto_rawDesc ) func file_admin_proto_rawDescGZIP() []byte { file_admin_proto_rawDescOnce.Do(func() { file_admin_proto_rawDescData = protoimpl.X.CompressGZIP(file_admin_proto_rawDescData) }) return file_admin_proto_rawDescData } var file_admin_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_admin_proto_goTypes = []interface{}{ (Admin_Type)(0), // 0: linkedca.Admin.Type (*Admin)(nil), // 1: linkedca.Admin (*AdminList)(nil), // 2: linkedca.AdminList (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp } var file_admin_proto_depIdxs = []int32{ 0, // 0: linkedca.Admin.type:type_name -> linkedca.Admin.Type 3, // 1: linkedca.Admin.created_at:type_name -> google.protobuf.Timestamp 3, // 2: linkedca.Admin.deleted_at:type_name -> google.protobuf.Timestamp 1, // 3: linkedca.AdminList.admins:type_name -> linkedca.Admin 4, // [4:4] is the sub-list for method output_type 4, // [4:4] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name 4, // [4:4] is the sub-list for extension extendee 0, // [0:4] is the sub-list for field type_name } func init() { file_admin_proto_init() } func file_admin_proto_init() { if File_admin_proto != nil { return } if !protoimpl.UnsafeEnabled { file_admin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Admin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdminList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_admin_proto_rawDesc, NumEnums: 1, NumMessages: 2, NumExtensions: 0, NumServices: 0, }, GoTypes: file_admin_proto_goTypes, DependencyIndexes: file_admin_proto_depIdxs, EnumInfos: file_admin_proto_enumTypes, MessageInfos: file_admin_proto_msgTypes, }.Build() File_admin_proto = out.File file_admin_proto_rawDesc = nil file_admin_proto_goTypes = nil file_admin_proto_depIdxs = nil } linkedca-0.19.0/admin.proto000066400000000000000000000007631433253635300155450ustar00rootroot00000000000000syntax = "proto3"; package linkedca; option go_package = "go.step.sm/linkedca"; import "google/protobuf/timestamp.proto"; message Admin { enum Type { UNKNOWN = 0; ADMIN = 1; SUPER_ADMIN = 2; } string id = 1; string authority_id = 2; string subject = 3; string provisioner_id = 4; Type type = 5; google.protobuf.Timestamp created_at = 6; google.protobuf.Timestamp deleted_at = 7; } message AdminList { repeated Admin admins = 1; } linkedca-0.19.0/config.pb.go000066400000000000000000002431141433253635300155630ustar00rootroot00000000000000// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.9 // source: config.proto package linkedca import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" structpb "google.golang.org/protobuf/types/known/structpb" reflect "reflect" sync "sync" ) 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 Authority_Type int32 const ( Authority_DEFAULT Authority_Type = 0 Authority_SOFTCAS Authority_Type = 1 Authority_CLOUDCAS Authority_Type = 2 Authority_STEPCAS Authority_Type = 3 ) // Enum value maps for Authority_Type. var ( Authority_Type_name = map[int32]string{ 0: "DEFAULT", 1: "SOFTCAS", 2: "CLOUDCAS", 3: "STEPCAS", } Authority_Type_value = map[string]int32{ "DEFAULT": 0, "SOFTCAS": 1, "CLOUDCAS": 2, "STEPCAS": 3, } ) func (x Authority_Type) Enum() *Authority_Type { p := new(Authority_Type) *p = x return p } func (x Authority_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Authority_Type) Descriptor() protoreflect.EnumDescriptor { return file_config_proto_enumTypes[0].Descriptor() } func (Authority_Type) Type() protoreflect.EnumType { return &file_config_proto_enumTypes[0] } func (x Authority_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Authority_Type.Descriptor instead. func (Authority_Type) EnumDescriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{2, 0} } type CertificateIssuer_Type int32 const ( CertificateIssuer_UNKNOWN CertificateIssuer_Type = 0 CertificateIssuer_JWK CertificateIssuer_Type = 1 CertificateIssuer_X5C CertificateIssuer_Type = 2 ) // Enum value maps for CertificateIssuer_Type. var ( CertificateIssuer_Type_name = map[int32]string{ 0: "UNKNOWN", 1: "JWK", 2: "X5C", } CertificateIssuer_Type_value = map[string]int32{ "UNKNOWN": 0, "JWK": 1, "X5C": 2, } ) func (x CertificateIssuer_Type) Enum() *CertificateIssuer_Type { p := new(CertificateIssuer_Type) *p = x return p } func (x CertificateIssuer_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CertificateIssuer_Type) Descriptor() protoreflect.EnumDescriptor { return file_config_proto_enumTypes[1].Descriptor() } func (CertificateIssuer_Type) Type() protoreflect.EnumType { return &file_config_proto_enumTypes[1] } func (x CertificateIssuer_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CertificateIssuer_Type.Descriptor instead. func (CertificateIssuer_Type) EnumDescriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{4, 0} } type SSHPublicKey_Type int32 const ( SSHPublicKey_UNKNOWN SSHPublicKey_Type = 0 SSHPublicKey_USER SSHPublicKey_Type = 1 SSHPublicKey_HOST SSHPublicKey_Type = 2 ) // Enum value maps for SSHPublicKey_Type. var ( SSHPublicKey_Type_name = map[int32]string{ 0: "UNKNOWN", 1: "USER", 2: "HOST", } SSHPublicKey_Type_value = map[string]int32{ "UNKNOWN": 0, "USER": 1, "HOST": 2, } ) func (x SSHPublicKey_Type) Enum() *SSHPublicKey_Type { p := new(SSHPublicKey_Type) *p = x return p } func (x SSHPublicKey_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (SSHPublicKey_Type) Descriptor() protoreflect.EnumDescriptor { return file_config_proto_enumTypes[2].Descriptor() } func (SSHPublicKey_Type) Type() protoreflect.EnumType { return &file_config_proto_enumTypes[2] } func (x SSHPublicKey_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use SSHPublicKey_Type.Descriptor instead. func (SSHPublicKey_Type) EnumDescriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{6, 0} } type KMS_Type int32 const ( KMS_DEFAULT KMS_Type = 0 KMS_SOFTKMS KMS_Type = 1 KMS_CLOUDKMS KMS_Type = 2 KMS_AMAZONKMS KMS_Type = 3 KMS_PKCS11 KMS_Type = 4 KMS_YUBIKEY KMS_Type = 5 KMS_SSHAGENTKMS KMS_Type = 6 KMS_AZUREKMS KMS_Type = 7 ) // Enum value maps for KMS_Type. var ( KMS_Type_name = map[int32]string{ 0: "DEFAULT", 1: "SOFTKMS", 2: "CLOUDKMS", 3: "AMAZONKMS", 4: "PKCS11", 5: "YUBIKEY", 6: "SSHAGENTKMS", 7: "AZUREKMS", } KMS_Type_value = map[string]int32{ "DEFAULT": 0, "SOFTKMS": 1, "CLOUDKMS": 2, "AMAZONKMS": 3, "PKCS11": 4, "YUBIKEY": 5, "SSHAGENTKMS": 6, "AZUREKMS": 7, } ) func (x KMS_Type) Enum() *KMS_Type { p := new(KMS_Type) *p = x return p } func (x KMS_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (KMS_Type) Descriptor() protoreflect.EnumDescriptor { return file_config_proto_enumTypes[3].Descriptor() } func (KMS_Type) Type() protoreflect.EnumType { return &file_config_proto_enumTypes[3] } func (x KMS_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use KMS_Type.Descriptor instead. func (KMS_Type) EnumDescriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{8, 0} } type TLS_CiperSuite int32 const ( TLS_UNKNOWN TLS_CiperSuite = 0 // TLS 1.0 - 1.2 cipher suites. TLS_TLS_RSA_WITH_RC4_128_SHA TLS_CiperSuite = 5 TLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS_CiperSuite = 10 TLS_TLS_RSA_WITH_AES_128_CBC_SHA TLS_CiperSuite = 47 TLS_TLS_RSA_WITH_AES_256_CBC_SHA TLS_CiperSuite = 53 TLS_TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_CiperSuite = 60 TLS_TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_CiperSuite = 156 TLS_TLS_RSA_WITH_AES_256_GCM_SHA384 TLS_CiperSuite = 157 TLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA TLS_CiperSuite = 49159 TLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_CiperSuite = 49161 TLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_CiperSuite = 49162 TLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA TLS_CiperSuite = 49169 TLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_CiperSuite = 49170 TLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_CiperSuite = 49171 TLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS_CiperSuite = 49172 TLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_CiperSuite = 49187 TLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_CiperSuite = 49191 TLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_CiperSuite = 49199 TLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_CiperSuite = 49195 TLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_CiperSuite = 49200 TLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_CiperSuite = 49196 TLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 TLS_CiperSuite = 52392 TLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 TLS_CiperSuite = 52393 // TLS 1.3 cipher suites. TLS_TLS_AES_128_GCM_SHA256 TLS_CiperSuite = 4865 TLS_TLS_AES_256_GCM_SHA384 TLS_CiperSuite = 4866 TLS_TLS_CHACHA20_POLY1305_SHA256 TLS_CiperSuite = 4867 ) // Enum value maps for TLS_CiperSuite. var ( TLS_CiperSuite_name = map[int32]string{ 0: "UNKNOWN", 5: "TLS_RSA_WITH_RC4_128_SHA", 10: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", 47: "TLS_RSA_WITH_AES_128_CBC_SHA", 53: "TLS_RSA_WITH_AES_256_CBC_SHA", 60: "TLS_RSA_WITH_AES_128_CBC_SHA256", 156: "TLS_RSA_WITH_AES_128_GCM_SHA256", 157: "TLS_RSA_WITH_AES_256_GCM_SHA384", 49159: "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", 49161: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", 49162: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", 49169: "TLS_ECDHE_RSA_WITH_RC4_128_SHA", 49170: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", 49171: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", 49172: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", 49187: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", 49191: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", 49199: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", 49195: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", 49200: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", 49196: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", 52392: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", 52393: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", 4865: "TLS_AES_128_GCM_SHA256", 4866: "TLS_AES_256_GCM_SHA384", 4867: "TLS_CHACHA20_POLY1305_SHA256", } TLS_CiperSuite_value = map[string]int32{ "UNKNOWN": 0, "TLS_RSA_WITH_RC4_128_SHA": 5, "TLS_RSA_WITH_3DES_EDE_CBC_SHA": 10, "TLS_RSA_WITH_AES_128_CBC_SHA": 47, "TLS_RSA_WITH_AES_256_CBC_SHA": 53, "TLS_RSA_WITH_AES_128_CBC_SHA256": 60, "TLS_RSA_WITH_AES_128_GCM_SHA256": 156, "TLS_RSA_WITH_AES_256_GCM_SHA384": 157, "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA": 49159, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": 49161, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": 49162, "TLS_ECDHE_RSA_WITH_RC4_128_SHA": 49169, "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": 49170, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": 49171, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": 49172, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256": 49187, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256": 49191, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": 49199, "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": 49195, "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": 49200, "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": 49196, "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256": 52392, "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256": 52393, "TLS_AES_128_GCM_SHA256": 4865, "TLS_AES_256_GCM_SHA384": 4866, "TLS_CHACHA20_POLY1305_SHA256": 4867, } ) func (x TLS_CiperSuite) Enum() *TLS_CiperSuite { p := new(TLS_CiperSuite) *p = x return p } func (x TLS_CiperSuite) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (TLS_CiperSuite) Descriptor() protoreflect.EnumDescriptor { return file_config_proto_enumTypes[4].Descriptor() } func (TLS_CiperSuite) Type() protoreflect.EnumType { return &file_config_proto_enumTypes[4] } func (x TLS_CiperSuite) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use TLS_CiperSuite.Descriptor instead. func (TLS_CiperSuite) EnumDescriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{9, 0} } type ConfigTemplate_Type int32 const ( ConfigTemplate_UNKNOWN ConfigTemplate_Type = 0 ConfigTemplate_SNIPPET ConfigTemplate_Type = 1 ConfigTemplate_FILE ConfigTemplate_Type = 2 ConfigTemplate_DIRECTORY ConfigTemplate_Type = 3 ) // Enum value maps for ConfigTemplate_Type. var ( ConfigTemplate_Type_name = map[int32]string{ 0: "UNKNOWN", 1: "SNIPPET", 2: "FILE", 3: "DIRECTORY", } ConfigTemplate_Type_value = map[string]int32{ "UNKNOWN": 0, "SNIPPET": 1, "FILE": 2, "DIRECTORY": 3, } ) func (x ConfigTemplate_Type) Enum() *ConfigTemplate_Type { p := new(ConfigTemplate_Type) *p = x return p } func (x ConfigTemplate_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ConfigTemplate_Type) Descriptor() protoreflect.EnumDescriptor { return file_config_proto_enumTypes[5].Descriptor() } func (ConfigTemplate_Type) Type() protoreflect.EnumType { return &file_config_proto_enumTypes[5] } func (x ConfigTemplate_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ConfigTemplate_Type.Descriptor instead. func (ConfigTemplate_Type) EnumDescriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{12, 0} } // Configuration is the proto representation of a ca.json. Root keys and SSH // public keys are not present in the ca.json but have been added here to be // used in the initialization of a PKI. type Configuration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Root []string `protobuf:"bytes,2,rep,name=root,proto3" json:"root,omitempty"` // pem representation in files RootKey []string `protobuf:"bytes,3,rep,name=root_key,json=rootKey,proto3" json:"root_key,omitempty"` // pem representation in files FederatedRoots []string `protobuf:"bytes,4,rep,name=federated_roots,json=federatedRoots,proto3" json:"federated_roots,omitempty"` // pem representation in files Intermediate string `protobuf:"bytes,5,opt,name=intermediate,proto3" json:"intermediate,omitempty"` // pem representation in files IntermediateKey string `protobuf:"bytes,6,opt,name=intermediate_key,json=intermediateKey,proto3" json:"intermediate_key,omitempty"` // pem representation in files Address string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"` InsecureAddress string `protobuf:"bytes,8,opt,name=insecure_address,json=insecureAddress,proto3" json:"insecure_address,omitempty"` DnsNames []string `protobuf:"bytes,9,rep,name=dns_names,json=dnsNames,proto3" json:"dns_names,omitempty"` Ssh *SSH `protobuf:"bytes,10,opt,name=ssh,proto3" json:"ssh,omitempty"` Kms *KMS `protobuf:"bytes,11,opt,name=kms,proto3" json:"kms,omitempty"` Logger *structpb.Struct `protobuf:"bytes,12,opt,name=logger,proto3" json:"logger,omitempty"` // json representation Db *structpb.Struct `protobuf:"bytes,13,opt,name=db,proto3" json:"db,omitempty"` // json representation Monitoring *structpb.Struct `protobuf:"bytes,14,opt,name=monitoring,proto3" json:"monitoring,omitempty"` // json representation Authority *Authority `protobuf:"bytes,15,opt,name=authority,proto3" json:"authority,omitempty"` Tls *TLS `protobuf:"bytes,16,opt,name=tls,proto3" json:"tls,omitempty"` Templates *ConfigTemplates `protobuf:"bytes,17,opt,name=templates,proto3" json:"templates,omitempty"` Password []byte `protobuf:"bytes,18,opt,name=password,proto3" json:"password,omitempty"` Files map[string][]byte `protobuf:"bytes,19,rep,name=files,proto3" json:"files,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Configuration) Reset() { *x = Configuration{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Configuration) String() string { return protoimpl.X.MessageStringOf(x) } func (*Configuration) ProtoMessage() {} func (x *Configuration) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Configuration.ProtoReflect.Descriptor instead. func (*Configuration) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{0} } func (x *Configuration) GetVersion() string { if x != nil { return x.Version } return "" } func (x *Configuration) GetRoot() []string { if x != nil { return x.Root } return nil } func (x *Configuration) GetRootKey() []string { if x != nil { return x.RootKey } return nil } func (x *Configuration) GetFederatedRoots() []string { if x != nil { return x.FederatedRoots } return nil } func (x *Configuration) GetIntermediate() string { if x != nil { return x.Intermediate } return "" } func (x *Configuration) GetIntermediateKey() string { if x != nil { return x.IntermediateKey } return "" } func (x *Configuration) GetAddress() string { if x != nil { return x.Address } return "" } func (x *Configuration) GetInsecureAddress() string { if x != nil { return x.InsecureAddress } return "" } func (x *Configuration) GetDnsNames() []string { if x != nil { return x.DnsNames } return nil } func (x *Configuration) GetSsh() *SSH { if x != nil { return x.Ssh } return nil } func (x *Configuration) GetKms() *KMS { if x != nil { return x.Kms } return nil } func (x *Configuration) GetLogger() *structpb.Struct { if x != nil { return x.Logger } return nil } func (x *Configuration) GetDb() *structpb.Struct { if x != nil { return x.Db } return nil } func (x *Configuration) GetMonitoring() *structpb.Struct { if x != nil { return x.Monitoring } return nil } func (x *Configuration) GetAuthority() *Authority { if x != nil { return x.Authority } return nil } func (x *Configuration) GetTls() *TLS { if x != nil { return x.Tls } return nil } func (x *Configuration) GetTemplates() *ConfigTemplates { if x != nil { return x.Templates } return nil } func (x *Configuration) GetPassword() []byte { if x != nil { return x.Password } return nil } func (x *Configuration) GetFiles() map[string][]byte { if x != nil { return x.Files } return nil } // Defaults is the proto representation of the defaults.json, this file can be // extended, so it will only contain the default fields. type Defaults struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CaUrl string `protobuf:"bytes,1,opt,name=ca_url,json=caUrl,proto3" json:"ca_url,omitempty"` CaConfig string `protobuf:"bytes,2,opt,name=ca_config,json=caConfig,proto3" json:"ca_config,omitempty"` Fingerprint string `protobuf:"bytes,3,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` Root string `protobuf:"bytes,4,opt,name=root,proto3" json:"root,omitempty"` } func (x *Defaults) Reset() { *x = Defaults{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Defaults) String() string { return protoimpl.X.MessageStringOf(x) } func (*Defaults) ProtoMessage() {} func (x *Defaults) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Defaults.ProtoReflect.Descriptor instead. func (*Defaults) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{1} } func (x *Defaults) GetCaUrl() string { if x != nil { return x.CaUrl } return "" } func (x *Defaults) GetCaConfig() string { if x != nil { return x.CaConfig } return "" } func (x *Defaults) GetFingerprint() string { if x != nil { return x.Fingerprint } return "" } func (x *Defaults) GetRoot() string { if x != nil { return x.Root } return "" } type Authority struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Authority id. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // CAS specific properties. Type Authority_Type `protobuf:"varint,2,opt,name=type,proto3,enum=config.Authority_Type" json:"type,omitempty"` CertificateAuthority string `protobuf:"bytes,3,opt,name=certificate_authority,json=certificateAuthority,proto3" json:"certificate_authority,omitempty"` CertificateAuthorityFingerprint string `protobuf:"bytes,4,opt,name=certificate_authority_fingerprint,json=certificateAuthorityFingerprint,proto3" json:"certificate_authority_fingerprint,omitempty"` CertificateIssuer *CertificateIssuer `protobuf:"bytes,5,opt,name=certificate_issuer,json=certificateIssuer,proto3" json:"certificate_issuer,omitempty"` CredentialsFile string `protobuf:"bytes,6,opt,name=credentials_file,json=credentialsFile,proto3" json:"credentials_file,omitempty"` // Authority configuration. EnableAdmin bool `protobuf:"varint,7,opt,name=enable_admin,json=enableAdmin,proto3" json:"enable_admin,omitempty"` Provisioners []*Provisioner `protobuf:"bytes,8,rep,name=provisioners,proto3" json:"provisioners,omitempty"` Admins []*Admin `protobuf:"bytes,9,rep,name=admins,proto3" json:"admins,omitempty"` Template *DistinguishedName `protobuf:"bytes,10,opt,name=template,proto3" json:"template,omitempty"` Claims *Claims `protobuf:"bytes,11,opt,name=claims,proto3" json:"claims,omitempty"` DisableIssuedAtCheck bool `protobuf:"varint,12,opt,name=disable_issued_at_check,json=disableIssuedAtCheck,proto3" json:"disable_issued_at_check,omitempty"` Backdate string `protobuf:"bytes,13,opt,name=backdate,proto3" json:"backdate,omitempty"` DeploymentType string `protobuf:"bytes,14,opt,name=deployment_type,json=deploymentType,proto3" json:"deployment_type,omitempty"` Policy *Policy `protobuf:"bytes,15,opt,name=policy,proto3" json:"policy,omitempty"` } func (x *Authority) Reset() { *x = Authority{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Authority) String() string { return protoimpl.X.MessageStringOf(x) } func (*Authority) ProtoMessage() {} func (x *Authority) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Authority.ProtoReflect.Descriptor instead. func (*Authority) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{2} } func (x *Authority) GetId() string { if x != nil { return x.Id } return "" } func (x *Authority) GetType() Authority_Type { if x != nil { return x.Type } return Authority_DEFAULT } func (x *Authority) GetCertificateAuthority() string { if x != nil { return x.CertificateAuthority } return "" } func (x *Authority) GetCertificateAuthorityFingerprint() string { if x != nil { return x.CertificateAuthorityFingerprint } return "" } func (x *Authority) GetCertificateIssuer() *CertificateIssuer { if x != nil { return x.CertificateIssuer } return nil } func (x *Authority) GetCredentialsFile() string { if x != nil { return x.CredentialsFile } return "" } func (x *Authority) GetEnableAdmin() bool { if x != nil { return x.EnableAdmin } return false } func (x *Authority) GetProvisioners() []*Provisioner { if x != nil { return x.Provisioners } return nil } func (x *Authority) GetAdmins() []*Admin { if x != nil { return x.Admins } return nil } func (x *Authority) GetTemplate() *DistinguishedName { if x != nil { return x.Template } return nil } func (x *Authority) GetClaims() *Claims { if x != nil { return x.Claims } return nil } func (x *Authority) GetDisableIssuedAtCheck() bool { if x != nil { return x.DisableIssuedAtCheck } return false } func (x *Authority) GetBackdate() string { if x != nil { return x.Backdate } return "" } func (x *Authority) GetDeploymentType() string { if x != nil { return x.DeploymentType } return "" } func (x *Authority) GetPolicy() *Policy { if x != nil { return x.Policy } return nil } type DistinguishedName struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Country string `protobuf:"bytes,1,opt,name=country,proto3" json:"country,omitempty"` Organization string `protobuf:"bytes,2,opt,name=organization,proto3" json:"organization,omitempty"` OrganizationalUnit string `protobuf:"bytes,3,opt,name=organizational_unit,json=organizationalUnit,proto3" json:"organizational_unit,omitempty"` Locality string `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"` Province string `protobuf:"bytes,5,opt,name=province,proto3" json:"province,omitempty"` StreetAddress string `protobuf:"bytes,6,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` SerialNumber string `protobuf:"bytes,7,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"` CommonName string `protobuf:"bytes,8,opt,name=common_name,json=commonName,proto3" json:"common_name,omitempty"` } func (x *DistinguishedName) Reset() { *x = DistinguishedName{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DistinguishedName) String() string { return protoimpl.X.MessageStringOf(x) } func (*DistinguishedName) ProtoMessage() {} func (x *DistinguishedName) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DistinguishedName.ProtoReflect.Descriptor instead. func (*DistinguishedName) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{3} } func (x *DistinguishedName) GetCountry() string { if x != nil { return x.Country } return "" } func (x *DistinguishedName) GetOrganization() string { if x != nil { return x.Organization } return "" } func (x *DistinguishedName) GetOrganizationalUnit() string { if x != nil { return x.OrganizationalUnit } return "" } func (x *DistinguishedName) GetLocality() string { if x != nil { return x.Locality } return "" } func (x *DistinguishedName) GetProvince() string { if x != nil { return x.Province } return "" } func (x *DistinguishedName) GetStreetAddress() string { if x != nil { return x.StreetAddress } return "" } func (x *DistinguishedName) GetSerialNumber() string { if x != nil { return x.SerialNumber } return "" } func (x *DistinguishedName) GetCommonName() string { if x != nil { return x.CommonName } return "" } type CertificateIssuer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type CertificateIssuer_Type `protobuf:"varint,1,opt,name=type,proto3,enum=config.CertificateIssuer_Type" json:"type,omitempty"` Provisioner string `protobuf:"bytes,2,opt,name=provisioner,proto3" json:"provisioner,omitempty"` Certificate string `protobuf:"bytes,3,opt,name=certificate,proto3" json:"certificate,omitempty"` Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` Password []byte `protobuf:"bytes,5,opt,name=password,proto3" json:"password,omitempty"` } func (x *CertificateIssuer) Reset() { *x = CertificateIssuer{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CertificateIssuer) String() string { return protoimpl.X.MessageStringOf(x) } func (*CertificateIssuer) ProtoMessage() {} func (x *CertificateIssuer) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CertificateIssuer.ProtoReflect.Descriptor instead. func (*CertificateIssuer) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{4} } func (x *CertificateIssuer) GetType() CertificateIssuer_Type { if x != nil { return x.Type } return CertificateIssuer_UNKNOWN } func (x *CertificateIssuer) GetProvisioner() string { if x != nil { return x.Provisioner } return "" } func (x *CertificateIssuer) GetCertificate() string { if x != nil { return x.Certificate } return "" } func (x *CertificateIssuer) GetKey() string { if x != nil { return x.Key } return "" } func (x *CertificateIssuer) GetPassword() []byte { if x != nil { return x.Password } return nil } type SSH struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HostKey string `protobuf:"bytes,1,opt,name=host_key,json=hostKey,proto3" json:"host_key,omitempty"` // pem representation in files UserKey string `protobuf:"bytes,2,opt,name=user_key,json=userKey,proto3" json:"user_key,omitempty"` // pem representation in files HostPublicKey string `protobuf:"bytes,3,opt,name=host_public_key,json=hostPublicKey,proto3" json:"host_public_key,omitempty"` // ssh representation in files UserPublicKey string `protobuf:"bytes,4,opt,name=user_public_key,json=userPublicKey,proto3" json:"user_public_key,omitempty"` // ssh representation in files Keys []*SSHPublicKey `protobuf:"bytes,5,rep,name=keys,proto3" json:"keys,omitempty"` AddUserPrincipal string `protobuf:"bytes,6,opt,name=add_user_principal,json=addUserPrincipal,proto3" json:"add_user_principal,omitempty"` AddUserCommand string `protobuf:"bytes,7,opt,name=add_user_command,json=addUserCommand,proto3" json:"add_user_command,omitempty"` Bastion *Bastion `protobuf:"bytes,8,opt,name=bastion,proto3" json:"bastion,omitempty"` } func (x *SSH) Reset() { *x = SSH{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSH) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSH) ProtoMessage() {} func (x *SSH) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSH.ProtoReflect.Descriptor instead. func (*SSH) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{5} } func (x *SSH) GetHostKey() string { if x != nil { return x.HostKey } return "" } func (x *SSH) GetUserKey() string { if x != nil { return x.UserKey } return "" } func (x *SSH) GetHostPublicKey() string { if x != nil { return x.HostPublicKey } return "" } func (x *SSH) GetUserPublicKey() string { if x != nil { return x.UserPublicKey } return "" } func (x *SSH) GetKeys() []*SSHPublicKey { if x != nil { return x.Keys } return nil } func (x *SSH) GetAddUserPrincipal() string { if x != nil { return x.AddUserPrincipal } return "" } func (x *SSH) GetAddUserCommand() string { if x != nil { return x.AddUserCommand } return "" } func (x *SSH) GetBastion() *Bastion { if x != nil { return x.Bastion } return nil } type SSHPublicKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type SSHPublicKey_Type `protobuf:"varint,1,opt,name=type,proto3,enum=config.SSHPublicKey_Type" json:"type,omitempty"` Federated bool `protobuf:"varint,2,opt,name=federated,proto3" json:"federated,omitempty"` Key *structpb.Struct `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` } func (x *SSHPublicKey) Reset() { *x = SSHPublicKey{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHPublicKey) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHPublicKey) ProtoMessage() {} func (x *SSHPublicKey) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHPublicKey.ProtoReflect.Descriptor instead. func (*SSHPublicKey) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{6} } func (x *SSHPublicKey) GetType() SSHPublicKey_Type { if x != nil { return x.Type } return SSHPublicKey_UNKNOWN } func (x *SSHPublicKey) GetFederated() bool { if x != nil { return x.Federated } return false } func (x *SSHPublicKey) GetKey() *structpb.Struct { if x != nil { return x.Key } return nil } type Bastion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` Port string `protobuf:"bytes,3,opt,name=port,proto3" json:"port,omitempty"` Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` Flags string `protobuf:"bytes,5,opt,name=flags,proto3" json:"flags,omitempty"` } func (x *Bastion) Reset() { *x = Bastion{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Bastion) String() string { return protoimpl.X.MessageStringOf(x) } func (*Bastion) ProtoMessage() {} func (x *Bastion) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Bastion.ProtoReflect.Descriptor instead. func (*Bastion) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{7} } func (x *Bastion) GetHostname() string { if x != nil { return x.Hostname } return "" } func (x *Bastion) GetUser() string { if x != nil { return x.User } return "" } func (x *Bastion) GetPort() string { if x != nil { return x.Port } return "" } func (x *Bastion) GetCommand() string { if x != nil { return x.Command } return "" } func (x *Bastion) GetFlags() string { if x != nil { return x.Flags } return "" } type KMS struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type KMS_Type `protobuf:"varint,1,opt,name=type,proto3,enum=config.KMS_Type" json:"type,omitempty"` CredentialsFile string `protobuf:"bytes,2,opt,name=credentialsFile,proto3" json:"credentialsFile,omitempty"` Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` Pin string `protobuf:"bytes,4,opt,name=pin,proto3" json:"pin,omitempty"` ManagementKey string `protobuf:"bytes,5,opt,name=managementKey,proto3" json:"managementKey,omitempty"` Region string `protobuf:"bytes,6,opt,name=region,proto3" json:"region,omitempty"` Profile string `protobuf:"bytes,7,opt,name=profile,proto3" json:"profile,omitempty"` } func (x *KMS) Reset() { *x = KMS{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KMS) String() string { return protoimpl.X.MessageStringOf(x) } func (*KMS) ProtoMessage() {} func (x *KMS) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use KMS.ProtoReflect.Descriptor instead. func (*KMS) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{8} } func (x *KMS) GetType() KMS_Type { if x != nil { return x.Type } return KMS_DEFAULT } func (x *KMS) GetCredentialsFile() string { if x != nil { return x.CredentialsFile } return "" } func (x *KMS) GetUri() string { if x != nil { return x.Uri } return "" } func (x *KMS) GetPin() string { if x != nil { return x.Pin } return "" } func (x *KMS) GetManagementKey() string { if x != nil { return x.ManagementKey } return "" } func (x *KMS) GetRegion() string { if x != nil { return x.Region } return "" } func (x *KMS) GetProfile() string { if x != nil { return x.Profile } return "" } type TLS struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CipherSuites []TLS_CiperSuite `protobuf:"varint,1,rep,packed,name=cipher_suites,json=cipherSuites,proto3,enum=config.TLS_CiperSuite" json:"cipher_suites,omitempty"` MinVersion string `protobuf:"bytes,2,opt,name=min_version,json=minVersion,proto3" json:"min_version,omitempty"` MaxVersion string `protobuf:"bytes,3,opt,name=max_version,json=maxVersion,proto3" json:"max_version,omitempty"` Renegotiation bool `protobuf:"varint,4,opt,name=renegotiation,proto3" json:"renegotiation,omitempty"` } func (x *TLS) Reset() { *x = TLS{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TLS) String() string { return protoimpl.X.MessageStringOf(x) } func (*TLS) ProtoMessage() {} func (x *TLS) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TLS.ProtoReflect.Descriptor instead. func (*TLS) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{9} } func (x *TLS) GetCipherSuites() []TLS_CiperSuite { if x != nil { return x.CipherSuites } return nil } func (x *TLS) GetMinVersion() string { if x != nil { return x.MinVersion } return "" } func (x *TLS) GetMaxVersion() string { if x != nil { return x.MaxVersion } return "" } func (x *TLS) GetRenegotiation() bool { if x != nil { return x.Renegotiation } return false } type ConfigTemplates struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ssh *SSHConfigTemplate `protobuf:"bytes,1,opt,name=ssh,proto3" json:"ssh,omitempty"` Data *structpb.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } func (x *ConfigTemplates) Reset() { *x = ConfigTemplates{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConfigTemplates) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConfigTemplates) ProtoMessage() {} func (x *ConfigTemplates) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ConfigTemplates.ProtoReflect.Descriptor instead. func (*ConfigTemplates) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{10} } func (x *ConfigTemplates) GetSsh() *SSHConfigTemplate { if x != nil { return x.Ssh } return nil } func (x *ConfigTemplates) GetData() *structpb.Struct { if x != nil { return x.Data } return nil } type SSHConfigTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Users []*ConfigTemplate `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` Hosts []*ConfigTemplate `protobuf:"bytes,2,rep,name=hosts,proto3" json:"hosts,omitempty"` } func (x *SSHConfigTemplate) Reset() { *x = SSHConfigTemplate{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHConfigTemplate) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHConfigTemplate) ProtoMessage() {} func (x *SSHConfigTemplate) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHConfigTemplate.ProtoReflect.Descriptor instead. func (*SSHConfigTemplate) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{11} } func (x *SSHConfigTemplate) GetUsers() []*ConfigTemplate { if x != nil { return x.Users } return nil } func (x *SSHConfigTemplate) GetHosts() []*ConfigTemplate { if x != nil { return x.Hosts } return nil } type ConfigTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type ConfigTemplate_Type `protobuf:"varint,1,opt,name=type,proto3,enum=config.ConfigTemplate_Type" json:"type,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Template string `protobuf:"bytes,3,opt,name=template,proto3" json:"template,omitempty"` Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment,omitempty"` Requires []string `protobuf:"bytes,6,rep,name=requires,proto3" json:"requires,omitempty"` Content []byte `protobuf:"bytes,7,opt,name=content,proto3" json:"content,omitempty"` } func (x *ConfigTemplate) Reset() { *x = ConfigTemplate{} if protoimpl.UnsafeEnabled { mi := &file_config_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConfigTemplate) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConfigTemplate) ProtoMessage() {} func (x *ConfigTemplate) ProtoReflect() protoreflect.Message { mi := &file_config_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ConfigTemplate.ProtoReflect.Descriptor instead. func (*ConfigTemplate) Descriptor() ([]byte, []int) { return file_config_proto_rawDescGZIP(), []int{12} } func (x *ConfigTemplate) GetType() ConfigTemplate_Type { if x != nil { return x.Type } return ConfigTemplate_UNKNOWN } func (x *ConfigTemplate) GetName() string { if x != nil { return x.Name } return "" } func (x *ConfigTemplate) GetTemplate() string { if x != nil { return x.Template } return "" } func (x *ConfigTemplate) GetPath() string { if x != nil { return x.Path } return "" } func (x *ConfigTemplate) GetComment() string { if x != nil { return x.Comment } return "" } func (x *ConfigTemplate) GetRequires() []string { if x != nil { return x.Requires } return nil } func (x *ConfigTemplate) GetContent() []byte { if x != nil { return x.Content } return nil } var File_config_proto protoreflect.FileDescriptor var file_config_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x98, 0x06, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x48, 0x52, 0x03, 0x73, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4b, 0x4d, 0x53, 0x52, 0x03, 0x6b, 0x6d, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x02, 0x64, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x02, 0x64, 0x62, 0x12, 0x37, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x4c, 0x53, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x74, 0x0a, 0x08, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x88, 0x06, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x21, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4f, 0x46, 0x54, 0x43, 0x41, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x43, 0x41, 0x53, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x45, 0x50, 0x43, 0x41, 0x53, 0x10, 0x03, 0x22, 0xa7, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x11, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x25, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4a, 0x57, 0x4b, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x35, 0x43, 0x10, 0x02, 0x22, 0xb8, 0x02, 0x0a, 0x03, 0x53, 0x53, 0x48, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x48, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x64, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x64, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x07, 0x62, 0x61, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x61, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x0c, 0x53, 0x53, 0x48, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x48, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x27, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x22, 0x7d, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0xc8, 0x02, 0x0a, 0x03, 0x4b, 0x4d, 0x53, 0x12, 0x24, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4b, 0x4d, 0x53, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x75, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4f, 0x46, 0x54, 0x4b, 0x4d, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x4b, 0x4d, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x4b, 0x4d, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x31, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x59, 0x55, 0x42, 0x49, 0x4b, 0x45, 0x59, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x53, 0x48, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x4d, 0x53, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x4b, 0x4d, 0x53, 0x10, 0x07, 0x22, 0xba, 0x09, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x12, 0x3b, 0x0a, 0x0d, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x4c, 0x53, 0x2e, 0x43, 0x69, 0x70, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x08, 0x0a, 0x0a, 0x43, 0x69, 0x70, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x52, 0x43, 0x34, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x33, 0x44, 0x45, 0x53, 0x5f, 0x45, 0x44, 0x45, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x2f, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x35, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x3c, 0x12, 0x24, 0x0a, 0x1f, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x9c, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x54, 0x4c, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x9d, 0x01, 0x12, 0x26, 0x0a, 0x20, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x52, 0x43, 0x34, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x87, 0x80, 0x03, 0x12, 0x2a, 0x0a, 0x24, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x89, 0x80, 0x03, 0x12, 0x2a, 0x0a, 0x24, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x8a, 0x80, 0x03, 0x12, 0x24, 0x0a, 0x1e, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x52, 0x43, 0x34, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x91, 0x80, 0x03, 0x12, 0x29, 0x0a, 0x23, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x33, 0x44, 0x45, 0x53, 0x5f, 0x45, 0x44, 0x45, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x92, 0x80, 0x03, 0x12, 0x28, 0x0a, 0x22, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x93, 0x80, 0x03, 0x12, 0x28, 0x0a, 0x22, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x10, 0x94, 0x80, 0x03, 0x12, 0x2d, 0x0a, 0x27, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0xa3, 0x80, 0x03, 0x12, 0x2b, 0x0a, 0x25, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0xa7, 0x80, 0x03, 0x12, 0x2b, 0x0a, 0x25, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0xaf, 0x80, 0x03, 0x12, 0x2d, 0x0a, 0x27, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0xab, 0x80, 0x03, 0x12, 0x2b, 0x0a, 0x25, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0xb0, 0x80, 0x03, 0x12, 0x2d, 0x0a, 0x27, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0xac, 0x80, 0x03, 0x12, 0x31, 0x0a, 0x2b, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0xa8, 0x99, 0x03, 0x12, 0x33, 0x0a, 0x2d, 0x54, 0x4c, 0x53, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0xa9, 0x99, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x81, 0x26, 0x12, 0x1b, 0x0a, 0x16, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x82, 0x26, 0x12, 0x21, 0x0a, 0x1c, 0x54, 0x4c, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x83, 0x26, 0x22, 0x6b, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x03, 0x73, 0x73, 0x68, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x11, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x22, 0x90, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x39, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4e, 0x49, 0x50, 0x50, 0x45, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x03, 0x42, 0x15, 0x5a, 0x13, 0x67, 0x6f, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x2e, 0x73, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_config_proto_rawDescOnce sync.Once file_config_proto_rawDescData = file_config_proto_rawDesc ) func file_config_proto_rawDescGZIP() []byte { file_config_proto_rawDescOnce.Do(func() { file_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_config_proto_rawDescData) }) return file_config_proto_rawDescData } var file_config_proto_enumTypes = make([]protoimpl.EnumInfo, 6) var file_config_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_config_proto_goTypes = []interface{}{ (Authority_Type)(0), // 0: config.Authority.Type (CertificateIssuer_Type)(0), // 1: config.CertificateIssuer.Type (SSHPublicKey_Type)(0), // 2: config.SSHPublicKey.Type (KMS_Type)(0), // 3: config.KMS.Type (TLS_CiperSuite)(0), // 4: config.TLS.CiperSuite (ConfigTemplate_Type)(0), // 5: config.ConfigTemplate.Type (*Configuration)(nil), // 6: config.Configuration (*Defaults)(nil), // 7: config.Defaults (*Authority)(nil), // 8: config.Authority (*DistinguishedName)(nil), // 9: config.DistinguishedName (*CertificateIssuer)(nil), // 10: config.CertificateIssuer (*SSH)(nil), // 11: config.SSH (*SSHPublicKey)(nil), // 12: config.SSHPublicKey (*Bastion)(nil), // 13: config.Bastion (*KMS)(nil), // 14: config.KMS (*TLS)(nil), // 15: config.TLS (*ConfigTemplates)(nil), // 16: config.ConfigTemplates (*SSHConfigTemplate)(nil), // 17: config.SSHConfigTemplate (*ConfigTemplate)(nil), // 18: config.ConfigTemplate nil, // 19: config.Configuration.FilesEntry (*structpb.Struct)(nil), // 20: google.protobuf.Struct (*Provisioner)(nil), // 21: linkedca.Provisioner (*Admin)(nil), // 22: linkedca.Admin (*Claims)(nil), // 23: linkedca.Claims (*Policy)(nil), // 24: linkedca.Policy } var file_config_proto_depIdxs = []int32{ 11, // 0: config.Configuration.ssh:type_name -> config.SSH 14, // 1: config.Configuration.kms:type_name -> config.KMS 20, // 2: config.Configuration.logger:type_name -> google.protobuf.Struct 20, // 3: config.Configuration.db:type_name -> google.protobuf.Struct 20, // 4: config.Configuration.monitoring:type_name -> google.protobuf.Struct 8, // 5: config.Configuration.authority:type_name -> config.Authority 15, // 6: config.Configuration.tls:type_name -> config.TLS 16, // 7: config.Configuration.templates:type_name -> config.ConfigTemplates 19, // 8: config.Configuration.files:type_name -> config.Configuration.FilesEntry 0, // 9: config.Authority.type:type_name -> config.Authority.Type 10, // 10: config.Authority.certificate_issuer:type_name -> config.CertificateIssuer 21, // 11: config.Authority.provisioners:type_name -> linkedca.Provisioner 22, // 12: config.Authority.admins:type_name -> linkedca.Admin 9, // 13: config.Authority.template:type_name -> config.DistinguishedName 23, // 14: config.Authority.claims:type_name -> linkedca.Claims 24, // 15: config.Authority.policy:type_name -> linkedca.Policy 1, // 16: config.CertificateIssuer.type:type_name -> config.CertificateIssuer.Type 12, // 17: config.SSH.keys:type_name -> config.SSHPublicKey 13, // 18: config.SSH.bastion:type_name -> config.Bastion 2, // 19: config.SSHPublicKey.type:type_name -> config.SSHPublicKey.Type 20, // 20: config.SSHPublicKey.key:type_name -> google.protobuf.Struct 3, // 21: config.KMS.type:type_name -> config.KMS.Type 4, // 22: config.TLS.cipher_suites:type_name -> config.TLS.CiperSuite 17, // 23: config.ConfigTemplates.ssh:type_name -> config.SSHConfigTemplate 20, // 24: config.ConfigTemplates.data:type_name -> google.protobuf.Struct 18, // 25: config.SSHConfigTemplate.users:type_name -> config.ConfigTemplate 18, // 26: config.SSHConfigTemplate.hosts:type_name -> config.ConfigTemplate 5, // 27: config.ConfigTemplate.type:type_name -> config.ConfigTemplate.Type 28, // [28:28] is the sub-list for method output_type 28, // [28:28] is the sub-list for method input_type 28, // [28:28] is the sub-list for extension type_name 28, // [28:28] is the sub-list for extension extendee 0, // [0:28] is the sub-list for field type_name } func init() { file_config_proto_init() } func file_config_proto_init() { if File_config_proto != nil { return } file_admin_proto_init() file_provisioners_proto_init() file_policy_proto_init() if !protoimpl.UnsafeEnabled { file_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Configuration); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Defaults); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Authority); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DistinguishedName); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CertificateIssuer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSH); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHPublicKey); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Bastion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KMS); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TLS); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigTemplates); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHConfigTemplate); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigTemplate); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_config_proto_rawDesc, NumEnums: 6, NumMessages: 14, NumExtensions: 0, NumServices: 0, }, GoTypes: file_config_proto_goTypes, DependencyIndexes: file_config_proto_depIdxs, EnumInfos: file_config_proto_enumTypes, MessageInfos: file_config_proto_msgTypes, }.Build() File_config_proto = out.File file_config_proto_rawDesc = nil file_config_proto_goTypes = nil file_config_proto_depIdxs = nil } linkedca-0.19.0/config.proto000066400000000000000000000142041433253635300157150ustar00rootroot00000000000000syntax = "proto3"; package config; option go_package = "go.step.sm/linkedca"; import "admin.proto"; import "provisioners.proto"; import "policy.proto"; import "google/protobuf/struct.proto"; // Configuration is the proto representation of a ca.json. Root keys and SSH // public keys are not present in the ca.json but have been added here to be // used in the initialization of a PKI. message Configuration { string version = 1; repeated string root = 2; // pem representation in files repeated string root_key = 3; // pem representation in files repeated string federated_roots = 4; // pem representation in files string intermediate = 5; // pem representation in files string intermediate_key = 6; // pem representation in files string address = 7; string insecure_address = 8; repeated string dns_names = 9; SSH ssh = 10; KMS kms = 11; google.protobuf.Struct logger = 12; // json representation google.protobuf.Struct db = 13; // json representation google.protobuf.Struct monitoring = 14; // json representation Authority authority = 15; TLS tls = 16; ConfigTemplates templates = 17; bytes password = 18; map files = 19; } // Defaults is the proto representation of the defaults.json, this file can be // extended, so it will only contain the default fields. message Defaults { string ca_url = 1; string ca_config = 2; string fingerprint = 3; string root = 4; } message Authority { enum Type { DEFAULT = 0; SOFTCAS = 1; CLOUDCAS = 2; STEPCAS = 3; } // Authority id. string id = 1; // CAS specific properties. Type type = 2; string certificate_authority = 3; string certificate_authority_fingerprint = 4; CertificateIssuer certificate_issuer = 5; string credentials_file = 6; // Authority configuration. bool enable_admin = 7; repeated linkedca.Provisioner provisioners = 8; repeated linkedca.Admin admins = 9; DistinguishedName template = 10; linkedca.Claims claims = 11; bool disable_issued_at_check = 12; string backdate = 13; string deployment_type = 14; linkedca.Policy policy = 15; } message DistinguishedName { string country = 1; string organization = 2; string organizational_unit = 3; string locality = 4; string province = 5; string street_address = 6; string serial_number = 7; string common_name = 8; } message CertificateIssuer { enum Type { UNKNOWN = 0; JWK = 1; X5C = 2; } Type type = 1; string provisioner = 2; string certificate = 3; string key = 4; bytes password = 5; } message SSH { string host_key = 1; // pem representation in files string user_key = 2; // pem representation in files string host_public_key = 3; // ssh representation in files string user_public_key = 4; // ssh representation in files repeated SSHPublicKey keys = 5; string add_user_principal = 6; string add_user_command = 7; Bastion bastion = 8; } message SSHPublicKey { enum Type { UNKNOWN = 0; USER = 1; HOST = 2; } Type type = 1; bool federated = 2; google.protobuf.Struct key = 3; } message Bastion { string hostname = 1; string user = 2; string port = 3; string command = 4; string flags = 5; } message KMS { enum Type { DEFAULT = 0; SOFTKMS = 1; CLOUDKMS = 2; AMAZONKMS = 3; PKCS11 = 4; YUBIKEY = 5; SSHAGENTKMS = 6; AZUREKMS = 7; } Type type = 1; string credentialsFile = 2; string uri = 3; string pin = 4; string managementKey = 5; string region = 6; string profile = 7; } message TLS { enum CiperSuite { UNKNOWN = 0; // TLS 1.0 - 1.2 cipher suites. TLS_RSA_WITH_RC4_128_SHA = 0x0005; TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000a; TLS_RSA_WITH_AES_128_CBC_SHA = 0x002f; TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035; TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003c; TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009c; TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009d; TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0xc007; TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xc009; TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xc00a; TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0xc011; TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xc012; TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xc013; TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xc014; TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xc023; TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xc027; TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xc02f; TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xc02b; TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xc030; TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xc02c; TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xcca8; TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = 0xcca9; // TLS 1.3 cipher suites. TLS_AES_128_GCM_SHA256 = 0x1301; TLS_AES_256_GCM_SHA384 = 0x1302; TLS_CHACHA20_POLY1305_SHA256 = 0x1303; } repeated CiperSuite cipher_suites = 1; string min_version = 2; string max_version = 3; bool renegotiation = 4; } message ConfigTemplates { SSHConfigTemplate ssh = 1; google.protobuf.Struct data = 2; } message SSHConfigTemplate { repeated ConfigTemplate users = 1; repeated ConfigTemplate hosts = 2; } message ConfigTemplate { enum Type { UNKNOWN = 0; SNIPPET = 1; FILE = 2; DIRECTORY = 3; } Type type = 1; string name = 2; string template = 3; string path = 4; string comment = 5; repeated string requires = 6; bytes content = 7; } linkedca-0.19.0/context.go000066400000000000000000000047621433253635300154060ustar00rootroot00000000000000package linkedca import "context" type contextKeyType int const ( _ contextKeyType = iota adminContextKey provisionerContextKey externalAccountKeyContextKey ) // NewContextWithAdmin returns a copy of ctx which carries an Admin. func NewContextWithAdmin(ctx context.Context, admin *Admin) context.Context { return context.WithValue(ctx, adminContextKey, admin) } // AdminFromContext returns an Admin if the ctx carries one and a // bool indicating if an Admin is carried by the ctx. func AdminFromContext(ctx context.Context) (a *Admin, ok bool) { if a, ok = ctx.Value(adminContextKey).(*Admin); a == nil { return nil, false } return } // MustAdminFromContext returns the Admin ctx carries. // // MustAdminFromContext panics in case ctx carries no Admin. func MustAdminFromContext(ctx context.Context) *Admin { return ctx.Value(adminContextKey).(*Admin) } // NewContextWithProvisioner returns a copy of ctx which carries a Provisioner. func NewContextWithProvisioner(ctx context.Context, provisioner *Provisioner) context.Context { return context.WithValue(ctx, provisionerContextKey, provisioner) } // ProvisionerFromContext returns a Provisioner if the ctx carries one and a // bool indicating if a Provisioner is carried by the ctx. func ProvisionerFromContext(ctx context.Context) (p *Provisioner, ok bool) { if p, ok = ctx.Value(provisionerContextKey).(*Provisioner); p == nil { return nil, false } return } // MustProvisionerFromContext returns the Provisioner ctx carries. // // MustProvisionerFromContext panics in case ctx carries no Provisioner. func MustProvisionerFromContext(ctx context.Context) *Provisioner { return ctx.Value(provisionerContextKey).(*Provisioner) } // NewContextWithExternalAccountKey returns a copy of ctx which carries an EABKey. func NewContextWithExternalAccountKey(ctx context.Context, k *EABKey) context.Context { return context.WithValue(ctx, externalAccountKeyContextKey, k) } // ExternalAccountKeyFromContext returns the EABKey if the ctx carries // one and a bool indicating if an EABKey is carried by the ctx. func ExternalAccountKeyFromContext(ctx context.Context) (k *EABKey, ok bool) { if k, ok = ctx.Value(externalAccountKeyContextKey).(*EABKey); k == nil { return nil, false } return } // MustExternalAccountKeyFromContext returns the EABKey ctx carries. // // MustExternalAccountKeyFromContext panics in case ctx carries no EABKey. func MustExternalAccountKeyFromContext(ctx context.Context) *EABKey { return ctx.Value(externalAccountKeyContextKey).(*EABKey) } linkedca-0.19.0/context_test.go000066400000000000000000000047021433253635300164370ustar00rootroot00000000000000package linkedca import ( "context" "testing" "github.com/stretchr/testify/assert" ) func TestAdminFromContext(t *testing.T) { t.Parallel() // nil admin; expect false var exp *Admin got, ok := AdminFromContext(NewContextWithAdmin(context.Background(), exp)) assert.Same(t, exp, got) assert.False(t, ok) // non-nil admin; expect true exp = new(Admin) got, ok = AdminFromContext(NewContextWithAdmin(context.Background(), exp)) assert.Same(t, exp, got) assert.True(t, ok) } func TestMustAdminFromContext(t *testing.T) { t.Parallel() exp := new(Admin) got := MustAdminFromContext(NewContextWithAdmin(context.Background(), exp)) assert.Same(t, exp, got) } func TestMustAdminFromContextPanics(t *testing.T) { t.Parallel() assert.Panics(t, func() { MustAdminFromContext(context.Background()) }) } func TestProvisionerFromContext(t *testing.T) { t.Parallel() // nil Provisioner; expect false var exp *Provisioner got, ok := ProvisionerFromContext(NewContextWithProvisioner(context.Background(), exp)) assert.Same(t, exp, got) assert.False(t, ok) // non-nil Provisioner; expect true exp = new(Provisioner) got, ok = ProvisionerFromContext(NewContextWithProvisioner(context.Background(), exp)) assert.Same(t, exp, got) assert.True(t, ok) } func TestMustProvisionerFromContext(t *testing.T) { t.Parallel() exp := new(Provisioner) got := MustProvisionerFromContext(NewContextWithProvisioner(context.Background(), exp)) assert.Same(t, exp, got) } func TestMustProvisionerFromContextPanics(t *testing.T) { t.Parallel() assert.Panics(t, func() { MustProvisionerFromContext(context.Background()) }) } func TestExternalAccountKeyFromContext(t *testing.T) { t.Parallel() // nil EABKey; expect false var exp *EABKey got, ok := ExternalAccountKeyFromContext(NewContextWithExternalAccountKey(context.Background(), exp)) assert.Same(t, exp, got) assert.False(t, ok) // non-nil EABKey; expect true exp = new(EABKey) got, ok = ExternalAccountKeyFromContext(NewContextWithExternalAccountKey(context.Background(), exp)) assert.Same(t, exp, got) assert.True(t, ok) } func TestMustExternalAccountKeyFromContext(t *testing.T) { t.Parallel() exp := new(EABKey) got := MustExternalAccountKeyFromContext(NewContextWithExternalAccountKey(context.Background(), exp)) assert.Same(t, exp, got) } func TestExternalAccountKeyFromContextPanics(t *testing.T) { t.Parallel() assert.Panics(t, func() { MustExternalAccountKeyFromContext(context.Background()) }) } linkedca-0.19.0/eab.pb.go000066400000000000000000000175411433253635300150500ustar00rootroot00000000000000// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.9 // source: eab.proto package linkedca 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" ) 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 EABKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // the KeyID HmacKey []byte `protobuf:"bytes,2,opt,name=hmac_key,json=hmacKey,proto3" json:"hmac_key,omitempty"` // the key bytes Provisioner string `protobuf:"bytes,3,opt,name=provisioner,proto3" json:"provisioner,omitempty"` // the provisioner for which to create the key Reference string `protobuf:"bytes,4,opt,name=reference,proto3" json:"reference,omitempty"` // name/reference to the key; can be linked to external system Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"` // account the key is bound to CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // time the key was created_at BoundAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=bound_at,json=boundAt,proto3" json:"bound_at,omitempty"` // time the key was bound to an account Policy *Policy `protobuf:"bytes,8,opt,name=policy,proto3" json:"policy,omitempty"` } func (x *EABKey) Reset() { *x = EABKey{} if protoimpl.UnsafeEnabled { mi := &file_eab_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EABKey) String() string { return protoimpl.X.MessageStringOf(x) } func (*EABKey) ProtoMessage() {} func (x *EABKey) ProtoReflect() protoreflect.Message { mi := &file_eab_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EABKey.ProtoReflect.Descriptor instead. func (*EABKey) Descriptor() ([]byte, []int) { return file_eab_proto_rawDescGZIP(), []int{0} } func (x *EABKey) GetId() string { if x != nil { return x.Id } return "" } func (x *EABKey) GetHmacKey() []byte { if x != nil { return x.HmacKey } return nil } func (x *EABKey) GetProvisioner() string { if x != nil { return x.Provisioner } return "" } func (x *EABKey) GetReference() string { if x != nil { return x.Reference } return "" } func (x *EABKey) GetAccount() string { if x != nil { return x.Account } return "" } func (x *EABKey) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *EABKey) GetBoundAt() *timestamppb.Timestamp { if x != nil { return x.BoundAt } return nil } func (x *EABKey) GetPolicy() *Policy { if x != nil { return x.Policy } return nil } var File_eab_proto protoreflect.FileDescriptor var file_eab_proto_rawDesc = []byte{ 0x0a, 0x09, 0x65, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x65, 0x61, 0x62, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x02, 0x0a, 0x06, 0x45, 0x41, 0x42, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x68, 0x6d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x15, 0x5a, 0x13, 0x67, 0x6f, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x2e, 0x73, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_eab_proto_rawDescOnce sync.Once file_eab_proto_rawDescData = file_eab_proto_rawDesc ) func file_eab_proto_rawDescGZIP() []byte { file_eab_proto_rawDescOnce.Do(func() { file_eab_proto_rawDescData = protoimpl.X.CompressGZIP(file_eab_proto_rawDescData) }) return file_eab_proto_rawDescData } var file_eab_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_eab_proto_goTypes = []interface{}{ (*EABKey)(nil), // 0: eab.EABKey (*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp (*Policy)(nil), // 2: linkedca.Policy } var file_eab_proto_depIdxs = []int32{ 1, // 0: eab.EABKey.created_at:type_name -> google.protobuf.Timestamp 1, // 1: eab.EABKey.bound_at:type_name -> google.protobuf.Timestamp 2, // 2: eab.EABKey.policy:type_name -> linkedca.Policy 3, // [3:3] is the sub-list for method output_type 3, // [3:3] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name 3, // [3:3] is the sub-list for extension extendee 0, // [0:3] is the sub-list for field type_name } func init() { file_eab_proto_init() } func file_eab_proto_init() { if File_eab_proto != nil { return } file_policy_proto_init() if !protoimpl.UnsafeEnabled { file_eab_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EABKey); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_eab_proto_rawDesc, NumEnums: 0, NumMessages: 1, NumExtensions: 0, NumServices: 0, }, GoTypes: file_eab_proto_goTypes, DependencyIndexes: file_eab_proto_depIdxs, MessageInfos: file_eab_proto_msgTypes, }.Build() File_eab_proto = out.File file_eab_proto_rawDesc = nil file_eab_proto_goTypes = nil file_eab_proto_depIdxs = nil } linkedca-0.19.0/eab.proto000066400000000000000000000014041433253635300151750ustar00rootroot00000000000000syntax = "proto3"; package eab; option go_package = "go.step.sm/linkedca"; import "google/protobuf/timestamp.proto"; import "policy.proto"; message EABKey { string id = 1; // the KeyID bytes hmac_key = 2; // the key bytes string provisioner = 3; // the provisioner for which to create the key string reference = 4; // name/reference to the key; can be linked to external system string account = 5; // account the key is bound to google.protobuf.Timestamp created_at = 6; // time the key was created_at google.protobuf.Timestamp bound_at = 7; // time the key was bound to an account linkedca.Policy policy = 8; }linkedca-0.19.0/go.mod000066400000000000000000000011161433253635300144670ustar00rootroot00000000000000module go.step.sm/linkedca go 1.18 require ( github.com/stretchr/testify v1.8.1 google.golang.org/grpc v1.50.1 google.golang.org/protobuf v1.28.1 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/net v0.0.0-20220927171203-f486391704dc // indirect golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect golang.org/x/text v0.3.7 // indirect google.golang.org/genproto v0.0.0-20220929141241-1ce7b20da813 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) linkedca-0.19.0/go.sum000066400000000000000000000066251433253635300145260ustar00rootroot00000000000000github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= golang.org/x/net v0.0.0-20220927171203-f486391704dc h1:FxpXZdoBqT8RjqTy6i1E8nXHhW21wK7ptQ/EPIGxzPQ= golang.org/x/net v0.0.0-20220927171203-f486391704dc/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI= golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= google.golang.org/genproto v0.0.0-20220929141241-1ce7b20da813 h1:buul04Ikd79A5tP8nGhKEyMfr+/HplsO6nqSUapWZ/M= google.golang.org/genproto v0.0.0-20220929141241-1ce7b20da813/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= linkedca-0.19.0/majordomo.pb.go000066400000000000000000003264501433253635300163120ustar00rootroot00000000000000// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.9 // source: majordomo.proto package linkedca import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 RevocationStatus int32 const ( RevocationStatus_UNKNOWN RevocationStatus = 0 RevocationStatus_ACTIVE RevocationStatus = 1 RevocationStatus_REVOKED RevocationStatus = 2 RevocationStatus_HOLD RevocationStatus = 3 ) // Enum value maps for RevocationStatus. var ( RevocationStatus_name = map[int32]string{ 0: "UNKNOWN", 1: "ACTIVE", 2: "REVOKED", 3: "HOLD", } RevocationStatus_value = map[string]int32{ "UNKNOWN": 0, "ACTIVE": 1, "REVOKED": 2, "HOLD": 3, } ) func (x RevocationStatus) Enum() *RevocationStatus { p := new(RevocationStatus) *p = x return p } func (x RevocationStatus) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RevocationStatus) Descriptor() protoreflect.EnumDescriptor { return file_majordomo_proto_enumTypes[0].Descriptor() } func (RevocationStatus) Type() protoreflect.EnumType { return &file_majordomo_proto_enumTypes[0] } func (x RevocationStatus) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RevocationStatus.Descriptor instead. func (RevocationStatus) EnumDescriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{0} } type RevocationReasonCode int32 const ( RevocationReasonCode_UNSPECIFIED RevocationReasonCode = 0 RevocationReasonCode_KEY_COMPROMISE RevocationReasonCode = 1 RevocationReasonCode_CA_COMPROMISE RevocationReasonCode = 2 RevocationReasonCode_AFFILIATION_CHANGED RevocationReasonCode = 3 RevocationReasonCode_SUPERSEDED RevocationReasonCode = 4 RevocationReasonCode_CESSATION_OF_OPERATION RevocationReasonCode = 5 RevocationReasonCode_CERTIFICATE_HOLD RevocationReasonCode = 6 RevocationReasonCode_REMOVE_FROM_CRL RevocationReasonCode = 8 RevocationReasonCode_PRIVILEGE_WITHDRAWN RevocationReasonCode = 9 RevocationReasonCode_AA_COMPROMISE RevocationReasonCode = 10 ) // Enum value maps for RevocationReasonCode. var ( RevocationReasonCode_name = map[int32]string{ 0: "UNSPECIFIED", 1: "KEY_COMPROMISE", 2: "CA_COMPROMISE", 3: "AFFILIATION_CHANGED", 4: "SUPERSEDED", 5: "CESSATION_OF_OPERATION", 6: "CERTIFICATE_HOLD", 8: "REMOVE_FROM_CRL", 9: "PRIVILEGE_WITHDRAWN", 10: "AA_COMPROMISE", } RevocationReasonCode_value = map[string]int32{ "UNSPECIFIED": 0, "KEY_COMPROMISE": 1, "CA_COMPROMISE": 2, "AFFILIATION_CHANGED": 3, "SUPERSEDED": 4, "CESSATION_OF_OPERATION": 5, "CERTIFICATE_HOLD": 6, "REMOVE_FROM_CRL": 8, "PRIVILEGE_WITHDRAWN": 9, "AA_COMPROMISE": 10, } ) func (x RevocationReasonCode) Enum() *RevocationReasonCode { p := new(RevocationReasonCode) *p = x return p } func (x RevocationReasonCode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RevocationReasonCode) Descriptor() protoreflect.EnumDescriptor { return file_majordomo_proto_enumTypes[1].Descriptor() } func (RevocationReasonCode) Type() protoreflect.EnumType { return &file_majordomo_proto_enumTypes[1] } func (x RevocationReasonCode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RevocationReasonCode.Descriptor instead. func (RevocationReasonCode) EnumDescriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{1} } type LoginRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AuthorityId string `protobuf:"bytes,1,opt,name=authority_id,json=authorityId,proto3" json:"authority_id,omitempty"` Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` PemCertificateRequest string `protobuf:"bytes,3,opt,name=pem_certificate_request,json=pemCertificateRequest,proto3" json:"pem_certificate_request,omitempty"` } func (x *LoginRequest) Reset() { *x = LoginRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LoginRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*LoginRequest) ProtoMessage() {} func (x *LoginRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LoginRequest.ProtoReflect.Descriptor instead. func (*LoginRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{0} } func (x *LoginRequest) GetAuthorityId() string { if x != nil { return x.AuthorityId } return "" } func (x *LoginRequest) GetToken() string { if x != nil { return x.Token } return "" } func (x *LoginRequest) GetPemCertificateRequest() string { if x != nil { return x.PemCertificateRequest } return "" } type LoginResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PemCertificate string `protobuf:"bytes,1,opt,name=pem_certificate,json=pemCertificate,proto3" json:"pem_certificate,omitempty"` PemCertificateChain string `protobuf:"bytes,2,opt,name=pem_certificate_chain,json=pemCertificateChain,proto3" json:"pem_certificate_chain,omitempty"` } func (x *LoginResponse) Reset() { *x = LoginResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LoginResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*LoginResponse) ProtoMessage() {} func (x *LoginResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LoginResponse.ProtoReflect.Descriptor instead. func (*LoginResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{1} } func (x *LoginResponse) GetPemCertificate() string { if x != nil { return x.PemCertificate } return "" } func (x *LoginResponse) GetPemCertificateChain() string { if x != nil { return x.PemCertificateChain } return "" } type GetRootCertificateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Fingerprint string `protobuf:"bytes,1,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` } func (x *GetRootCertificateRequest) Reset() { *x = GetRootCertificateRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetRootCertificateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRootCertificateRequest) ProtoMessage() {} func (x *GetRootCertificateRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRootCertificateRequest.ProtoReflect.Descriptor instead. func (*GetRootCertificateRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{2} } func (x *GetRootCertificateRequest) GetFingerprint() string { if x != nil { return x.Fingerprint } return "" } type GetRootCertificateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PemCertificate string `protobuf:"bytes,1,opt,name=pem_certificate,json=pemCertificate,proto3" json:"pem_certificate,omitempty"` } func (x *GetRootCertificateResponse) Reset() { *x = GetRootCertificateResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetRootCertificateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRootCertificateResponse) ProtoMessage() {} func (x *GetRootCertificateResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRootCertificateResponse.ProtoReflect.Descriptor instead. func (*GetRootCertificateResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{3} } func (x *GetRootCertificateResponse) GetPemCertificate() string { if x != nil { return x.PemCertificate } return "" } type ConfigurationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AuthorityId string `protobuf:"bytes,1,opt,name=authority_id,json=authorityId,proto3" json:"authority_id,omitempty"` } func (x *ConfigurationRequest) Reset() { *x = ConfigurationRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConfigurationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConfigurationRequest) ProtoMessage() {} func (x *ConfigurationRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ConfigurationRequest.ProtoReflect.Descriptor instead. func (*ConfigurationRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{4} } func (x *ConfigurationRequest) GetAuthorityId() string { if x != nil { return x.AuthorityId } return "" } type ConfigurationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Provisioners []*Provisioner `protobuf:"bytes,1,rep,name=provisioners,proto3" json:"provisioners,omitempty"` Admins []*Admin `protobuf:"bytes,2,rep,name=admins,proto3" json:"admins,omitempty"` RaConfig *RegistrationAuthorityConfig `protobuf:"bytes,3,opt,name=ra_config,json=raConfig,proto3" json:"ra_config,omitempty"` ServerConfig *ServerConfiguration `protobuf:"bytes,4,opt,name=server_config,json=serverConfig,proto3" json:"server_config,omitempty"` } func (x *ConfigurationResponse) Reset() { *x = ConfigurationResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConfigurationResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConfigurationResponse) ProtoMessage() {} func (x *ConfigurationResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ConfigurationResponse.ProtoReflect.Descriptor instead. func (*ConfigurationResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{5} } func (x *ConfigurationResponse) GetProvisioners() []*Provisioner { if x != nil { return x.Provisioners } return nil } func (x *ConfigurationResponse) GetAdmins() []*Admin { if x != nil { return x.Admins } return nil } func (x *ConfigurationResponse) GetRaConfig() *RegistrationAuthorityConfig { if x != nil { return x.RaConfig } return nil } func (x *ConfigurationResponse) GetServerConfig() *ServerConfiguration { if x != nil { return x.ServerConfig } return nil } type ServerConfiguration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` DnsNames []string `protobuf:"bytes,2,rep,name=dns_names,json=dnsNames,proto3" json:"dns_names,omitempty"` } func (x *ServerConfiguration) Reset() { *x = ServerConfiguration{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerConfiguration) ProtoMessage() {} func (x *ServerConfiguration) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ServerConfiguration.ProtoReflect.Descriptor instead. func (*ServerConfiguration) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{6} } func (x *ServerConfiguration) GetAddress() string { if x != nil { return x.Address } return "" } func (x *ServerConfiguration) GetDnsNames() []string { if x != nil { return x.DnsNames } return nil } type RegistrationAuthorityConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CaUrl string `protobuf:"bytes,1,opt,name=ca_url,json=caUrl,proto3" json:"ca_url,omitempty"` Fingerprint string `protobuf:"bytes,2,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` Provisioner *ProvisionerIdentity `protobuf:"bytes,3,opt,name=provisioner,proto3" json:"provisioner,omitempty"` } func (x *RegistrationAuthorityConfig) Reset() { *x = RegistrationAuthorityConfig{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegistrationAuthorityConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegistrationAuthorityConfig) ProtoMessage() {} func (x *RegistrationAuthorityConfig) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegistrationAuthorityConfig.ProtoReflect.Descriptor instead. func (*RegistrationAuthorityConfig) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{7} } func (x *RegistrationAuthorityConfig) GetCaUrl() string { if x != nil { return x.CaUrl } return "" } func (x *RegistrationAuthorityConfig) GetFingerprint() string { if x != nil { return x.Fingerprint } return "" } func (x *RegistrationAuthorityConfig) GetProvisioner() *ProvisionerIdentity { if x != nil { return x.Provisioner } return nil } type RegistrationAuthorityProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AuthorityId string `protobuf:"bytes,1,opt,name=authority_id,json=authorityId,proto3" json:"authority_id,omitempty"` Provisioner *ProvisionerIdentity `protobuf:"bytes,2,opt,name=provisioner,proto3" json:"provisioner,omitempty"` } func (x *RegistrationAuthorityProvisioner) Reset() { *x = RegistrationAuthorityProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegistrationAuthorityProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegistrationAuthorityProvisioner) ProtoMessage() {} func (x *RegistrationAuthorityProvisioner) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegistrationAuthorityProvisioner.ProtoReflect.Descriptor instead. func (*RegistrationAuthorityProvisioner) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{8} } func (x *RegistrationAuthorityProvisioner) GetAuthorityId() string { if x != nil { return x.AuthorityId } return "" } func (x *RegistrationAuthorityProvisioner) GetProvisioner() *ProvisionerIdentity { if x != nil { return x.Provisioner } return nil } type CreateProvisionerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type Provisioner_Type `protobuf:"varint,1,opt,name=type,proto3,enum=linkedca.Provisioner_Type" json:"type,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Details *ProvisionerDetails `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` Claims *Claims `protobuf:"bytes,4,opt,name=claims,proto3" json:"claims,omitempty"` X509Template *Template `protobuf:"bytes,5,opt,name=x509_template,json=x509Template,proto3" json:"x509_template,omitempty"` SshTemplate *Template `protobuf:"bytes,6,opt,name=ssh_template,json=sshTemplate,proto3" json:"ssh_template,omitempty"` } func (x *CreateProvisionerRequest) Reset() { *x = CreateProvisionerRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateProvisionerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateProvisionerRequest) ProtoMessage() {} func (x *CreateProvisionerRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateProvisionerRequest.ProtoReflect.Descriptor instead. func (*CreateProvisionerRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{9} } func (x *CreateProvisionerRequest) GetType() Provisioner_Type { if x != nil { return x.Type } return Provisioner_NOOP } func (x *CreateProvisionerRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateProvisionerRequest) GetDetails() *ProvisionerDetails { if x != nil { return x.Details } return nil } func (x *CreateProvisionerRequest) GetClaims() *Claims { if x != nil { return x.Claims } return nil } func (x *CreateProvisionerRequest) GetX509Template() *Template { if x != nil { return x.X509Template } return nil } func (x *CreateProvisionerRequest) GetSshTemplate() *Template { if x != nil { return x.SshTemplate } return nil } type GetProvisionerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *GetProvisionerRequest) Reset() { *x = GetProvisionerRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetProvisionerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetProvisionerRequest) ProtoMessage() {} func (x *GetProvisionerRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetProvisionerRequest.ProtoReflect.Descriptor instead. func (*GetProvisionerRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{10} } func (x *GetProvisionerRequest) GetId() string { if x != nil { return x.Id } return "" } type UpdateProvisionerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Details *ProvisionerDetails `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` Claims *Claims `protobuf:"bytes,4,opt,name=claims,proto3" json:"claims,omitempty"` X509Template *Template `protobuf:"bytes,5,opt,name=x509_template,json=x509Template,proto3" json:"x509_template,omitempty"` SshTemplate *Template `protobuf:"bytes,6,opt,name=ssh_template,json=sshTemplate,proto3" json:"ssh_template,omitempty"` } func (x *UpdateProvisionerRequest) Reset() { *x = UpdateProvisionerRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateProvisionerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateProvisionerRequest) ProtoMessage() {} func (x *UpdateProvisionerRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateProvisionerRequest.ProtoReflect.Descriptor instead. func (*UpdateProvisionerRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{11} } func (x *UpdateProvisionerRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateProvisionerRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateProvisionerRequest) GetDetails() *ProvisionerDetails { if x != nil { return x.Details } return nil } func (x *UpdateProvisionerRequest) GetClaims() *Claims { if x != nil { return x.Claims } return nil } func (x *UpdateProvisionerRequest) GetX509Template() *Template { if x != nil { return x.X509Template } return nil } func (x *UpdateProvisionerRequest) GetSshTemplate() *Template { if x != nil { return x.SshTemplate } return nil } type DeleteProvisionerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *DeleteProvisionerRequest) Reset() { *x = DeleteProvisionerRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteProvisionerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteProvisionerRequest) ProtoMessage() {} func (x *DeleteProvisionerRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteProvisionerRequest.ProtoReflect.Descriptor instead. func (*DeleteProvisionerRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{12} } func (x *DeleteProvisionerRequest) GetId() string { if x != nil { return x.Id } return "" } type CreateAdminRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Subject string `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"` ProvisionerId string `protobuf:"bytes,2,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` Type Admin_Type `protobuf:"varint,3,opt,name=type,proto3,enum=linkedca.Admin_Type" json:"type,omitempty"` } func (x *CreateAdminRequest) Reset() { *x = CreateAdminRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateAdminRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateAdminRequest) ProtoMessage() {} func (x *CreateAdminRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateAdminRequest.ProtoReflect.Descriptor instead. func (*CreateAdminRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{13} } func (x *CreateAdminRequest) GetSubject() string { if x != nil { return x.Subject } return "" } func (x *CreateAdminRequest) GetProvisionerId() string { if x != nil { return x.ProvisionerId } return "" } func (x *CreateAdminRequest) GetType() Admin_Type { if x != nil { return x.Type } return Admin_UNKNOWN } type GetAdminRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *GetAdminRequest) Reset() { *x = GetAdminRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAdminRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAdminRequest) ProtoMessage() {} func (x *GetAdminRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAdminRequest.ProtoReflect.Descriptor instead. func (*GetAdminRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{14} } func (x *GetAdminRequest) GetId() string { if x != nil { return x.Id } return "" } type UpdateAdminRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Type Admin_Type `protobuf:"varint,2,opt,name=type,proto3,enum=linkedca.Admin_Type" json:"type,omitempty"` } func (x *UpdateAdminRequest) Reset() { *x = UpdateAdminRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAdminRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAdminRequest) ProtoMessage() {} func (x *UpdateAdminRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateAdminRequest.ProtoReflect.Descriptor instead. func (*UpdateAdminRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{15} } func (x *UpdateAdminRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateAdminRequest) GetType() Admin_Type { if x != nil { return x.Type } return Admin_UNKNOWN } type DeleteAdminRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *DeleteAdminRequest) Reset() { *x = DeleteAdminRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteAdminRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteAdminRequest) ProtoMessage() {} func (x *DeleteAdminRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteAdminRequest.ProtoReflect.Descriptor instead. func (*DeleteAdminRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{16} } func (x *DeleteAdminRequest) GetId() string { if x != nil { return x.Id } return "" } type CertificateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PemCertificate string `protobuf:"bytes,1,opt,name=pem_certificate,json=pemCertificate,proto3" json:"pem_certificate,omitempty"` PemCertificateChain string `protobuf:"bytes,2,opt,name=pem_certificate_chain,json=pemCertificateChain,proto3" json:"pem_certificate_chain,omitempty"` PemParentCertificate string `protobuf:"bytes,3,opt,name=pem_parent_certificate,json=pemParentCertificate,proto3" json:"pem_parent_certificate,omitempty"` Provisioner *ProvisionerIdentity `protobuf:"bytes,4,opt,name=provisioner,proto3" json:"provisioner,omitempty"` RaProvisioner *RegistrationAuthorityProvisioner `protobuf:"bytes,5,opt,name=ra_provisioner,json=raProvisioner,proto3" json:"ra_provisioner,omitempty"` EndpointId string `protobuf:"bytes,6,opt,name=endpoint_id,json=endpointId,proto3" json:"endpoint_id,omitempty"` AttestationData *AttestationData `protobuf:"bytes,7,opt,name=attestation_data,json=attestationData,proto3" json:"attestation_data,omitempty"` } func (x *CertificateRequest) Reset() { *x = CertificateRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CertificateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CertificateRequest) ProtoMessage() {} func (x *CertificateRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CertificateRequest.ProtoReflect.Descriptor instead. func (*CertificateRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{17} } func (x *CertificateRequest) GetPemCertificate() string { if x != nil { return x.PemCertificate } return "" } func (x *CertificateRequest) GetPemCertificateChain() string { if x != nil { return x.PemCertificateChain } return "" } func (x *CertificateRequest) GetPemParentCertificate() string { if x != nil { return x.PemParentCertificate } return "" } func (x *CertificateRequest) GetProvisioner() *ProvisionerIdentity { if x != nil { return x.Provisioner } return nil } func (x *CertificateRequest) GetRaProvisioner() *RegistrationAuthorityProvisioner { if x != nil { return x.RaProvisioner } return nil } func (x *CertificateRequest) GetEndpointId() string { if x != nil { return x.EndpointId } return "" } func (x *CertificateRequest) GetAttestationData() *AttestationData { if x != nil { return x.AttestationData } return nil } // AttestationData holds the information available at certificate sign time. // Currently only the permanent identifier (UDID or SerialNumber, not both) is // available. type AttestationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PermanentIdentifier string `protobuf:"bytes,1,opt,name=permanent_identifier,json=permanentIdentifier,proto3" json:"permanent_identifier,omitempty"` } func (x *AttestationData) Reset() { *x = AttestationData{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AttestationData) String() string { return protoimpl.X.MessageStringOf(x) } func (*AttestationData) ProtoMessage() {} func (x *AttestationData) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AttestationData.ProtoReflect.Descriptor instead. func (*AttestationData) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{18} } func (x *AttestationData) GetPermanentIdentifier() string { if x != nil { return x.PermanentIdentifier } return "" } type CertificateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *CertificateResponse) Reset() { *x = CertificateResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CertificateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CertificateResponse) ProtoMessage() {} func (x *CertificateResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CertificateResponse.ProtoReflect.Descriptor instead. func (*CertificateResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{19} } func (x *CertificateResponse) GetId() string { if x != nil { return x.Id } return "" } type SSHCertificateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Certificate string `protobuf:"bytes,1,opt,name=certificate,proto3" json:"certificate,omitempty"` ParentCertificate string `protobuf:"bytes,2,opt,name=parent_certificate,json=parentCertificate,proto3" json:"parent_certificate,omitempty"` Provisioner *ProvisionerIdentity `protobuf:"bytes,3,opt,name=provisioner,proto3" json:"provisioner,omitempty"` } func (x *SSHCertificateRequest) Reset() { *x = SSHCertificateRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHCertificateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHCertificateRequest) ProtoMessage() {} func (x *SSHCertificateRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHCertificateRequest.ProtoReflect.Descriptor instead. func (*SSHCertificateRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{20} } func (x *SSHCertificateRequest) GetCertificate() string { if x != nil { return x.Certificate } return "" } func (x *SSHCertificateRequest) GetParentCertificate() string { if x != nil { return x.ParentCertificate } return "" } func (x *SSHCertificateRequest) GetProvisioner() *ProvisionerIdentity { if x != nil { return x.Provisioner } return nil } type SSHCertificateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *SSHCertificateResponse) Reset() { *x = SSHCertificateResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHCertificateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHCertificateResponse) ProtoMessage() {} func (x *SSHCertificateResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHCertificateResponse.ProtoReflect.Descriptor instead. func (*SSHCertificateResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{21} } func (x *SSHCertificateResponse) GetId() string { if x != nil { return x.Id } return "" } type RevokeCertificateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Serial string `protobuf:"bytes,1,opt,name=serial,proto3" json:"serial,omitempty"` PemCertificate string `protobuf:"bytes,2,opt,name=pem_certificate,json=pemCertificate,proto3" json:"pem_certificate,omitempty"` Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` ReasonCode RevocationReasonCode `protobuf:"varint,4,opt,name=reason_code,json=reasonCode,proto3,enum=linkedca.RevocationReasonCode" json:"reason_code,omitempty"` Passive bool `protobuf:"varint,5,opt,name=passive,proto3" json:"passive,omitempty"` } func (x *RevokeCertificateRequest) Reset() { *x = RevokeCertificateRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokeCertificateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokeCertificateRequest) ProtoMessage() {} func (x *RevokeCertificateRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RevokeCertificateRequest.ProtoReflect.Descriptor instead. func (*RevokeCertificateRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{22} } func (x *RevokeCertificateRequest) GetSerial() string { if x != nil { return x.Serial } return "" } func (x *RevokeCertificateRequest) GetPemCertificate() string { if x != nil { return x.PemCertificate } return "" } func (x *RevokeCertificateRequest) GetReason() string { if x != nil { return x.Reason } return "" } func (x *RevokeCertificateRequest) GetReasonCode() RevocationReasonCode { if x != nil { return x.ReasonCode } return RevocationReasonCode_UNSPECIFIED } func (x *RevokeCertificateRequest) GetPassive() bool { if x != nil { return x.Passive } return false } type RevokeCertificateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status RevocationStatus `protobuf:"varint,1,opt,name=status,proto3,enum=linkedca.RevocationStatus" json:"status,omitempty"` } func (x *RevokeCertificateResponse) Reset() { *x = RevokeCertificateResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokeCertificateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokeCertificateResponse) ProtoMessage() {} func (x *RevokeCertificateResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RevokeCertificateResponse.ProtoReflect.Descriptor instead. func (*RevokeCertificateResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{23} } func (x *RevokeCertificateResponse) GetStatus() RevocationStatus { if x != nil { return x.Status } return RevocationStatus_UNKNOWN } type RevokeSSHCertificateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Serial string `protobuf:"bytes,1,opt,name=serial,proto3" json:"serial,omitempty"` Certificate string `protobuf:"bytes,2,opt,name=certificate,proto3" json:"certificate,omitempty"` Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` ReasonCode RevocationReasonCode `protobuf:"varint,4,opt,name=reason_code,json=reasonCode,proto3,enum=linkedca.RevocationReasonCode" json:"reason_code,omitempty"` Passive bool `protobuf:"varint,5,opt,name=passive,proto3" json:"passive,omitempty"` } func (x *RevokeSSHCertificateRequest) Reset() { *x = RevokeSSHCertificateRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokeSSHCertificateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokeSSHCertificateRequest) ProtoMessage() {} func (x *RevokeSSHCertificateRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RevokeSSHCertificateRequest.ProtoReflect.Descriptor instead. func (*RevokeSSHCertificateRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{24} } func (x *RevokeSSHCertificateRequest) GetSerial() string { if x != nil { return x.Serial } return "" } func (x *RevokeSSHCertificateRequest) GetCertificate() string { if x != nil { return x.Certificate } return "" } func (x *RevokeSSHCertificateRequest) GetReason() string { if x != nil { return x.Reason } return "" } func (x *RevokeSSHCertificateRequest) GetReasonCode() RevocationReasonCode { if x != nil { return x.ReasonCode } return RevocationReasonCode_UNSPECIFIED } func (x *RevokeSSHCertificateRequest) GetPassive() bool { if x != nil { return x.Passive } return false } type RevokeSSHCertificateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status RevocationStatus `protobuf:"varint,1,opt,name=status,proto3,enum=linkedca.RevocationStatus" json:"status,omitempty"` } func (x *RevokeSSHCertificateResponse) Reset() { *x = RevokeSSHCertificateResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokeSSHCertificateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokeSSHCertificateResponse) ProtoMessage() {} func (x *RevokeSSHCertificateResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RevokeSSHCertificateResponse.ProtoReflect.Descriptor instead. func (*RevokeSSHCertificateResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{25} } func (x *RevokeSSHCertificateResponse) GetStatus() RevocationStatus { if x != nil { return x.Status } return RevocationStatus_UNKNOWN } type GetCertificateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Serial string `protobuf:"bytes,1,opt,name=serial,proto3" json:"serial,omitempty"` } func (x *GetCertificateRequest) Reset() { *x = GetCertificateRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCertificateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCertificateRequest) ProtoMessage() {} func (x *GetCertificateRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCertificateRequest.ProtoReflect.Descriptor instead. func (*GetCertificateRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{26} } func (x *GetCertificateRequest) GetSerial() string { if x != nil { return x.Serial } return "" } type GetCertificateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PemCertificate string `protobuf:"bytes,1,opt,name=pem_certificate,json=pemCertificate,proto3" json:"pem_certificate,omitempty"` Provisioner *ProvisionerIdentity `protobuf:"bytes,2,opt,name=provisioner,proto3" json:"provisioner,omitempty"` RaProvisioner *RegistrationAuthorityProvisioner `protobuf:"bytes,3,opt,name=ra_provisioner,json=raProvisioner,proto3" json:"ra_provisioner,omitempty"` } func (x *GetCertificateResponse) Reset() { *x = GetCertificateResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCertificateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCertificateResponse) ProtoMessage() {} func (x *GetCertificateResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCertificateResponse.ProtoReflect.Descriptor instead. func (*GetCertificateResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{27} } func (x *GetCertificateResponse) GetPemCertificate() string { if x != nil { return x.PemCertificate } return "" } func (x *GetCertificateResponse) GetProvisioner() *ProvisionerIdentity { if x != nil { return x.Provisioner } return nil } func (x *GetCertificateResponse) GetRaProvisioner() *RegistrationAuthorityProvisioner { if x != nil { return x.RaProvisioner } return nil } type GetCertificateStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Serial string `protobuf:"bytes,1,opt,name=serial,proto3" json:"serial,omitempty"` } func (x *GetCertificateStatusRequest) Reset() { *x = GetCertificateStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCertificateStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCertificateStatusRequest) ProtoMessage() {} func (x *GetCertificateStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCertificateStatusRequest.ProtoReflect.Descriptor instead. func (*GetCertificateStatusRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{28} } func (x *GetCertificateStatusRequest) GetSerial() string { if x != nil { return x.Serial } return "" } type GetCertificateStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status RevocationStatus `protobuf:"varint,1,opt,name=status,proto3,enum=linkedca.RevocationStatus" json:"status,omitempty"` } func (x *GetCertificateStatusResponse) Reset() { *x = GetCertificateStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCertificateStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCertificateStatusResponse) ProtoMessage() {} func (x *GetCertificateStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCertificateStatusResponse.ProtoReflect.Descriptor instead. func (*GetCertificateStatusResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{29} } func (x *GetCertificateStatusResponse) GetStatus() RevocationStatus { if x != nil { return x.Status } return RevocationStatus_UNKNOWN } type GetSSHCertificateStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Serial string `protobuf:"bytes,1,opt,name=serial,proto3" json:"serial,omitempty"` } func (x *GetSSHCertificateStatusRequest) Reset() { *x = GetSSHCertificateStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSSHCertificateStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSSHCertificateStatusRequest) ProtoMessage() {} func (x *GetSSHCertificateStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSSHCertificateStatusRequest.ProtoReflect.Descriptor instead. func (*GetSSHCertificateStatusRequest) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{30} } func (x *GetSSHCertificateStatusRequest) GetSerial() string { if x != nil { return x.Serial } return "" } type GetSSHCertificateStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status RevocationStatus `protobuf:"varint,1,opt,name=status,proto3,enum=linkedca.RevocationStatus" json:"status,omitempty"` } func (x *GetSSHCertificateStatusResponse) Reset() { *x = GetSSHCertificateStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_majordomo_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSSHCertificateStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSSHCertificateStatusResponse) ProtoMessage() {} func (x *GetSSHCertificateStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_majordomo_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSSHCertificateStatusResponse.ProtoReflect.Descriptor instead. func (*GetSSHCertificateStatusResponse) Descriptor() ([]byte, []int) { return file_majordomo_proto_rawDescGZIP(), []int{31} } func (x *GetSSHCertificateStatusResponse) GetStatus() RevocationStatus { if x != nil { return x.Status } return RevocationStatus_UNKNOWN } var File_majordomo_proto protoreflect.FileDescriptor var file_majordomo_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x64, 0x6f, 0x6d, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x1a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7f, 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x3d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x83, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4c, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0d, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x78, 0x35, 0x30, 0x39, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x73, 0x68, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x73, 0x68, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x90, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0d, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x78, 0x35, 0x30, 0x39, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x73, 0x68, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x73, 0x68, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x7f, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x21, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa2, 0x03, 0x0a, 0x12, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x65, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x65, 0x6d, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0e, 0x72, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x72, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x44, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x25, 0x0a, 0x13, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x15, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x16, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xce, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x22, 0x4f, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x22, 0x52, 0x0a, 0x1c, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0xd5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0e, 0x72, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x72, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x52, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x38, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x55, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x42, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x03, 0x2a, 0xea, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x4f, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x41, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x4f, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x46, 0x46, 0x49, 0x4c, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x55, 0x50, 0x45, 0x52, 0x53, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x45, 0x53, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x52, 0x4c, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x4e, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x41, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x4f, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x0a, 0x32, 0xc1, 0x0b, 0x0a, 0x09, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x64, 0x6f, 0x6d, 0x6f, 0x12, 0x38, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x4e, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x53, 0x48, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x15, 0x5a, 0x13, 0x67, 0x6f, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x2e, 0x73, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_majordomo_proto_rawDescOnce sync.Once file_majordomo_proto_rawDescData = file_majordomo_proto_rawDesc ) func file_majordomo_proto_rawDescGZIP() []byte { file_majordomo_proto_rawDescOnce.Do(func() { file_majordomo_proto_rawDescData = protoimpl.X.CompressGZIP(file_majordomo_proto_rawDescData) }) return file_majordomo_proto_rawDescData } var file_majordomo_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_majordomo_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_majordomo_proto_goTypes = []interface{}{ (RevocationStatus)(0), // 0: linkedca.RevocationStatus (RevocationReasonCode)(0), // 1: linkedca.RevocationReasonCode (*LoginRequest)(nil), // 2: linkedca.LoginRequest (*LoginResponse)(nil), // 3: linkedca.LoginResponse (*GetRootCertificateRequest)(nil), // 4: linkedca.GetRootCertificateRequest (*GetRootCertificateResponse)(nil), // 5: linkedca.GetRootCertificateResponse (*ConfigurationRequest)(nil), // 6: linkedca.ConfigurationRequest (*ConfigurationResponse)(nil), // 7: linkedca.ConfigurationResponse (*ServerConfiguration)(nil), // 8: linkedca.ServerConfiguration (*RegistrationAuthorityConfig)(nil), // 9: linkedca.RegistrationAuthorityConfig (*RegistrationAuthorityProvisioner)(nil), // 10: linkedca.RegistrationAuthorityProvisioner (*CreateProvisionerRequest)(nil), // 11: linkedca.CreateProvisionerRequest (*GetProvisionerRequest)(nil), // 12: linkedca.GetProvisionerRequest (*UpdateProvisionerRequest)(nil), // 13: linkedca.UpdateProvisionerRequest (*DeleteProvisionerRequest)(nil), // 14: linkedca.DeleteProvisionerRequest (*CreateAdminRequest)(nil), // 15: linkedca.CreateAdminRequest (*GetAdminRequest)(nil), // 16: linkedca.GetAdminRequest (*UpdateAdminRequest)(nil), // 17: linkedca.UpdateAdminRequest (*DeleteAdminRequest)(nil), // 18: linkedca.DeleteAdminRequest (*CertificateRequest)(nil), // 19: linkedca.CertificateRequest (*AttestationData)(nil), // 20: linkedca.AttestationData (*CertificateResponse)(nil), // 21: linkedca.CertificateResponse (*SSHCertificateRequest)(nil), // 22: linkedca.SSHCertificateRequest (*SSHCertificateResponse)(nil), // 23: linkedca.SSHCertificateResponse (*RevokeCertificateRequest)(nil), // 24: linkedca.RevokeCertificateRequest (*RevokeCertificateResponse)(nil), // 25: linkedca.RevokeCertificateResponse (*RevokeSSHCertificateRequest)(nil), // 26: linkedca.RevokeSSHCertificateRequest (*RevokeSSHCertificateResponse)(nil), // 27: linkedca.RevokeSSHCertificateResponse (*GetCertificateRequest)(nil), // 28: linkedca.GetCertificateRequest (*GetCertificateResponse)(nil), // 29: linkedca.GetCertificateResponse (*GetCertificateStatusRequest)(nil), // 30: linkedca.GetCertificateStatusRequest (*GetCertificateStatusResponse)(nil), // 31: linkedca.GetCertificateStatusResponse (*GetSSHCertificateStatusRequest)(nil), // 32: linkedca.GetSSHCertificateStatusRequest (*GetSSHCertificateStatusResponse)(nil), // 33: linkedca.GetSSHCertificateStatusResponse (*Provisioner)(nil), // 34: linkedca.Provisioner (*Admin)(nil), // 35: linkedca.Admin (*ProvisionerIdentity)(nil), // 36: linkedca.ProvisionerIdentity (Provisioner_Type)(0), // 37: linkedca.Provisioner.Type (*ProvisionerDetails)(nil), // 38: linkedca.ProvisionerDetails (*Claims)(nil), // 39: linkedca.Claims (*Template)(nil), // 40: linkedca.Template (Admin_Type)(0), // 41: linkedca.Admin.Type } var file_majordomo_proto_depIdxs = []int32{ 34, // 0: linkedca.ConfigurationResponse.provisioners:type_name -> linkedca.Provisioner 35, // 1: linkedca.ConfigurationResponse.admins:type_name -> linkedca.Admin 9, // 2: linkedca.ConfigurationResponse.ra_config:type_name -> linkedca.RegistrationAuthorityConfig 8, // 3: linkedca.ConfigurationResponse.server_config:type_name -> linkedca.ServerConfiguration 36, // 4: linkedca.RegistrationAuthorityConfig.provisioner:type_name -> linkedca.ProvisionerIdentity 36, // 5: linkedca.RegistrationAuthorityProvisioner.provisioner:type_name -> linkedca.ProvisionerIdentity 37, // 6: linkedca.CreateProvisionerRequest.type:type_name -> linkedca.Provisioner.Type 38, // 7: linkedca.CreateProvisionerRequest.details:type_name -> linkedca.ProvisionerDetails 39, // 8: linkedca.CreateProvisionerRequest.claims:type_name -> linkedca.Claims 40, // 9: linkedca.CreateProvisionerRequest.x509_template:type_name -> linkedca.Template 40, // 10: linkedca.CreateProvisionerRequest.ssh_template:type_name -> linkedca.Template 38, // 11: linkedca.UpdateProvisionerRequest.details:type_name -> linkedca.ProvisionerDetails 39, // 12: linkedca.UpdateProvisionerRequest.claims:type_name -> linkedca.Claims 40, // 13: linkedca.UpdateProvisionerRequest.x509_template:type_name -> linkedca.Template 40, // 14: linkedca.UpdateProvisionerRequest.ssh_template:type_name -> linkedca.Template 41, // 15: linkedca.CreateAdminRequest.type:type_name -> linkedca.Admin.Type 41, // 16: linkedca.UpdateAdminRequest.type:type_name -> linkedca.Admin.Type 36, // 17: linkedca.CertificateRequest.provisioner:type_name -> linkedca.ProvisionerIdentity 10, // 18: linkedca.CertificateRequest.ra_provisioner:type_name -> linkedca.RegistrationAuthorityProvisioner 20, // 19: linkedca.CertificateRequest.attestation_data:type_name -> linkedca.AttestationData 36, // 20: linkedca.SSHCertificateRequest.provisioner:type_name -> linkedca.ProvisionerIdentity 1, // 21: linkedca.RevokeCertificateRequest.reason_code:type_name -> linkedca.RevocationReasonCode 0, // 22: linkedca.RevokeCertificateResponse.status:type_name -> linkedca.RevocationStatus 1, // 23: linkedca.RevokeSSHCertificateRequest.reason_code:type_name -> linkedca.RevocationReasonCode 0, // 24: linkedca.RevokeSSHCertificateResponse.status:type_name -> linkedca.RevocationStatus 36, // 25: linkedca.GetCertificateResponse.provisioner:type_name -> linkedca.ProvisionerIdentity 10, // 26: linkedca.GetCertificateResponse.ra_provisioner:type_name -> linkedca.RegistrationAuthorityProvisioner 0, // 27: linkedca.GetCertificateStatusResponse.status:type_name -> linkedca.RevocationStatus 0, // 28: linkedca.GetSSHCertificateStatusResponse.status:type_name -> linkedca.RevocationStatus 2, // 29: linkedca.Majordomo.Login:input_type -> linkedca.LoginRequest 4, // 30: linkedca.Majordomo.GetRootCertificate:input_type -> linkedca.GetRootCertificateRequest 6, // 31: linkedca.Majordomo.GetConfiguration:input_type -> linkedca.ConfigurationRequest 11, // 32: linkedca.Majordomo.CreateProvisioner:input_type -> linkedca.CreateProvisionerRequest 12, // 33: linkedca.Majordomo.GetProvisioner:input_type -> linkedca.GetProvisionerRequest 13, // 34: linkedca.Majordomo.UpdateProvisioner:input_type -> linkedca.UpdateProvisionerRequest 14, // 35: linkedca.Majordomo.DeleteProvisioner:input_type -> linkedca.DeleteProvisionerRequest 15, // 36: linkedca.Majordomo.CreateAdmin:input_type -> linkedca.CreateAdminRequest 16, // 37: linkedca.Majordomo.GetAdmin:input_type -> linkedca.GetAdminRequest 17, // 38: linkedca.Majordomo.UpdateAdmin:input_type -> linkedca.UpdateAdminRequest 18, // 39: linkedca.Majordomo.DeleteAdmin:input_type -> linkedca.DeleteAdminRequest 19, // 40: linkedca.Majordomo.PostCertificate:input_type -> linkedca.CertificateRequest 22, // 41: linkedca.Majordomo.PostSSHCertificate:input_type -> linkedca.SSHCertificateRequest 24, // 42: linkedca.Majordomo.RevokeCertificate:input_type -> linkedca.RevokeCertificateRequest 26, // 43: linkedca.Majordomo.RevokeSSHCertificate:input_type -> linkedca.RevokeSSHCertificateRequest 28, // 44: linkedca.Majordomo.GetCertificate:input_type -> linkedca.GetCertificateRequest 30, // 45: linkedca.Majordomo.GetCertificateStatus:input_type -> linkedca.GetCertificateStatusRequest 32, // 46: linkedca.Majordomo.GetSSHCertificateStatus:input_type -> linkedca.GetSSHCertificateStatusRequest 3, // 47: linkedca.Majordomo.Login:output_type -> linkedca.LoginResponse 5, // 48: linkedca.Majordomo.GetRootCertificate:output_type -> linkedca.GetRootCertificateResponse 7, // 49: linkedca.Majordomo.GetConfiguration:output_type -> linkedca.ConfigurationResponse 34, // 50: linkedca.Majordomo.CreateProvisioner:output_type -> linkedca.Provisioner 34, // 51: linkedca.Majordomo.GetProvisioner:output_type -> linkedca.Provisioner 34, // 52: linkedca.Majordomo.UpdateProvisioner:output_type -> linkedca.Provisioner 34, // 53: linkedca.Majordomo.DeleteProvisioner:output_type -> linkedca.Provisioner 35, // 54: linkedca.Majordomo.CreateAdmin:output_type -> linkedca.Admin 35, // 55: linkedca.Majordomo.GetAdmin:output_type -> linkedca.Admin 35, // 56: linkedca.Majordomo.UpdateAdmin:output_type -> linkedca.Admin 35, // 57: linkedca.Majordomo.DeleteAdmin:output_type -> linkedca.Admin 21, // 58: linkedca.Majordomo.PostCertificate:output_type -> linkedca.CertificateResponse 23, // 59: linkedca.Majordomo.PostSSHCertificate:output_type -> linkedca.SSHCertificateResponse 25, // 60: linkedca.Majordomo.RevokeCertificate:output_type -> linkedca.RevokeCertificateResponse 27, // 61: linkedca.Majordomo.RevokeSSHCertificate:output_type -> linkedca.RevokeSSHCertificateResponse 29, // 62: linkedca.Majordomo.GetCertificate:output_type -> linkedca.GetCertificateResponse 31, // 63: linkedca.Majordomo.GetCertificateStatus:output_type -> linkedca.GetCertificateStatusResponse 33, // 64: linkedca.Majordomo.GetSSHCertificateStatus:output_type -> linkedca.GetSSHCertificateStatusResponse 47, // [47:65] is the sub-list for method output_type 29, // [29:47] is the sub-list for method input_type 29, // [29:29] is the sub-list for extension type_name 29, // [29:29] is the sub-list for extension extendee 0, // [0:29] is the sub-list for field type_name } func init() { file_majordomo_proto_init() } func file_majordomo_proto_init() { if File_majordomo_proto != nil { return } file_admin_proto_init() file_provisioners_proto_init() if !protoimpl.UnsafeEnabled { file_majordomo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRootCertificateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRootCertificateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigurationRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigurationResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerConfiguration); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegistrationAuthorityConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegistrationAuthorityProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateProvisionerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProvisionerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateProvisionerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProvisionerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAdminRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAdminRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAdminRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAdminRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CertificateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AttestationData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CertificateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHCertificateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHCertificateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeCertificateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeCertificateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeSSHCertificateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeSSHCertificateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCertificateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCertificateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCertificateStatusRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCertificateStatusResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSSHCertificateStatusRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_majordomo_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSSHCertificateStatusResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_majordomo_proto_rawDesc, NumEnums: 2, NumMessages: 32, NumExtensions: 0, NumServices: 1, }, GoTypes: file_majordomo_proto_goTypes, DependencyIndexes: file_majordomo_proto_depIdxs, EnumInfos: file_majordomo_proto_enumTypes, MessageInfos: file_majordomo_proto_msgTypes, }.Build() File_majordomo_proto = out.File file_majordomo_proto_rawDesc = nil file_majordomo_proto_goTypes = nil file_majordomo_proto_depIdxs = nil } linkedca-0.19.0/majordomo.proto000066400000000000000000000151761433253635300164500ustar00rootroot00000000000000syntax = "proto3"; package linkedca; option go_package = "go.step.sm/linkedca"; import "admin.proto"; import "provisioners.proto"; // Majordomo is the public service used to sync configurations to CA's and post // certificates. service Majordomo { // Login creates signs a given CSR and returns the certificate that will be // used for authentication. rpc Login(LoginRequest) returns (LoginResponse); // GetRootCertificate returns the root certificate for a given fingerprint. rpc GetRootCertificate(GetRootCertificateRequest) returns (GetRootCertificateResponse); // GetConfiguration returns the full configuration of an authority. rpc GetConfiguration(ConfigurationRequest) returns (ConfigurationResponse); // CreateProvisioner adds a new provisioner to the majordomo authority and // returns the proto representation. rpc CreateProvisioner(CreateProvisionerRequest) returns (linkedca.Provisioner); // GetProvisioner returns a provisioner by its id. rpc GetProvisioner(GetProvisionerRequest) returns (linkedca.Provisioner); // UpdateProvisioners updates a previously created provisioner. rpc UpdateProvisioner(UpdateProvisionerRequest) returns (linkedca.Provisioner); // DeleteProvisioner deletes a previously created provisioner. rpc DeleteProvisioner(DeleteProvisionerRequest) returns (linkedca.Provisioner); // CreateAdmin adds a new admin user to the majordomo authority. Admin users // can add or delete provisioners. rpc CreateAdmin(CreateAdminRequest) returns (linkedca.Admin); // GetAdmin returns an admin by its id. rpc GetAdmin(GetAdminRequest) returns (linkedca.Admin); // UpdateAdmin updates a previously created admin. rpc UpdateAdmin(UpdateAdminRequest) returns (linkedca.Admin); // DeleteAdmin deletes a previously created admin user rpc DeleteAdmin(DeleteAdminRequest) returns (linkedca.Admin); // PostCertificate sends a signed X.509 certificate to majordomo. rpc PostCertificate(CertificateRequest) returns (CertificateResponse); // PostSSHCertificate sends a signed SSH certificate to majordomo. rpc PostSSHCertificate(SSHCertificateRequest) returns (SSHCertificateResponse); // RevokeCertificate marks an X.509 certificate as revoked. rpc RevokeCertificate(RevokeCertificateRequest) returns (RevokeCertificateResponse); // RevokeSSHCertificate marks an SSH certificate as revoked. rpc RevokeSSHCertificate(RevokeSSHCertificateRequest) returns (RevokeSSHCertificateResponse); // GetCertificate returns the X.509 certificate by serial. rpc GetCertificate(GetCertificateRequest) returns (GetCertificateResponse); // GetCertificateStatus returns the status of an X.509 certificate by serial. rpc GetCertificateStatus(GetCertificateStatusRequest) returns (GetCertificateStatusResponse); // GetSSHCertificateStatus returns the status of an SSH certificate by serial. rpc GetSSHCertificateStatus(GetSSHCertificateStatusRequest) returns (GetSSHCertificateStatusResponse); } message LoginRequest { string authority_id = 1; string token = 2; string pem_certificate_request = 3; } message LoginResponse { string pem_certificate = 1; string pem_certificate_chain = 2; } message GetRootCertificateRequest { string fingerprint = 1; } message GetRootCertificateResponse { string pem_certificate = 1; } message ConfigurationRequest { string authority_id = 1; } message ConfigurationResponse { repeated linkedca.Provisioner provisioners = 1; repeated linkedca.Admin admins = 2; RegistrationAuthorityConfig ra_config = 3; ServerConfiguration server_config = 4; } message ServerConfiguration { string address = 1; repeated string dns_names = 2; } message RegistrationAuthorityConfig { string ca_url = 1; string fingerprint = 2; linkedca.ProvisionerIdentity provisioner = 3; } message RegistrationAuthorityProvisioner { string authority_id = 1; linkedca.ProvisionerIdentity provisioner = 2; } message CreateProvisionerRequest { linkedca.Provisioner.Type type = 1; string name = 2; linkedca.ProvisionerDetails details = 3; linkedca.Claims claims = 4; linkedca.Template x509_template = 5; linkedca.Template ssh_template = 6; } message GetProvisionerRequest { string id = 1; } message UpdateProvisionerRequest { string id = 1; string name = 2; linkedca.ProvisionerDetails details = 3; linkedca.Claims claims = 4; linkedca.Template x509_template = 5; linkedca.Template ssh_template = 6; } message DeleteProvisionerRequest { string id = 1; } message CreateAdminRequest { string subject = 1; string provisioner_id = 2; linkedca.Admin.Type type = 3; } message GetAdminRequest { string id = 1; } message UpdateAdminRequest { string id = 1; linkedca.Admin.Type type = 2; } message DeleteAdminRequest { string id = 1; } message CertificateRequest { string pem_certificate = 1; string pem_certificate_chain = 2; string pem_parent_certificate = 3; linkedca.ProvisionerIdentity provisioner = 4; RegistrationAuthorityProvisioner ra_provisioner = 5; string endpoint_id = 6; AttestationData attestation_data = 7; } // AttestationData holds the information available at certificate sign time. // Currently only the permanent identifier (UDID or SerialNumber, not both) is // available. message AttestationData { string permanent_identifier = 1; } message CertificateResponse { string id = 1; } message SSHCertificateRequest { string certificate = 1; string parent_certificate = 2; linkedca.ProvisionerIdentity provisioner = 3; } message SSHCertificateResponse { string id = 1; } enum RevocationStatus { UNKNOWN = 0; ACTIVE = 1; REVOKED = 2; HOLD = 3; } enum RevocationReasonCode { UNSPECIFIED = 0; KEY_COMPROMISE = 1; CA_COMPROMISE = 2; AFFILIATION_CHANGED = 3; SUPERSEDED = 4; CESSATION_OF_OPERATION = 5; CERTIFICATE_HOLD = 6; REMOVE_FROM_CRL = 8; PRIVILEGE_WITHDRAWN = 9; AA_COMPROMISE = 10; } message RevokeCertificateRequest { string serial = 1; string pem_certificate = 2; string reason = 3; RevocationReasonCode reason_code = 4; bool passive = 5; } message RevokeCertificateResponse { RevocationStatus status = 1; } message RevokeSSHCertificateRequest { string serial = 1; string certificate = 2; string reason = 3; RevocationReasonCode reason_code = 4; bool passive = 5; } message RevokeSSHCertificateResponse { RevocationStatus status = 1; } message GetCertificateRequest { string serial = 1; } message GetCertificateResponse { string pem_certificate = 1; linkedca.ProvisionerIdentity provisioner = 2; RegistrationAuthorityProvisioner ra_provisioner = 3; } message GetCertificateStatusRequest { string serial = 1; } message GetCertificateStatusResponse { RevocationStatus status = 1; } message GetSSHCertificateStatusRequest { string serial = 1; } message GetSSHCertificateStatusResponse { RevocationStatus status = 1; } linkedca-0.19.0/majordomo_grpc.pb.go000066400000000000000000000756541433253635300173340ustar00rootroot00000000000000// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 // - protoc v3.21.9 // source: majordomo.proto package linkedca import ( context "context" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" ) // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 // MajordomoClient is the client API for Majordomo service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type MajordomoClient interface { // Login creates signs a given CSR and returns the certificate that will be // used for authentication. Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*LoginResponse, error) // GetRootCertificate returns the root certificate for a given fingerprint. GetRootCertificate(ctx context.Context, in *GetRootCertificateRequest, opts ...grpc.CallOption) (*GetRootCertificateResponse, error) // GetConfiguration returns the full configuration of an authority. GetConfiguration(ctx context.Context, in *ConfigurationRequest, opts ...grpc.CallOption) (*ConfigurationResponse, error) // CreateProvisioner adds a new provisioner to the majordomo authority and // returns the proto representation. CreateProvisioner(ctx context.Context, in *CreateProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) // GetProvisioner returns a provisioner by its id. GetProvisioner(ctx context.Context, in *GetProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) // UpdateProvisioners updates a previously created provisioner. UpdateProvisioner(ctx context.Context, in *UpdateProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) // DeleteProvisioner deletes a previously created provisioner. DeleteProvisioner(ctx context.Context, in *DeleteProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) // CreateAdmin adds a new admin user to the majordomo authority. Admin users // can add or delete provisioners. CreateAdmin(ctx context.Context, in *CreateAdminRequest, opts ...grpc.CallOption) (*Admin, error) // GetAdmin returns an admin by its id. GetAdmin(ctx context.Context, in *GetAdminRequest, opts ...grpc.CallOption) (*Admin, error) // UpdateAdmin updates a previously created admin. UpdateAdmin(ctx context.Context, in *UpdateAdminRequest, opts ...grpc.CallOption) (*Admin, error) // DeleteAdmin deletes a previously created admin user DeleteAdmin(ctx context.Context, in *DeleteAdminRequest, opts ...grpc.CallOption) (*Admin, error) // PostCertificate sends a signed X.509 certificate to majordomo. PostCertificate(ctx context.Context, in *CertificateRequest, opts ...grpc.CallOption) (*CertificateResponse, error) // PostSSHCertificate sends a signed SSH certificate to majordomo. PostSSHCertificate(ctx context.Context, in *SSHCertificateRequest, opts ...grpc.CallOption) (*SSHCertificateResponse, error) // RevokeCertificate marks an X.509 certificate as revoked. RevokeCertificate(ctx context.Context, in *RevokeCertificateRequest, opts ...grpc.CallOption) (*RevokeCertificateResponse, error) // RevokeSSHCertificate marks an SSH certificate as revoked. RevokeSSHCertificate(ctx context.Context, in *RevokeSSHCertificateRequest, opts ...grpc.CallOption) (*RevokeSSHCertificateResponse, error) // GetCertificate returns the X.509 certificate by serial. GetCertificate(ctx context.Context, in *GetCertificateRequest, opts ...grpc.CallOption) (*GetCertificateResponse, error) // GetCertificateStatus returns the status of an X.509 certificate by serial. GetCertificateStatus(ctx context.Context, in *GetCertificateStatusRequest, opts ...grpc.CallOption) (*GetCertificateStatusResponse, error) // GetSSHCertificateStatus returns the status of an SSH certificate by serial. GetSSHCertificateStatus(ctx context.Context, in *GetSSHCertificateStatusRequest, opts ...grpc.CallOption) (*GetSSHCertificateStatusResponse, error) } type majordomoClient struct { cc grpc.ClientConnInterface } func NewMajordomoClient(cc grpc.ClientConnInterface) MajordomoClient { return &majordomoClient{cc} } func (c *majordomoClient) Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*LoginResponse, error) { out := new(LoginResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/Login", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetRootCertificate(ctx context.Context, in *GetRootCertificateRequest, opts ...grpc.CallOption) (*GetRootCertificateResponse, error) { out := new(GetRootCertificateResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetRootCertificate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetConfiguration(ctx context.Context, in *ConfigurationRequest, opts ...grpc.CallOption) (*ConfigurationResponse, error) { out := new(ConfigurationResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetConfiguration", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) CreateProvisioner(ctx context.Context, in *CreateProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) { out := new(Provisioner) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/CreateProvisioner", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetProvisioner(ctx context.Context, in *GetProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) { out := new(Provisioner) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetProvisioner", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) UpdateProvisioner(ctx context.Context, in *UpdateProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) { out := new(Provisioner) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/UpdateProvisioner", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) DeleteProvisioner(ctx context.Context, in *DeleteProvisionerRequest, opts ...grpc.CallOption) (*Provisioner, error) { out := new(Provisioner) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/DeleteProvisioner", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) CreateAdmin(ctx context.Context, in *CreateAdminRequest, opts ...grpc.CallOption) (*Admin, error) { out := new(Admin) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/CreateAdmin", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetAdmin(ctx context.Context, in *GetAdminRequest, opts ...grpc.CallOption) (*Admin, error) { out := new(Admin) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetAdmin", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) UpdateAdmin(ctx context.Context, in *UpdateAdminRequest, opts ...grpc.CallOption) (*Admin, error) { out := new(Admin) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/UpdateAdmin", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) DeleteAdmin(ctx context.Context, in *DeleteAdminRequest, opts ...grpc.CallOption) (*Admin, error) { out := new(Admin) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/DeleteAdmin", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) PostCertificate(ctx context.Context, in *CertificateRequest, opts ...grpc.CallOption) (*CertificateResponse, error) { out := new(CertificateResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/PostCertificate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) PostSSHCertificate(ctx context.Context, in *SSHCertificateRequest, opts ...grpc.CallOption) (*SSHCertificateResponse, error) { out := new(SSHCertificateResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/PostSSHCertificate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) RevokeCertificate(ctx context.Context, in *RevokeCertificateRequest, opts ...grpc.CallOption) (*RevokeCertificateResponse, error) { out := new(RevokeCertificateResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/RevokeCertificate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) RevokeSSHCertificate(ctx context.Context, in *RevokeSSHCertificateRequest, opts ...grpc.CallOption) (*RevokeSSHCertificateResponse, error) { out := new(RevokeSSHCertificateResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/RevokeSSHCertificate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetCertificate(ctx context.Context, in *GetCertificateRequest, opts ...grpc.CallOption) (*GetCertificateResponse, error) { out := new(GetCertificateResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetCertificate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetCertificateStatus(ctx context.Context, in *GetCertificateStatusRequest, opts ...grpc.CallOption) (*GetCertificateStatusResponse, error) { out := new(GetCertificateStatusResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetCertificateStatus", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *majordomoClient) GetSSHCertificateStatus(ctx context.Context, in *GetSSHCertificateStatusRequest, opts ...grpc.CallOption) (*GetSSHCertificateStatusResponse, error) { out := new(GetSSHCertificateStatusResponse) err := c.cc.Invoke(ctx, "/linkedca.Majordomo/GetSSHCertificateStatus", in, out, opts...) if err != nil { return nil, err } return out, nil } // MajordomoServer is the server API for Majordomo service. // All implementations must embed UnimplementedMajordomoServer // for forward compatibility type MajordomoServer interface { // Login creates signs a given CSR and returns the certificate that will be // used for authentication. Login(context.Context, *LoginRequest) (*LoginResponse, error) // GetRootCertificate returns the root certificate for a given fingerprint. GetRootCertificate(context.Context, *GetRootCertificateRequest) (*GetRootCertificateResponse, error) // GetConfiguration returns the full configuration of an authority. GetConfiguration(context.Context, *ConfigurationRequest) (*ConfigurationResponse, error) // CreateProvisioner adds a new provisioner to the majordomo authority and // returns the proto representation. CreateProvisioner(context.Context, *CreateProvisionerRequest) (*Provisioner, error) // GetProvisioner returns a provisioner by its id. GetProvisioner(context.Context, *GetProvisionerRequest) (*Provisioner, error) // UpdateProvisioners updates a previously created provisioner. UpdateProvisioner(context.Context, *UpdateProvisionerRequest) (*Provisioner, error) // DeleteProvisioner deletes a previously created provisioner. DeleteProvisioner(context.Context, *DeleteProvisionerRequest) (*Provisioner, error) // CreateAdmin adds a new admin user to the majordomo authority. Admin users // can add or delete provisioners. CreateAdmin(context.Context, *CreateAdminRequest) (*Admin, error) // GetAdmin returns an admin by its id. GetAdmin(context.Context, *GetAdminRequest) (*Admin, error) // UpdateAdmin updates a previously created admin. UpdateAdmin(context.Context, *UpdateAdminRequest) (*Admin, error) // DeleteAdmin deletes a previously created admin user DeleteAdmin(context.Context, *DeleteAdminRequest) (*Admin, error) // PostCertificate sends a signed X.509 certificate to majordomo. PostCertificate(context.Context, *CertificateRequest) (*CertificateResponse, error) // PostSSHCertificate sends a signed SSH certificate to majordomo. PostSSHCertificate(context.Context, *SSHCertificateRequest) (*SSHCertificateResponse, error) // RevokeCertificate marks an X.509 certificate as revoked. RevokeCertificate(context.Context, *RevokeCertificateRequest) (*RevokeCertificateResponse, error) // RevokeSSHCertificate marks an SSH certificate as revoked. RevokeSSHCertificate(context.Context, *RevokeSSHCertificateRequest) (*RevokeSSHCertificateResponse, error) // GetCertificate returns the X.509 certificate by serial. GetCertificate(context.Context, *GetCertificateRequest) (*GetCertificateResponse, error) // GetCertificateStatus returns the status of an X.509 certificate by serial. GetCertificateStatus(context.Context, *GetCertificateStatusRequest) (*GetCertificateStatusResponse, error) // GetSSHCertificateStatus returns the status of an SSH certificate by serial. GetSSHCertificateStatus(context.Context, *GetSSHCertificateStatusRequest) (*GetSSHCertificateStatusResponse, error) mustEmbedUnimplementedMajordomoServer() } // UnimplementedMajordomoServer must be embedded to have forward compatible implementations. type UnimplementedMajordomoServer struct { } func (UnimplementedMajordomoServer) Login(context.Context, *LoginRequest) (*LoginResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Login not implemented") } func (UnimplementedMajordomoServer) GetRootCertificate(context.Context, *GetRootCertificateRequest) (*GetRootCertificateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetRootCertificate not implemented") } func (UnimplementedMajordomoServer) GetConfiguration(context.Context, *ConfigurationRequest) (*ConfigurationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetConfiguration not implemented") } func (UnimplementedMajordomoServer) CreateProvisioner(context.Context, *CreateProvisionerRequest) (*Provisioner, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateProvisioner not implemented") } func (UnimplementedMajordomoServer) GetProvisioner(context.Context, *GetProvisionerRequest) (*Provisioner, error) { return nil, status.Errorf(codes.Unimplemented, "method GetProvisioner not implemented") } func (UnimplementedMajordomoServer) UpdateProvisioner(context.Context, *UpdateProvisionerRequest) (*Provisioner, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateProvisioner not implemented") } func (UnimplementedMajordomoServer) DeleteProvisioner(context.Context, *DeleteProvisionerRequest) (*Provisioner, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteProvisioner not implemented") } func (UnimplementedMajordomoServer) CreateAdmin(context.Context, *CreateAdminRequest) (*Admin, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateAdmin not implemented") } func (UnimplementedMajordomoServer) GetAdmin(context.Context, *GetAdminRequest) (*Admin, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAdmin not implemented") } func (UnimplementedMajordomoServer) UpdateAdmin(context.Context, *UpdateAdminRequest) (*Admin, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateAdmin not implemented") } func (UnimplementedMajordomoServer) DeleteAdmin(context.Context, *DeleteAdminRequest) (*Admin, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteAdmin not implemented") } func (UnimplementedMajordomoServer) PostCertificate(context.Context, *CertificateRequest) (*CertificateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PostCertificate not implemented") } func (UnimplementedMajordomoServer) PostSSHCertificate(context.Context, *SSHCertificateRequest) (*SSHCertificateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PostSSHCertificate not implemented") } func (UnimplementedMajordomoServer) RevokeCertificate(context.Context, *RevokeCertificateRequest) (*RevokeCertificateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RevokeCertificate not implemented") } func (UnimplementedMajordomoServer) RevokeSSHCertificate(context.Context, *RevokeSSHCertificateRequest) (*RevokeSSHCertificateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RevokeSSHCertificate not implemented") } func (UnimplementedMajordomoServer) GetCertificate(context.Context, *GetCertificateRequest) (*GetCertificateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCertificate not implemented") } func (UnimplementedMajordomoServer) GetCertificateStatus(context.Context, *GetCertificateStatusRequest) (*GetCertificateStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCertificateStatus not implemented") } func (UnimplementedMajordomoServer) GetSSHCertificateStatus(context.Context, *GetSSHCertificateStatusRequest) (*GetSSHCertificateStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSSHCertificateStatus not implemented") } func (UnimplementedMajordomoServer) mustEmbedUnimplementedMajordomoServer() {} // UnsafeMajordomoServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MajordomoServer will // result in compilation errors. type UnsafeMajordomoServer interface { mustEmbedUnimplementedMajordomoServer() } func RegisterMajordomoServer(s grpc.ServiceRegistrar, srv MajordomoServer) { s.RegisterService(&Majordomo_ServiceDesc, srv) } func _Majordomo_Login_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(LoginRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).Login(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/Login", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).Login(ctx, req.(*LoginRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetRootCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetRootCertificateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetRootCertificate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetRootCertificate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetRootCertificate(ctx, req.(*GetRootCertificateRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ConfigurationRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetConfiguration(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetConfiguration", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetConfiguration(ctx, req.(*ConfigurationRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_CreateProvisioner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateProvisionerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).CreateProvisioner(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/CreateProvisioner", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).CreateProvisioner(ctx, req.(*CreateProvisionerRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetProvisioner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetProvisionerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetProvisioner(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetProvisioner", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetProvisioner(ctx, req.(*GetProvisionerRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_UpdateProvisioner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateProvisionerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).UpdateProvisioner(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/UpdateProvisioner", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).UpdateProvisioner(ctx, req.(*UpdateProvisionerRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_DeleteProvisioner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteProvisionerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).DeleteProvisioner(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/DeleteProvisioner", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).DeleteProvisioner(ctx, req.(*DeleteProvisionerRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_CreateAdmin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateAdminRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).CreateAdmin(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/CreateAdmin", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).CreateAdmin(ctx, req.(*CreateAdminRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetAdmin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetAdminRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetAdmin(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetAdmin", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetAdmin(ctx, req.(*GetAdminRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_UpdateAdmin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateAdminRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).UpdateAdmin(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/UpdateAdmin", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).UpdateAdmin(ctx, req.(*UpdateAdminRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_DeleteAdmin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteAdminRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).DeleteAdmin(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/DeleteAdmin", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).DeleteAdmin(ctx, req.(*DeleteAdminRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_PostCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CertificateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).PostCertificate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/PostCertificate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).PostCertificate(ctx, req.(*CertificateRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_PostSSHCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SSHCertificateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).PostSSHCertificate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/PostSSHCertificate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).PostSSHCertificate(ctx, req.(*SSHCertificateRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_RevokeCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RevokeCertificateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).RevokeCertificate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/RevokeCertificate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).RevokeCertificate(ctx, req.(*RevokeCertificateRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_RevokeSSHCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RevokeSSHCertificateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).RevokeSSHCertificate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/RevokeSSHCertificate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).RevokeSSHCertificate(ctx, req.(*RevokeSSHCertificateRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetCertificateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetCertificate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetCertificate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetCertificate(ctx, req.(*GetCertificateRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetCertificateStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetCertificateStatusRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetCertificateStatus(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetCertificateStatus", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetCertificateStatus(ctx, req.(*GetCertificateStatusRequest)) } return interceptor(ctx, in, info, handler) } func _Majordomo_GetSSHCertificateStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSSHCertificateStatusRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(MajordomoServer).GetSSHCertificateStatus(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkedca.Majordomo/GetSSHCertificateStatus", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MajordomoServer).GetSSHCertificateStatus(ctx, req.(*GetSSHCertificateStatusRequest)) } return interceptor(ctx, in, info, handler) } // Majordomo_ServiceDesc is the grpc.ServiceDesc for Majordomo service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var Majordomo_ServiceDesc = grpc.ServiceDesc{ ServiceName: "linkedca.Majordomo", HandlerType: (*MajordomoServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "Login", Handler: _Majordomo_Login_Handler, }, { MethodName: "GetRootCertificate", Handler: _Majordomo_GetRootCertificate_Handler, }, { MethodName: "GetConfiguration", Handler: _Majordomo_GetConfiguration_Handler, }, { MethodName: "CreateProvisioner", Handler: _Majordomo_CreateProvisioner_Handler, }, { MethodName: "GetProvisioner", Handler: _Majordomo_GetProvisioner_Handler, }, { MethodName: "UpdateProvisioner", Handler: _Majordomo_UpdateProvisioner_Handler, }, { MethodName: "DeleteProvisioner", Handler: _Majordomo_DeleteProvisioner_Handler, }, { MethodName: "CreateAdmin", Handler: _Majordomo_CreateAdmin_Handler, }, { MethodName: "GetAdmin", Handler: _Majordomo_GetAdmin_Handler, }, { MethodName: "UpdateAdmin", Handler: _Majordomo_UpdateAdmin_Handler, }, { MethodName: "DeleteAdmin", Handler: _Majordomo_DeleteAdmin_Handler, }, { MethodName: "PostCertificate", Handler: _Majordomo_PostCertificate_Handler, }, { MethodName: "PostSSHCertificate", Handler: _Majordomo_PostSSHCertificate_Handler, }, { MethodName: "RevokeCertificate", Handler: _Majordomo_RevokeCertificate_Handler, }, { MethodName: "RevokeSSHCertificate", Handler: _Majordomo_RevokeSSHCertificate_Handler, }, { MethodName: "GetCertificate", Handler: _Majordomo_GetCertificate_Handler, }, { MethodName: "GetCertificateStatus", Handler: _Majordomo_GetCertificateStatus_Handler, }, { MethodName: "GetSSHCertificateStatus", Handler: _Majordomo_GetSSHCertificateStatus_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "majordomo.proto", } linkedca-0.19.0/policy.go000066400000000000000000000040641433253635300152140ustar00rootroot00000000000000package linkedca // Deduplicate removes duplicate values from the Policy func (p *Policy) Deduplicate() { if p == nil { return } if x509 := p.GetX509(); x509 != nil { if allow := x509.GetAllow(); allow != nil { allow.Dns = removeDuplicates(allow.Dns) allow.Ips = removeDuplicates(allow.Ips) allow.Emails = removeDuplicates(allow.Emails) allow.Uris = removeDuplicates(allow.Uris) allow.CommonNames = removeDuplicates(allow.CommonNames) } if deny := p.GetX509().GetDeny(); deny != nil { deny.Dns = removeDuplicates(deny.Dns) deny.Ips = removeDuplicates(deny.Ips) deny.Emails = removeDuplicates(deny.Emails) deny.Uris = removeDuplicates(deny.Uris) deny.CommonNames = removeDuplicates(deny.CommonNames) } } if ssh := p.GetSsh(); ssh != nil { if host := ssh.GetHost(); host != nil { if allow := host.GetAllow(); allow != nil { allow.Dns = removeDuplicates(allow.Dns) allow.Ips = removeDuplicates(allow.Ips) allow.Principals = removeDuplicates(allow.Principals) } if deny := host.GetDeny(); deny != nil { deny.Dns = removeDuplicates(deny.Dns) deny.Ips = removeDuplicates(deny.Ips) deny.Principals = removeDuplicates(deny.Principals) } } if user := ssh.GetUser(); user != nil { if allow := user.GetAllow(); allow != nil { allow.Emails = removeDuplicates(allow.Emails) allow.Principals = removeDuplicates(allow.Principals) } if deny := user.GetDeny(); deny != nil { deny.Emails = removeDuplicates(deny.Emails) deny.Principals = removeDuplicates(deny.Principals) } } } } // removeDuplicates returns a new slice of strings with // duplicate values removed. It retains the order of elements // in the source slice. func removeDuplicates(tokens []string) (ret []string) { // no need to remove dupes; return original if len(tokens) <= 1 { return tokens } keys := make(map[string]struct{}, len(tokens)) ret = make([]string, 0, len(tokens)) for _, item := range tokens { if _, ok := keys[item]; ok { continue } keys[item] = struct{}{} ret = append(ret, item) } return } linkedca-0.19.0/policy.pb.go000066400000000000000000000533621433253635300156210ustar00rootroot00000000000000// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.9 // source: policy.proto package linkedca import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 Policy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields X509 *X509Policy `protobuf:"bytes,1,opt,name=x509,proto3" json:"x509,omitempty"` Ssh *SSHPolicy `protobuf:"bytes,2,opt,name=ssh,proto3" json:"ssh,omitempty"` } func (x *Policy) Reset() { *x = Policy{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Policy) String() string { return protoimpl.X.MessageStringOf(x) } func (*Policy) ProtoMessage() {} func (x *Policy) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Policy.ProtoReflect.Descriptor instead. func (*Policy) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{0} } func (x *Policy) GetX509() *X509Policy { if x != nil { return x.X509 } return nil } func (x *Policy) GetSsh() *SSHPolicy { if x != nil { return x.Ssh } return nil } type X509Policy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Allow *X509Names `protobuf:"bytes,1,opt,name=allow,proto3" json:"allow,omitempty"` Deny *X509Names `protobuf:"bytes,2,opt,name=deny,proto3" json:"deny,omitempty"` AllowWildcardNames bool `protobuf:"varint,3,opt,name=allow_wildcard_names,json=allowWildcardNames,proto3" json:"allow_wildcard_names,omitempty"` } func (x *X509Policy) Reset() { *x = X509Policy{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *X509Policy) String() string { return protoimpl.X.MessageStringOf(x) } func (*X509Policy) ProtoMessage() {} func (x *X509Policy) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use X509Policy.ProtoReflect.Descriptor instead. func (*X509Policy) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{1} } func (x *X509Policy) GetAllow() *X509Names { if x != nil { return x.Allow } return nil } func (x *X509Policy) GetDeny() *X509Names { if x != nil { return x.Deny } return nil } func (x *X509Policy) GetAllowWildcardNames() bool { if x != nil { return x.AllowWildcardNames } return false } type SSHPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Host *SSHHostPolicy `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` User *SSHUserPolicy `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` } func (x *SSHPolicy) Reset() { *x = SSHPolicy{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHPolicy) ProtoMessage() {} func (x *SSHPolicy) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHPolicy.ProtoReflect.Descriptor instead. func (*SSHPolicy) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{2} } func (x *SSHPolicy) GetHost() *SSHHostPolicy { if x != nil { return x.Host } return nil } func (x *SSHPolicy) GetUser() *SSHUserPolicy { if x != nil { return x.User } return nil } type SSHHostPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Allow *SSHHostNames `protobuf:"bytes,1,opt,name=allow,proto3" json:"allow,omitempty"` Deny *SSHHostNames `protobuf:"bytes,2,opt,name=deny,proto3" json:"deny,omitempty"` } func (x *SSHHostPolicy) Reset() { *x = SSHHostPolicy{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHHostPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHHostPolicy) ProtoMessage() {} func (x *SSHHostPolicy) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHHostPolicy.ProtoReflect.Descriptor instead. func (*SSHHostPolicy) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{3} } func (x *SSHHostPolicy) GetAllow() *SSHHostNames { if x != nil { return x.Allow } return nil } func (x *SSHHostPolicy) GetDeny() *SSHHostNames { if x != nil { return x.Deny } return nil } type SSHUserPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Allow *SSHUserNames `protobuf:"bytes,1,opt,name=allow,proto3" json:"allow,omitempty"` Deny *SSHUserNames `protobuf:"bytes,2,opt,name=deny,proto3" json:"deny,omitempty"` } func (x *SSHUserPolicy) Reset() { *x = SSHUserPolicy{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHUserPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHUserPolicy) ProtoMessage() {} func (x *SSHUserPolicy) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHUserPolicy.ProtoReflect.Descriptor instead. func (*SSHUserPolicy) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{4} } func (x *SSHUserPolicy) GetAllow() *SSHUserNames { if x != nil { return x.Allow } return nil } func (x *SSHUserPolicy) GetDeny() *SSHUserNames { if x != nil { return x.Deny } return nil } type X509Names struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Dns []string `protobuf:"bytes,1,rep,name=dns,proto3" json:"dns,omitempty"` Ips []string `protobuf:"bytes,2,rep,name=ips,proto3" json:"ips,omitempty"` Emails []string `protobuf:"bytes,3,rep,name=emails,proto3" json:"emails,omitempty"` Uris []string `protobuf:"bytes,4,rep,name=uris,proto3" json:"uris,omitempty"` CommonNames []string `protobuf:"bytes,5,rep,name=common_names,json=commonNames,proto3" json:"common_names,omitempty"` } func (x *X509Names) Reset() { *x = X509Names{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *X509Names) String() string { return protoimpl.X.MessageStringOf(x) } func (*X509Names) ProtoMessage() {} func (x *X509Names) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use X509Names.ProtoReflect.Descriptor instead. func (*X509Names) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{5} } func (x *X509Names) GetDns() []string { if x != nil { return x.Dns } return nil } func (x *X509Names) GetIps() []string { if x != nil { return x.Ips } return nil } func (x *X509Names) GetEmails() []string { if x != nil { return x.Emails } return nil } func (x *X509Names) GetUris() []string { if x != nil { return x.Uris } return nil } func (x *X509Names) GetCommonNames() []string { if x != nil { return x.CommonNames } return nil } type SSHHostNames struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Dns []string `protobuf:"bytes,1,rep,name=dns,proto3" json:"dns,omitempty"` Ips []string `protobuf:"bytes,2,rep,name=ips,proto3" json:"ips,omitempty"` Principals []string `protobuf:"bytes,3,rep,name=principals,proto3" json:"principals,omitempty"` } func (x *SSHHostNames) Reset() { *x = SSHHostNames{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHHostNames) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHHostNames) ProtoMessage() {} func (x *SSHHostNames) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHHostNames.ProtoReflect.Descriptor instead. func (*SSHHostNames) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{6} } func (x *SSHHostNames) GetDns() []string { if x != nil { return x.Dns } return nil } func (x *SSHHostNames) GetIps() []string { if x != nil { return x.Ips } return nil } func (x *SSHHostNames) GetPrincipals() []string { if x != nil { return x.Principals } return nil } type SSHUserNames struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Emails []string `protobuf:"bytes,1,rep,name=emails,proto3" json:"emails,omitempty"` Principals []string `protobuf:"bytes,2,rep,name=principals,proto3" json:"principals,omitempty"` } func (x *SSHUserNames) Reset() { *x = SSHUserNames{} if protoimpl.UnsafeEnabled { mi := &file_policy_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHUserNames) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHUserNames) ProtoMessage() {} func (x *SSHUserNames) ProtoReflect() protoreflect.Message { mi := &file_policy_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHUserNames.ProtoReflect.Descriptor instead. func (*SSHUserNames) Descriptor() ([]byte, []int) { return file_policy_proto_rawDescGZIP(), []int{7} } func (x *SSHUserNames) GetEmails() []string { if x != nil { return x.Emails } return nil } func (x *SSHUserNames) GetPrincipals() []string { if x != nil { return x.Principals } return nil } var File_policy_proto protoreflect.FileDescriptor var file_policy_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x22, 0x59, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x78, 0x35, 0x30, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x78, 0x35, 0x30, 0x39, 0x12, 0x25, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0x92, 0x01, 0x0a, 0x0a, 0x58, 0x35, 0x30, 0x39, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x09, 0x53, 0x53, 0x48, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x69, 0x0a, 0x0d, 0x53, 0x53, 0x48, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x22, 0x69, 0x0a, 0x0d, 0x53, 0x53, 0x48, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x22, 0x7e, 0x0a, 0x09, 0x58, 0x35, 0x30, 0x39, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x69, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x69, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x52, 0x0a, 0x0c, 0x53, 0x53, 0x48, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x22, 0x46, 0x0a, 0x0c, 0x53, 0x53, 0x48, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x42, 0x15, 0x5a, 0x13, 0x67, 0x6f, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x2e, 0x73, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_policy_proto_rawDescOnce sync.Once file_policy_proto_rawDescData = file_policy_proto_rawDesc ) func file_policy_proto_rawDescGZIP() []byte { file_policy_proto_rawDescOnce.Do(func() { file_policy_proto_rawDescData = protoimpl.X.CompressGZIP(file_policy_proto_rawDescData) }) return file_policy_proto_rawDescData } var file_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_policy_proto_goTypes = []interface{}{ (*Policy)(nil), // 0: linkedca.Policy (*X509Policy)(nil), // 1: linkedca.X509Policy (*SSHPolicy)(nil), // 2: linkedca.SSHPolicy (*SSHHostPolicy)(nil), // 3: linkedca.SSHHostPolicy (*SSHUserPolicy)(nil), // 4: linkedca.SSHUserPolicy (*X509Names)(nil), // 5: linkedca.X509Names (*SSHHostNames)(nil), // 6: linkedca.SSHHostNames (*SSHUserNames)(nil), // 7: linkedca.SSHUserNames } var file_policy_proto_depIdxs = []int32{ 1, // 0: linkedca.Policy.x509:type_name -> linkedca.X509Policy 2, // 1: linkedca.Policy.ssh:type_name -> linkedca.SSHPolicy 5, // 2: linkedca.X509Policy.allow:type_name -> linkedca.X509Names 5, // 3: linkedca.X509Policy.deny:type_name -> linkedca.X509Names 3, // 4: linkedca.SSHPolicy.host:type_name -> linkedca.SSHHostPolicy 4, // 5: linkedca.SSHPolicy.user:type_name -> linkedca.SSHUserPolicy 6, // 6: linkedca.SSHHostPolicy.allow:type_name -> linkedca.SSHHostNames 6, // 7: linkedca.SSHHostPolicy.deny:type_name -> linkedca.SSHHostNames 7, // 8: linkedca.SSHUserPolicy.allow:type_name -> linkedca.SSHUserNames 7, // 9: linkedca.SSHUserPolicy.deny:type_name -> linkedca.SSHUserNames 10, // [10:10] is the sub-list for method output_type 10, // [10:10] is the sub-list for method input_type 10, // [10:10] is the sub-list for extension type_name 10, // [10:10] is the sub-list for extension extendee 0, // [0:10] is the sub-list for field type_name } func init() { file_policy_proto_init() } func file_policy_proto_init() { if File_policy_proto != nil { return } if !protoimpl.UnsafeEnabled { file_policy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Policy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*X509Policy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHPolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHHostPolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHUserPolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*X509Names); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHHostNames); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_policy_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHUserNames); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_policy_proto_rawDesc, NumEnums: 0, NumMessages: 8, NumExtensions: 0, NumServices: 0, }, GoTypes: file_policy_proto_goTypes, DependencyIndexes: file_policy_proto_depIdxs, MessageInfos: file_policy_proto_msgTypes, }.Build() File_policy_proto = out.File file_policy_proto_rawDesc = nil file_policy_proto_goTypes = nil file_policy_proto_depIdxs = nil } linkedca-0.19.0/policy.proto000066400000000000000000000015011433253635300157430ustar00rootroot00000000000000syntax = "proto3"; package linkedca; option go_package = "go.step.sm/linkedca"; message Policy { X509Policy x509 = 1; SSHPolicy ssh = 2; } message X509Policy { X509Names allow = 1; X509Names deny = 2; bool allow_wildcard_names = 3; } message SSHPolicy { SSHHostPolicy host = 1; SSHUserPolicy user = 2; } message SSHHostPolicy { SSHHostNames allow = 1; SSHHostNames deny = 2; } message SSHUserPolicy { SSHUserNames allow = 1; SSHUserNames deny = 2; } message X509Names { repeated string dns = 1; repeated string ips = 2; repeated string emails = 3; repeated string uris = 4; repeated string common_names = 5; } message SSHHostNames { repeated string dns = 1; repeated string ips = 2; repeated string principals = 3; } message SSHUserNames { repeated string emails = 1; repeated string principals = 2; } linkedca-0.19.0/policy_test.go000066400000000000000000000105741433253635300162560ustar00rootroot00000000000000package linkedca import ( "reflect" "testing" "github.com/stretchr/testify/assert" ) func Test_removeDuplicates(t *testing.T) { tests := []struct { name string input []string want []string }{ { name: "empty-slice", input: []string{}, want: []string{}, }, { name: "single-item", input: []string{"x"}, want: []string{"x"}, }, { name: "ok", input: []string{"x", "y", "x", "z", "x", "z", "y"}, want: []string{"x", "y", "z"}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := removeDuplicates(tt.input); !reflect.DeepEqual(got, tt.want) { t.Errorf("removeDuplicates() = %v, want %v", got, tt.want) } }) } } func TestPolicy_Deduplicate(t *testing.T) { tests := []struct { name string policy *Policy expected *Policy }{ { name: "nil", policy: nil, expected: nil, }, { name: "x509", policy: &Policy{ X509: &X509Policy{ Allow: &X509Names{ Dns: []string{"*.local", "*.example.com", "*.local"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24", "192.168.0.0/24"}, Emails: []string{"@example.com", "@local", "@example.com"}, Uris: []string{"*.local", "*.example.com", "*.local"}, CommonNames: []string{"bla", "host", "bla"}, }, Deny: &X509Names{ Dns: []string{"*.local", "*.example.com", "*.local"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24", "192.168.0.0/24"}, Emails: []string{"@example.com", "@local", "@example.com"}, Uris: []string{"*.local", "*.example.com", "*.local"}, CommonNames: []string{"bla", "host", "bla"}, }, }, }, expected: &Policy{ X509: &X509Policy{ Allow: &X509Names{ Dns: []string{"*.local", "*.example.com"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24"}, Emails: []string{"@example.com", "@local"}, Uris: []string{"*.local", "*.example.com"}, CommonNames: []string{"bla", "host"}, }, Deny: &X509Names{ Dns: []string{"*.local", "*.example.com"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24"}, Emails: []string{"@example.com", "@local"}, Uris: []string{"*.local", "*.example.com"}, CommonNames: []string{"bla", "host"}, }, }, }, }, { name: "ssh-host", policy: &Policy{ Ssh: &SSHPolicy{ Host: &SSHHostPolicy{ Allow: &SSHHostNames{ Dns: []string{"*.local", "*.example.com", "*.local"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24", "192.168.0.0/24"}, Principals: []string{"localhost", "test", "localhost"}, }, Deny: &SSHHostNames{ Dns: []string{"*.local", "*.example.com", "*.local"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24", "192.168.0.0/24"}, Principals: []string{"localhost", "test", "localhost"}, }, }, }, }, expected: &Policy{ Ssh: &SSHPolicy{ Host: &SSHHostPolicy{ Allow: &SSHHostNames{ Dns: []string{"*.local", "*.example.com"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24"}, Principals: []string{"localhost", "test"}, }, Deny: &SSHHostNames{ Dns: []string{"*.local", "*.example.com"}, Ips: []string{"192.168.0.0/24", "10.10.10.0/24"}, Principals: []string{"localhost", "test"}, }, }, }, }, }, { name: "ssh-user", policy: &Policy{ Ssh: &SSHPolicy{ User: &SSHUserPolicy{ Allow: &SSHUserNames{ Emails: []string{"@example.com", "@local", "@example.com"}, Principals: []string{"user", "root", "user"}, }, Deny: &SSHUserNames{ Emails: []string{"@example.com", "@local", "@example.com"}, Principals: []string{"user", "root", "user"}, }, }, }, }, expected: &Policy{ Ssh: &SSHPolicy{ User: &SSHUserPolicy{ Allow: &SSHUserNames{ Emails: []string{"@example.com", "@local"}, Principals: []string{"user", "root"}, }, Deny: &SSHUserNames{ Emails: []string{"@example.com", "@local"}, Principals: []string{"user", "root"}, }, }, }, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { tt.policy.Deduplicate() assert.Equal(t, tt.expected, tt.policy) }) } } linkedca-0.19.0/provisioners.pb.go000066400000000000000000002764141433253635300170710ustar00rootroot00000000000000// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.9 // source: provisioners.proto package linkedca 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" ) 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 Provisioner_Type int32 const ( Provisioner_NOOP Provisioner_Type = 0 Provisioner_JWK Provisioner_Type = 1 Provisioner_OIDC Provisioner_Type = 2 Provisioner_GCP Provisioner_Type = 3 Provisioner_AWS Provisioner_Type = 4 Provisioner_AZURE Provisioner_Type = 5 Provisioner_ACME Provisioner_Type = 6 Provisioner_X5C Provisioner_Type = 7 Provisioner_K8SSA Provisioner_Type = 8 Provisioner_SSHPOP Provisioner_Type = 9 Provisioner_SCEP Provisioner_Type = 10 Provisioner_NEBULA Provisioner_Type = 11 ) // Enum value maps for Provisioner_Type. var ( Provisioner_Type_name = map[int32]string{ 0: "NOOP", 1: "JWK", 2: "OIDC", 3: "GCP", 4: "AWS", 5: "AZURE", 6: "ACME", 7: "X5C", 8: "K8SSA", 9: "SSHPOP", 10: "SCEP", 11: "NEBULA", } Provisioner_Type_value = map[string]int32{ "NOOP": 0, "JWK": 1, "OIDC": 2, "GCP": 3, "AWS": 4, "AZURE": 5, "ACME": 6, "X5C": 7, "K8SSA": 8, "SSHPOP": 9, "SCEP": 10, "NEBULA": 11, } ) func (x Provisioner_Type) Enum() *Provisioner_Type { p := new(Provisioner_Type) *p = x return p } func (x Provisioner_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Provisioner_Type) Descriptor() protoreflect.EnumDescriptor { return file_provisioners_proto_enumTypes[0].Descriptor() } func (Provisioner_Type) Type() protoreflect.EnumType { return &file_provisioners_proto_enumTypes[0] } func (x Provisioner_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Provisioner_Type.Descriptor instead. func (Provisioner_Type) EnumDescriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{0, 0} } type ACMEProvisioner_ChallengeType int32 const ( ACMEProvisioner_UNKNOWN ACMEProvisioner_ChallengeType = 0 ACMEProvisioner_HTTP_01 ACMEProvisioner_ChallengeType = 1 ACMEProvisioner_DNS_01 ACMEProvisioner_ChallengeType = 2 ACMEProvisioner_TLS_ALPN_01 ACMEProvisioner_ChallengeType = 3 ACMEProvisioner_DEVICE_ATTEST_01 ACMEProvisioner_ChallengeType = 4 ) // Enum value maps for ACMEProvisioner_ChallengeType. var ( ACMEProvisioner_ChallengeType_name = map[int32]string{ 0: "UNKNOWN", 1: "HTTP_01", 2: "DNS_01", 3: "TLS_ALPN_01", 4: "DEVICE_ATTEST_01", } ACMEProvisioner_ChallengeType_value = map[string]int32{ "UNKNOWN": 0, "HTTP_01": 1, "DNS_01": 2, "TLS_ALPN_01": 3, "DEVICE_ATTEST_01": 4, } ) func (x ACMEProvisioner_ChallengeType) Enum() *ACMEProvisioner_ChallengeType { p := new(ACMEProvisioner_ChallengeType) *p = x return p } func (x ACMEProvisioner_ChallengeType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ACMEProvisioner_ChallengeType) Descriptor() protoreflect.EnumDescriptor { return file_provisioners_proto_enumTypes[1].Descriptor() } func (ACMEProvisioner_ChallengeType) Type() protoreflect.EnumType { return &file_provisioners_proto_enumTypes[1] } func (x ACMEProvisioner_ChallengeType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ACMEProvisioner_ChallengeType.Descriptor instead. func (ACMEProvisioner_ChallengeType) EnumDescriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{14, 0} } type ACMEProvisioner_AttestationFormatType int32 const ( ACMEProvisioner_NONE ACMEProvisioner_AttestationFormatType = 0 ACMEProvisioner_APPLE ACMEProvisioner_AttestationFormatType = 1 ACMEProvisioner_STEP ACMEProvisioner_AttestationFormatType = 2 ACMEProvisioner_TPM ACMEProvisioner_AttestationFormatType = 3 ) // Enum value maps for ACMEProvisioner_AttestationFormatType. var ( ACMEProvisioner_AttestationFormatType_name = map[int32]string{ 0: "NONE", 1: "APPLE", 2: "STEP", 3: "TPM", } ACMEProvisioner_AttestationFormatType_value = map[string]int32{ "NONE": 0, "APPLE": 1, "STEP": 2, "TPM": 3, } ) func (x ACMEProvisioner_AttestationFormatType) Enum() *ACMEProvisioner_AttestationFormatType { p := new(ACMEProvisioner_AttestationFormatType) *p = x return p } func (x ACMEProvisioner_AttestationFormatType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ACMEProvisioner_AttestationFormatType) Descriptor() protoreflect.EnumDescriptor { return file_provisioners_proto_enumTypes[2].Descriptor() } func (ACMEProvisioner_AttestationFormatType) Type() protoreflect.EnumType { return &file_provisioners_proto_enumTypes[2] } func (x ACMEProvisioner_AttestationFormatType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ACMEProvisioner_AttestationFormatType.Descriptor instead. func (ACMEProvisioner_AttestationFormatType) EnumDescriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{14, 1} } type Webhook_Kind int32 const ( Webhook_NO_KIND Webhook_Kind = 0 Webhook_ENRICHING Webhook_Kind = 1 Webhook_AUTHORIZING Webhook_Kind = 2 ) // Enum value maps for Webhook_Kind. var ( Webhook_Kind_name = map[int32]string{ 0: "NO_KIND", 1: "ENRICHING", 2: "AUTHORIZING", } Webhook_Kind_value = map[string]int32{ "NO_KIND": 0, "ENRICHING": 1, "AUTHORIZING": 2, } ) func (x Webhook_Kind) Enum() *Webhook_Kind { p := new(Webhook_Kind) *p = x return p } func (x Webhook_Kind) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Webhook_Kind) Descriptor() protoreflect.EnumDescriptor { return file_provisioners_proto_enumTypes[3].Descriptor() } func (Webhook_Kind) Type() protoreflect.EnumType { return &file_provisioners_proto_enumTypes[3] } func (x Webhook_Kind) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Webhook_Kind.Descriptor instead. func (Webhook_Kind) EnumDescriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{22, 0} } type Webhook_CertType int32 const ( Webhook_ALL Webhook_CertType = 0 Webhook_X509 Webhook_CertType = 1 Webhook_SSH Webhook_CertType = 2 ) // Enum value maps for Webhook_CertType. var ( Webhook_CertType_name = map[int32]string{ 0: "ALL", 1: "X509", 2: "SSH", } Webhook_CertType_value = map[string]int32{ "ALL": 0, "X509": 1, "SSH": 2, } ) func (x Webhook_CertType) Enum() *Webhook_CertType { p := new(Webhook_CertType) *p = x return p } func (x Webhook_CertType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Webhook_CertType) Descriptor() protoreflect.EnumDescriptor { return file_provisioners_proto_enumTypes[4].Descriptor() } func (Webhook_CertType) Type() protoreflect.EnumType { return &file_provisioners_proto_enumTypes[4] } func (x Webhook_CertType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Webhook_CertType.Descriptor instead. func (Webhook_CertType) EnumDescriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{22, 1} } type Provisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` AuthorityId string `protobuf:"bytes,2,opt,name=authority_id,json=authorityId,proto3" json:"authority_id,omitempty"` Type Provisioner_Type `protobuf:"varint,3,opt,name=type,proto3,enum=linkedca.Provisioner_Type" json:"type,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` Details *ProvisionerDetails `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` Claims *Claims `protobuf:"bytes,6,opt,name=claims,proto3" json:"claims,omitempty"` X509Template *Template `protobuf:"bytes,7,opt,name=x509_template,json=x509Template,proto3" json:"x509_template,omitempty"` SshTemplate *Template `protobuf:"bytes,8,opt,name=ssh_template,json=sshTemplate,proto3" json:"ssh_template,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` DeletedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` Policy *Policy `protobuf:"bytes,11,opt,name=policy,proto3" json:"policy,omitempty"` Webhooks []*Webhook `protobuf:"bytes,12,rep,name=webhooks,proto3" json:"webhooks,omitempty"` } func (x *Provisioner) Reset() { *x = Provisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Provisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*Provisioner) ProtoMessage() {} func (x *Provisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Provisioner.ProtoReflect.Descriptor instead. func (*Provisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{0} } func (x *Provisioner) GetId() string { if x != nil { return x.Id } return "" } func (x *Provisioner) GetAuthorityId() string { if x != nil { return x.AuthorityId } return "" } func (x *Provisioner) GetType() Provisioner_Type { if x != nil { return x.Type } return Provisioner_NOOP } func (x *Provisioner) GetName() string { if x != nil { return x.Name } return "" } func (x *Provisioner) GetDetails() *ProvisionerDetails { if x != nil { return x.Details } return nil } func (x *Provisioner) GetClaims() *Claims { if x != nil { return x.Claims } return nil } func (x *Provisioner) GetX509Template() *Template { if x != nil { return x.X509Template } return nil } func (x *Provisioner) GetSshTemplate() *Template { if x != nil { return x.SshTemplate } return nil } func (x *Provisioner) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Provisioner) GetDeletedAt() *timestamppb.Timestamp { if x != nil { return x.DeletedAt } return nil } func (x *Provisioner) GetPolicy() *Policy { if x != nil { return x.Policy } return nil } func (x *Provisioner) GetWebhooks() []*Webhook { if x != nil { return x.Webhooks } return nil } type ProvisionerIdentity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Type Provisioner_Type `protobuf:"varint,2,opt,name=type,proto3,enum=linkedca.Provisioner_Type" json:"type,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } func (x *ProvisionerIdentity) Reset() { *x = ProvisionerIdentity{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ProvisionerIdentity) String() string { return protoimpl.X.MessageStringOf(x) } func (*ProvisionerIdentity) ProtoMessage() {} func (x *ProvisionerIdentity) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ProvisionerIdentity.ProtoReflect.Descriptor instead. func (*ProvisionerIdentity) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{1} } func (x *ProvisionerIdentity) GetId() string { if x != nil { return x.Id } return "" } func (x *ProvisionerIdentity) GetType() Provisioner_Type { if x != nil { return x.Type } return Provisioner_NOOP } func (x *ProvisionerIdentity) GetName() string { if x != nil { return x.Name } return "" } type ProvisionerDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Data: // *ProvisionerDetails_JWK // *ProvisionerDetails_OIDC // *ProvisionerDetails_GCP // *ProvisionerDetails_AWS // *ProvisionerDetails_Azure // *ProvisionerDetails_ACME // *ProvisionerDetails_X5C // *ProvisionerDetails_K8SSA // *ProvisionerDetails_SSHPOP // *ProvisionerDetails_SCEP // *ProvisionerDetails_Nebula Data isProvisionerDetails_Data `protobuf_oneof:"data"` } func (x *ProvisionerDetails) Reset() { *x = ProvisionerDetails{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ProvisionerDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*ProvisionerDetails) ProtoMessage() {} func (x *ProvisionerDetails) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ProvisionerDetails.ProtoReflect.Descriptor instead. func (*ProvisionerDetails) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{2} } func (m *ProvisionerDetails) GetData() isProvisionerDetails_Data { if m != nil { return m.Data } return nil } func (x *ProvisionerDetails) GetJWK() *JWKProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_JWK); ok { return x.JWK } return nil } func (x *ProvisionerDetails) GetOIDC() *OIDCProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_OIDC); ok { return x.OIDC } return nil } func (x *ProvisionerDetails) GetGCP() *GCPProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_GCP); ok { return x.GCP } return nil } func (x *ProvisionerDetails) GetAWS() *AWSProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_AWS); ok { return x.AWS } return nil } func (x *ProvisionerDetails) GetAzure() *AzureProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_Azure); ok { return x.Azure } return nil } func (x *ProvisionerDetails) GetACME() *ACMEProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_ACME); ok { return x.ACME } return nil } func (x *ProvisionerDetails) GetX5C() *X5CProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_X5C); ok { return x.X5C } return nil } func (x *ProvisionerDetails) GetK8SSA() *K8SSAProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_K8SSA); ok { return x.K8SSA } return nil } func (x *ProvisionerDetails) GetSSHPOP() *SSHPOPProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_SSHPOP); ok { return x.SSHPOP } return nil } func (x *ProvisionerDetails) GetSCEP() *SCEPProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_SCEP); ok { return x.SCEP } return nil } func (x *ProvisionerDetails) GetNebula() *NebulaProvisioner { if x, ok := x.GetData().(*ProvisionerDetails_Nebula); ok { return x.Nebula } return nil } type isProvisionerDetails_Data interface { isProvisionerDetails_Data() } type ProvisionerDetails_JWK struct { JWK *JWKProvisioner `protobuf:"bytes,20,opt,name=JWK,proto3,oneof"` } type ProvisionerDetails_OIDC struct { OIDC *OIDCProvisioner `protobuf:"bytes,21,opt,name=OIDC,proto3,oneof"` } type ProvisionerDetails_GCP struct { GCP *GCPProvisioner `protobuf:"bytes,22,opt,name=GCP,proto3,oneof"` } type ProvisionerDetails_AWS struct { AWS *AWSProvisioner `protobuf:"bytes,23,opt,name=AWS,proto3,oneof"` } type ProvisionerDetails_Azure struct { Azure *AzureProvisioner `protobuf:"bytes,24,opt,name=Azure,proto3,oneof"` } type ProvisionerDetails_ACME struct { ACME *ACMEProvisioner `protobuf:"bytes,25,opt,name=ACME,proto3,oneof"` } type ProvisionerDetails_X5C struct { X5C *X5CProvisioner `protobuf:"bytes,26,opt,name=X5C,proto3,oneof"` } type ProvisionerDetails_K8SSA struct { K8SSA *K8SSAProvisioner `protobuf:"bytes,27,opt,name=K8sSA,proto3,oneof"` } type ProvisionerDetails_SSHPOP struct { SSHPOP *SSHPOPProvisioner `protobuf:"bytes,28,opt,name=SSHPOP,proto3,oneof"` } type ProvisionerDetails_SCEP struct { SCEP *SCEPProvisioner `protobuf:"bytes,29,opt,name=SCEP,proto3,oneof"` } type ProvisionerDetails_Nebula struct { Nebula *NebulaProvisioner `protobuf:"bytes,30,opt,name=Nebula,proto3,oneof"` } func (*ProvisionerDetails_JWK) isProvisionerDetails_Data() {} func (*ProvisionerDetails_OIDC) isProvisionerDetails_Data() {} func (*ProvisionerDetails_GCP) isProvisionerDetails_Data() {} func (*ProvisionerDetails_AWS) isProvisionerDetails_Data() {} func (*ProvisionerDetails_Azure) isProvisionerDetails_Data() {} func (*ProvisionerDetails_ACME) isProvisionerDetails_Data() {} func (*ProvisionerDetails_X5C) isProvisionerDetails_Data() {} func (*ProvisionerDetails_K8SSA) isProvisionerDetails_Data() {} func (*ProvisionerDetails_SSHPOP) isProvisionerDetails_Data() {} func (*ProvisionerDetails_SCEP) isProvisionerDetails_Data() {} func (*ProvisionerDetails_Nebula) isProvisionerDetails_Data() {} type ProvisionerList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Provisioners []*Provisioner `protobuf:"bytes,1,rep,name=provisioners,proto3" json:"provisioners,omitempty"` } func (x *ProvisionerList) Reset() { *x = ProvisionerList{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ProvisionerList) String() string { return protoimpl.X.MessageStringOf(x) } func (*ProvisionerList) ProtoMessage() {} func (x *ProvisionerList) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ProvisionerList.ProtoReflect.Descriptor instead. func (*ProvisionerList) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{3} } func (x *ProvisionerList) GetProvisioners() []*Provisioner { if x != nil { return x.Provisioners } return nil } type Claims struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields X509 *X509Claims `protobuf:"bytes,1,opt,name=x509,proto3" json:"x509,omitempty"` Ssh *SSHClaims `protobuf:"bytes,2,opt,name=ssh,proto3" json:"ssh,omitempty"` DisableRenewal bool `protobuf:"varint,3,opt,name=disable_renewal,json=disableRenewal,proto3" json:"disable_renewal,omitempty"` AllowRenewalAfterExpiry bool `protobuf:"varint,4,opt,name=allow_renewal_after_expiry,json=allowRenewalAfterExpiry,proto3" json:"allow_renewal_after_expiry,omitempty"` } func (x *Claims) Reset() { *x = Claims{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Claims) String() string { return protoimpl.X.MessageStringOf(x) } func (*Claims) ProtoMessage() {} func (x *Claims) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Claims.ProtoReflect.Descriptor instead. func (*Claims) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{4} } func (x *Claims) GetX509() *X509Claims { if x != nil { return x.X509 } return nil } func (x *Claims) GetSsh() *SSHClaims { if x != nil { return x.Ssh } return nil } func (x *Claims) GetDisableRenewal() bool { if x != nil { return x.DisableRenewal } return false } func (x *Claims) GetAllowRenewalAfterExpiry() bool { if x != nil { return x.AllowRenewalAfterExpiry } return false } type X509Claims struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` Durations *Durations `protobuf:"bytes,2,opt,name=durations,proto3" json:"durations,omitempty"` } func (x *X509Claims) Reset() { *x = X509Claims{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *X509Claims) String() string { return protoimpl.X.MessageStringOf(x) } func (*X509Claims) ProtoMessage() {} func (x *X509Claims) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use X509Claims.ProtoReflect.Descriptor instead. func (*X509Claims) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{5} } func (x *X509Claims) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *X509Claims) GetDurations() *Durations { if x != nil { return x.Durations } return nil } type SSHClaims struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` UserDurations *Durations `protobuf:"bytes,2,opt,name=user_durations,json=userDurations,proto3" json:"user_durations,omitempty"` HostDurations *Durations `protobuf:"bytes,3,opt,name=host_durations,json=hostDurations,proto3" json:"host_durations,omitempty"` } func (x *SSHClaims) Reset() { *x = SSHClaims{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHClaims) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHClaims) ProtoMessage() {} func (x *SSHClaims) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHClaims.ProtoReflect.Descriptor instead. func (*SSHClaims) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{6} } func (x *SSHClaims) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *SSHClaims) GetUserDurations() *Durations { if x != nil { return x.UserDurations } return nil } func (x *SSHClaims) GetHostDurations() *Durations { if x != nil { return x.HostDurations } return nil } type Durations struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Default string `protobuf:"bytes,1,opt,name=default,proto3" json:"default,omitempty"` Min string `protobuf:"bytes,2,opt,name=min,proto3" json:"min,omitempty"` Max string `protobuf:"bytes,3,opt,name=max,proto3" json:"max,omitempty"` } func (x *Durations) Reset() { *x = Durations{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Durations) String() string { return protoimpl.X.MessageStringOf(x) } func (*Durations) ProtoMessage() {} func (x *Durations) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Durations.ProtoReflect.Descriptor instead. func (*Durations) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{7} } func (x *Durations) GetDefault() string { if x != nil { return x.Default } return "" } func (x *Durations) GetMin() string { if x != nil { return x.Min } return "" } func (x *Durations) GetMax() string { if x != nil { return x.Max } return "" } type Template struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Template []byte `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } func (x *Template) Reset() { *x = Template{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Template) String() string { return protoimpl.X.MessageStringOf(x) } func (*Template) ProtoMessage() {} func (x *Template) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Template.ProtoReflect.Descriptor instead. func (*Template) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{8} } func (x *Template) GetTemplate() []byte { if x != nil { return x.Template } return nil } func (x *Template) GetData() []byte { if x != nil { return x.Data } return nil } type JWKProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PublicKey []byte `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` EncryptedPrivateKey []byte `protobuf:"bytes,2,opt,name=encrypted_private_key,json=encryptedPrivateKey,proto3" json:"encrypted_private_key,omitempty"` } func (x *JWKProvisioner) Reset() { *x = JWKProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *JWKProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*JWKProvisioner) ProtoMessage() {} func (x *JWKProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use JWKProvisioner.ProtoReflect.Descriptor instead. func (*JWKProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{9} } func (x *JWKProvisioner) GetPublicKey() []byte { if x != nil { return x.PublicKey } return nil } func (x *JWKProvisioner) GetEncryptedPrivateKey() []byte { if x != nil { return x.EncryptedPrivateKey } return nil } type OIDCProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` ConfigurationEndpoint string `protobuf:"bytes,3,opt,name=configuration_endpoint,json=configurationEndpoint,proto3" json:"configuration_endpoint,omitempty"` Admins []string `protobuf:"bytes,4,rep,name=admins,proto3" json:"admins,omitempty"` Domains []string `protobuf:"bytes,5,rep,name=domains,proto3" json:"domains,omitempty"` Groups []string `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"` ListenAddress string `protobuf:"bytes,7,opt,name=listen_address,json=listenAddress,proto3" json:"listen_address,omitempty"` TenantId string `protobuf:"bytes,8,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` } func (x *OIDCProvisioner) Reset() { *x = OIDCProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OIDCProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*OIDCProvisioner) ProtoMessage() {} func (x *OIDCProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OIDCProvisioner.ProtoReflect.Descriptor instead. func (*OIDCProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{10} } func (x *OIDCProvisioner) GetClientId() string { if x != nil { return x.ClientId } return "" } func (x *OIDCProvisioner) GetClientSecret() string { if x != nil { return x.ClientSecret } return "" } func (x *OIDCProvisioner) GetConfigurationEndpoint() string { if x != nil { return x.ConfigurationEndpoint } return "" } func (x *OIDCProvisioner) GetAdmins() []string { if x != nil { return x.Admins } return nil } func (x *OIDCProvisioner) GetDomains() []string { if x != nil { return x.Domains } return nil } func (x *OIDCProvisioner) GetGroups() []string { if x != nil { return x.Groups } return nil } func (x *OIDCProvisioner) GetListenAddress() string { if x != nil { return x.ListenAddress } return "" } func (x *OIDCProvisioner) GetTenantId() string { if x != nil { return x.TenantId } return "" } type GCPProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ServiceAccounts []string `protobuf:"bytes,1,rep,name=service_accounts,json=serviceAccounts,proto3" json:"service_accounts,omitempty"` ProjectIds []string `protobuf:"bytes,2,rep,name=project_ids,json=projectIds,proto3" json:"project_ids,omitempty"` DisableCustomSans bool `protobuf:"varint,3,opt,name=disable_custom_sans,json=disableCustomSans,proto3" json:"disable_custom_sans,omitempty"` DisableTrustOnFirstUse bool `protobuf:"varint,4,opt,name=disable_trust_on_first_use,json=disableTrustOnFirstUse,proto3" json:"disable_trust_on_first_use,omitempty"` InstanceAge string `protobuf:"bytes,5,opt,name=instance_age,json=instanceAge,proto3" json:"instance_age,omitempty"` } func (x *GCPProvisioner) Reset() { *x = GCPProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GCPProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*GCPProvisioner) ProtoMessage() {} func (x *GCPProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GCPProvisioner.ProtoReflect.Descriptor instead. func (*GCPProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{11} } func (x *GCPProvisioner) GetServiceAccounts() []string { if x != nil { return x.ServiceAccounts } return nil } func (x *GCPProvisioner) GetProjectIds() []string { if x != nil { return x.ProjectIds } return nil } func (x *GCPProvisioner) GetDisableCustomSans() bool { if x != nil { return x.DisableCustomSans } return false } func (x *GCPProvisioner) GetDisableTrustOnFirstUse() bool { if x != nil { return x.DisableTrustOnFirstUse } return false } func (x *GCPProvisioner) GetInstanceAge() string { if x != nil { return x.InstanceAge } return "" } type AWSProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Accounts []string `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` DisableCustomSans bool `protobuf:"varint,2,opt,name=disable_custom_sans,json=disableCustomSans,proto3" json:"disable_custom_sans,omitempty"` DisableTrustOnFirstUse bool `protobuf:"varint,3,opt,name=disable_trust_on_first_use,json=disableTrustOnFirstUse,proto3" json:"disable_trust_on_first_use,omitempty"` InstanceAge string `protobuf:"bytes,4,opt,name=instance_age,json=instanceAge,proto3" json:"instance_age,omitempty"` } func (x *AWSProvisioner) Reset() { *x = AWSProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AWSProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*AWSProvisioner) ProtoMessage() {} func (x *AWSProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AWSProvisioner.ProtoReflect.Descriptor instead. func (*AWSProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{12} } func (x *AWSProvisioner) GetAccounts() []string { if x != nil { return x.Accounts } return nil } func (x *AWSProvisioner) GetDisableCustomSans() bool { if x != nil { return x.DisableCustomSans } return false } func (x *AWSProvisioner) GetDisableTrustOnFirstUse() bool { if x != nil { return x.DisableTrustOnFirstUse } return false } func (x *AWSProvisioner) GetInstanceAge() string { if x != nil { return x.InstanceAge } return "" } type AzureProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` ResourceGroups []string `protobuf:"bytes,2,rep,name=resource_groups,json=resourceGroups,proto3" json:"resource_groups,omitempty"` Audience string `protobuf:"bytes,3,opt,name=audience,proto3" json:"audience,omitempty"` DisableCustomSans bool `protobuf:"varint,4,opt,name=disable_custom_sans,json=disableCustomSans,proto3" json:"disable_custom_sans,omitempty"` DisableTrustOnFirstUse bool `protobuf:"varint,5,opt,name=disable_trust_on_first_use,json=disableTrustOnFirstUse,proto3" json:"disable_trust_on_first_use,omitempty"` SubscriptionIds []string `protobuf:"bytes,6,rep,name=subscription_ids,json=subscriptionIds,proto3" json:"subscription_ids,omitempty"` ObjectIds []string `protobuf:"bytes,7,rep,name=object_ids,json=objectIds,proto3" json:"object_ids,omitempty"` } func (x *AzureProvisioner) Reset() { *x = AzureProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AzureProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*AzureProvisioner) ProtoMessage() {} func (x *AzureProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AzureProvisioner.ProtoReflect.Descriptor instead. func (*AzureProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{13} } func (x *AzureProvisioner) GetTenantId() string { if x != nil { return x.TenantId } return "" } func (x *AzureProvisioner) GetResourceGroups() []string { if x != nil { return x.ResourceGroups } return nil } func (x *AzureProvisioner) GetAudience() string { if x != nil { return x.Audience } return "" } func (x *AzureProvisioner) GetDisableCustomSans() bool { if x != nil { return x.DisableCustomSans } return false } func (x *AzureProvisioner) GetDisableTrustOnFirstUse() bool { if x != nil { return x.DisableTrustOnFirstUse } return false } func (x *AzureProvisioner) GetSubscriptionIds() []string { if x != nil { return x.SubscriptionIds } return nil } func (x *AzureProvisioner) GetObjectIds() []string { if x != nil { return x.ObjectIds } return nil } type ACMEProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ForceCn bool `protobuf:"varint,1,opt,name=force_cn,json=forceCn,proto3" json:"force_cn,omitempty"` RequireEab bool `protobuf:"varint,2,opt,name=require_eab,json=requireEab,proto3" json:"require_eab,omitempty"` Challenges []ACMEProvisioner_ChallengeType `protobuf:"varint,3,rep,packed,name=challenges,proto3,enum=linkedca.ACMEProvisioner_ChallengeType" json:"challenges,omitempty"` AttestationFormats []ACMEProvisioner_AttestationFormatType `protobuf:"varint,4,rep,packed,name=attestation_formats,json=attestationFormats,proto3,enum=linkedca.ACMEProvisioner_AttestationFormatType" json:"attestation_formats,omitempty"` AttestationRoots [][]byte `protobuf:"bytes,5,rep,name=attestation_roots,json=attestationRoots,proto3" json:"attestation_roots,omitempty"` TermsOfService string `protobuf:"bytes,6,opt,name=terms_of_service,json=termsOfService,proto3" json:"terms_of_service,omitempty"` Website string `protobuf:"bytes,7,opt,name=website,proto3" json:"website,omitempty"` CaaIdentities []string `protobuf:"bytes,8,rep,name=caa_identities,json=caaIdentities,proto3" json:"caa_identities,omitempty"` } func (x *ACMEProvisioner) Reset() { *x = ACMEProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ACMEProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*ACMEProvisioner) ProtoMessage() {} func (x *ACMEProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ACMEProvisioner.ProtoReflect.Descriptor instead. func (*ACMEProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{14} } func (x *ACMEProvisioner) GetForceCn() bool { if x != nil { return x.ForceCn } return false } func (x *ACMEProvisioner) GetRequireEab() bool { if x != nil { return x.RequireEab } return false } func (x *ACMEProvisioner) GetChallenges() []ACMEProvisioner_ChallengeType { if x != nil { return x.Challenges } return nil } func (x *ACMEProvisioner) GetAttestationFormats() []ACMEProvisioner_AttestationFormatType { if x != nil { return x.AttestationFormats } return nil } func (x *ACMEProvisioner) GetAttestationRoots() [][]byte { if x != nil { return x.AttestationRoots } return nil } func (x *ACMEProvisioner) GetTermsOfService() string { if x != nil { return x.TermsOfService } return "" } func (x *ACMEProvisioner) GetWebsite() string { if x != nil { return x.Website } return "" } func (x *ACMEProvisioner) GetCaaIdentities() []string { if x != nil { return x.CaaIdentities } return nil } type X5CProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Roots [][]byte `protobuf:"bytes,1,rep,name=roots,proto3" json:"roots,omitempty"` } func (x *X5CProvisioner) Reset() { *x = X5CProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *X5CProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*X5CProvisioner) ProtoMessage() {} func (x *X5CProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use X5CProvisioner.ProtoReflect.Descriptor instead. func (*X5CProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{15} } func (x *X5CProvisioner) GetRoots() [][]byte { if x != nil { return x.Roots } return nil } type K8SSAProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` } func (x *K8SSAProvisioner) Reset() { *x = K8SSAProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *K8SSAProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*K8SSAProvisioner) ProtoMessage() {} func (x *K8SSAProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use K8SSAProvisioner.ProtoReflect.Descriptor instead. func (*K8SSAProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{16} } func (x *K8SSAProvisioner) GetPublicKeys() [][]byte { if x != nil { return x.PublicKeys } return nil } type SSHPOPProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SSHPOPProvisioner) Reset() { *x = SSHPOPProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SSHPOPProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*SSHPOPProvisioner) ProtoMessage() {} func (x *SSHPOPProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SSHPOPProvisioner.ProtoReflect.Descriptor instead. func (*SSHPOPProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{17} } type SCEPProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ForceCn bool `protobuf:"varint,1,opt,name=force_cn,json=forceCn,proto3" json:"force_cn,omitempty"` Challenge string `protobuf:"bytes,2,opt,name=challenge,proto3" json:"challenge,omitempty"` Capabilities []string `protobuf:"bytes,3,rep,name=capabilities,proto3" json:"capabilities,omitempty"` MinimumPublicKeyLength int32 `protobuf:"varint,4,opt,name=minimum_public_key_length,json=minimumPublicKeyLength,proto3" json:"minimum_public_key_length,omitempty"` IncludeRoot bool `protobuf:"varint,5,opt,name=include_root,json=includeRoot,proto3" json:"include_root,omitempty"` EncryptionAlgorithmIdentifier int32 `protobuf:"varint,6,opt,name=encryption_algorithm_identifier,json=encryptionAlgorithmIdentifier,proto3" json:"encryption_algorithm_identifier,omitempty"` } func (x *SCEPProvisioner) Reset() { *x = SCEPProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCEPProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCEPProvisioner) ProtoMessage() {} func (x *SCEPProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCEPProvisioner.ProtoReflect.Descriptor instead. func (*SCEPProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{18} } func (x *SCEPProvisioner) GetForceCn() bool { if x != nil { return x.ForceCn } return false } func (x *SCEPProvisioner) GetChallenge() string { if x != nil { return x.Challenge } return "" } func (x *SCEPProvisioner) GetCapabilities() []string { if x != nil { return x.Capabilities } return nil } func (x *SCEPProvisioner) GetMinimumPublicKeyLength() int32 { if x != nil { return x.MinimumPublicKeyLength } return 0 } func (x *SCEPProvisioner) GetIncludeRoot() bool { if x != nil { return x.IncludeRoot } return false } func (x *SCEPProvisioner) GetEncryptionAlgorithmIdentifier() int32 { if x != nil { return x.EncryptionAlgorithmIdentifier } return 0 } type NebulaProvisioner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Roots [][]byte `protobuf:"bytes,1,rep,name=roots,proto3" json:"roots,omitempty"` } func (x *NebulaProvisioner) Reset() { *x = NebulaProvisioner{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *NebulaProvisioner) String() string { return protoimpl.X.MessageStringOf(x) } func (*NebulaProvisioner) ProtoMessage() {} func (x *NebulaProvisioner) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NebulaProvisioner.ProtoReflect.Descriptor instead. func (*NebulaProvisioner) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{19} } func (x *NebulaProvisioner) GetRoots() [][]byte { if x != nil { return x.Roots } return nil } type BasicAuth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` } func (x *BasicAuth) Reset() { *x = BasicAuth{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BasicAuth) String() string { return protoimpl.X.MessageStringOf(x) } func (*BasicAuth) ProtoMessage() {} func (x *BasicAuth) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BasicAuth.ProtoReflect.Descriptor instead. func (*BasicAuth) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{20} } func (x *BasicAuth) GetUsername() string { if x != nil { return x.Username } return "" } func (x *BasicAuth) GetPassword() string { if x != nil { return x.Password } return "" } type BearerToken struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BearerToken string `protobuf:"bytes,1,opt,name=bearer_token,json=bearerToken,proto3" json:"bearer_token,omitempty"` } func (x *BearerToken) Reset() { *x = BearerToken{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BearerToken) String() string { return protoimpl.X.MessageStringOf(x) } func (*BearerToken) ProtoMessage() {} func (x *BearerToken) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BearerToken.ProtoReflect.Descriptor instead. func (*BearerToken) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{21} } func (x *BearerToken) GetBearerToken() string { if x != nil { return x.BearerToken } return "" } type Webhook struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` Kind Webhook_Kind `protobuf:"varint,4,opt,name=kind,proto3,enum=linkedca.Webhook_Kind" json:"kind,omitempty"` Secret string `protobuf:"bytes,5,opt,name=secret,proto3" json:"secret,omitempty"` // Types that are assignable to Auth: // *Webhook_BearerToken // *Webhook_BasicAuth Auth isWebhook_Auth `protobuf_oneof:"auth"` DisableTlsClientAuth bool `protobuf:"varint,8,opt,name=disable_tls_client_auth,json=disableTlsClientAuth,proto3" json:"disable_tls_client_auth,omitempty"` CertType Webhook_CertType `protobuf:"varint,9,opt,name=cert_type,json=certType,proto3,enum=linkedca.Webhook_CertType" json:"cert_type,omitempty"` } func (x *Webhook) Reset() { *x = Webhook{} if protoimpl.UnsafeEnabled { mi := &file_provisioners_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Webhook) String() string { return protoimpl.X.MessageStringOf(x) } func (*Webhook) ProtoMessage() {} func (x *Webhook) ProtoReflect() protoreflect.Message { mi := &file_provisioners_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Webhook.ProtoReflect.Descriptor instead. func (*Webhook) Descriptor() ([]byte, []int) { return file_provisioners_proto_rawDescGZIP(), []int{22} } func (x *Webhook) GetName() string { if x != nil { return x.Name } return "" } func (x *Webhook) GetId() string { if x != nil { return x.Id } return "" } func (x *Webhook) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Webhook) GetKind() Webhook_Kind { if x != nil { return x.Kind } return Webhook_NO_KIND } func (x *Webhook) GetSecret() string { if x != nil { return x.Secret } return "" } func (m *Webhook) GetAuth() isWebhook_Auth { if m != nil { return m.Auth } return nil } func (x *Webhook) GetBearerToken() *BearerToken { if x, ok := x.GetAuth().(*Webhook_BearerToken); ok { return x.BearerToken } return nil } func (x *Webhook) GetBasicAuth() *BasicAuth { if x, ok := x.GetAuth().(*Webhook_BasicAuth); ok { return x.BasicAuth } return nil } func (x *Webhook) GetDisableTlsClientAuth() bool { if x != nil { return x.DisableTlsClientAuth } return false } func (x *Webhook) GetCertType() Webhook_CertType { if x != nil { return x.CertType } return Webhook_ALL } type isWebhook_Auth interface { isWebhook_Auth() } type Webhook_BearerToken struct { BearerToken *BearerToken `protobuf:"bytes,6,opt,name=bearer_token,json=bearerToken,proto3,oneof"` } type Webhook_BasicAuth struct { BasicAuth *BasicAuth `protobuf:"bytes,7,opt,name=basic_auth,json=basicAuth,proto3,oneof"` } func (*Webhook_BearerToken) isWebhook_Auth() {} func (*Webhook_BasicAuth) isWebhook_Auth() {} var File_provisioners_proto protoreflect.FileDescriptor var file_provisioners_proto_rawDesc = []byte{ 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x05, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0d, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x78, 0x35, 0x30, 0x39, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x73, 0x68, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x73, 0x68, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4a, 0x57, 0x4b, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x43, 0x4d, 0x45, 0x10, 0x06, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x35, 0x43, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x38, 0x53, 0x53, 0x41, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x53, 0x48, 0x50, 0x4f, 0x50, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x45, 0x50, 0x10, 0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x45, 0x42, 0x55, 0x4c, 0x41, 0x10, 0x0b, 0x22, 0x69, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbd, 0x04, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x4a, 0x57, 0x4b, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x4a, 0x57, 0x4b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x03, 0x4a, 0x57, 0x4b, 0x12, 0x2f, 0x0a, 0x04, 0x4f, 0x49, 0x44, 0x43, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x4f, 0x49, 0x44, 0x43, 0x12, 0x2c, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x03, 0x47, 0x43, 0x50, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x03, 0x41, 0x57, 0x53, 0x12, 0x32, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x41, 0x43, 0x4d, 0x45, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x43, 0x4d, 0x45, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x41, 0x43, 0x4d, 0x45, 0x12, 0x2c, 0x0a, 0x03, 0x58, 0x35, 0x43, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x58, 0x35, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x03, 0x58, 0x35, 0x43, 0x12, 0x32, 0x0a, 0x05, 0x4b, 0x38, 0x73, 0x53, 0x41, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x41, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x4b, 0x38, 0x73, 0x53, 0x41, 0x12, 0x35, 0x0a, 0x06, 0x53, 0x53, 0x48, 0x50, 0x4f, 0x50, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x50, 0x4f, 0x50, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x53, 0x53, 0x48, 0x50, 0x4f, 0x50, 0x12, 0x2f, 0x0a, 0x04, 0x53, 0x43, 0x45, 0x50, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x43, 0x45, 0x50, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x53, 0x43, 0x45, 0x50, 0x12, 0x35, 0x0a, 0x06, 0x4e, 0x65, 0x62, 0x75, 0x6c, 0x61, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x4e, 0x65, 0x62, 0x75, 0x6c, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x4e, 0x65, 0x62, 0x75, 0x6c, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4c, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x78, 0x35, 0x30, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x04, 0x78, 0x35, 0x30, 0x39, 0x12, 0x25, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x53, 0x53, 0x48, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x22, 0x59, 0x0a, 0x0a, 0x58, 0x35, 0x30, 0x39, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x09, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x09, 0x53, 0x53, 0x48, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x49, 0x0a, 0x09, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x22, 0x3a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, 0x0e, 0x4a, 0x57, 0x4b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x98, 0x02, 0x0a, 0x0f, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x35, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xeb, 0x01, 0x0a, 0x0e, 0x47, 0x43, 0x50, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x4f, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x67, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0e, 0x41, 0x57, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x4f, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x67, 0x65, 0x22, 0xaa, 0x02, 0x0a, 0x10, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x4f, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x73, 0x22, 0xaf, 0x04, 0x0a, 0x0f, 0x41, 0x43, 0x4d, 0x45, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x65, 0x61, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x45, 0x61, 0x62, 0x12, 0x47, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x43, 0x4d, 0x45, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x41, 0x43, 0x4d, 0x45, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x61, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x61, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x30, 0x31, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4e, 0x53, 0x5f, 0x30, 0x31, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x30, 0x31, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x30, 0x31, 0x10, 0x04, 0x22, 0x3f, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x50, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x45, 0x50, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x50, 0x4d, 0x10, 0x03, 0x22, 0x26, 0x0a, 0x0e, 0x58, 0x35, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x22, 0x33, 0x0a, 0x10, 0x4b, 0x38, 0x73, 0x53, 0x41, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x53, 0x48, 0x50, 0x4f, 0x50, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x22, 0x94, 0x02, 0x0a, 0x0f, 0x53, 0x43, 0x45, 0x50, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x46, 0x0a, 0x1f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x29, 0x0a, 0x11, 0x4e, 0x65, 0x62, 0x75, 0x6c, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x22, 0x43, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x30, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xca, 0x03, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6c, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x52, 0x49, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x26, 0x0a, 0x08, 0x43, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x35, 0x30, 0x39, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x48, 0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x42, 0x15, 0x5a, 0x13, 0x67, 0x6f, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x2e, 0x73, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_provisioners_proto_rawDescOnce sync.Once file_provisioners_proto_rawDescData = file_provisioners_proto_rawDesc ) func file_provisioners_proto_rawDescGZIP() []byte { file_provisioners_proto_rawDescOnce.Do(func() { file_provisioners_proto_rawDescData = protoimpl.X.CompressGZIP(file_provisioners_proto_rawDescData) }) return file_provisioners_proto_rawDescData } var file_provisioners_proto_enumTypes = make([]protoimpl.EnumInfo, 5) var file_provisioners_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_provisioners_proto_goTypes = []interface{}{ (Provisioner_Type)(0), // 0: linkedca.Provisioner.Type (ACMEProvisioner_ChallengeType)(0), // 1: linkedca.ACMEProvisioner.ChallengeType (ACMEProvisioner_AttestationFormatType)(0), // 2: linkedca.ACMEProvisioner.AttestationFormatType (Webhook_Kind)(0), // 3: linkedca.Webhook.Kind (Webhook_CertType)(0), // 4: linkedca.Webhook.CertType (*Provisioner)(nil), // 5: linkedca.Provisioner (*ProvisionerIdentity)(nil), // 6: linkedca.ProvisionerIdentity (*ProvisionerDetails)(nil), // 7: linkedca.ProvisionerDetails (*ProvisionerList)(nil), // 8: linkedca.ProvisionerList (*Claims)(nil), // 9: linkedca.Claims (*X509Claims)(nil), // 10: linkedca.X509Claims (*SSHClaims)(nil), // 11: linkedca.SSHClaims (*Durations)(nil), // 12: linkedca.Durations (*Template)(nil), // 13: linkedca.Template (*JWKProvisioner)(nil), // 14: linkedca.JWKProvisioner (*OIDCProvisioner)(nil), // 15: linkedca.OIDCProvisioner (*GCPProvisioner)(nil), // 16: linkedca.GCPProvisioner (*AWSProvisioner)(nil), // 17: linkedca.AWSProvisioner (*AzureProvisioner)(nil), // 18: linkedca.AzureProvisioner (*ACMEProvisioner)(nil), // 19: linkedca.ACMEProvisioner (*X5CProvisioner)(nil), // 20: linkedca.X5CProvisioner (*K8SSAProvisioner)(nil), // 21: linkedca.K8sSAProvisioner (*SSHPOPProvisioner)(nil), // 22: linkedca.SSHPOPProvisioner (*SCEPProvisioner)(nil), // 23: linkedca.SCEPProvisioner (*NebulaProvisioner)(nil), // 24: linkedca.NebulaProvisioner (*BasicAuth)(nil), // 25: linkedca.BasicAuth (*BearerToken)(nil), // 26: linkedca.BearerToken (*Webhook)(nil), // 27: linkedca.Webhook (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp (*Policy)(nil), // 29: linkedca.Policy } var file_provisioners_proto_depIdxs = []int32{ 0, // 0: linkedca.Provisioner.type:type_name -> linkedca.Provisioner.Type 7, // 1: linkedca.Provisioner.details:type_name -> linkedca.ProvisionerDetails 9, // 2: linkedca.Provisioner.claims:type_name -> linkedca.Claims 13, // 3: linkedca.Provisioner.x509_template:type_name -> linkedca.Template 13, // 4: linkedca.Provisioner.ssh_template:type_name -> linkedca.Template 28, // 5: linkedca.Provisioner.created_at:type_name -> google.protobuf.Timestamp 28, // 6: linkedca.Provisioner.deleted_at:type_name -> google.protobuf.Timestamp 29, // 7: linkedca.Provisioner.policy:type_name -> linkedca.Policy 27, // 8: linkedca.Provisioner.webhooks:type_name -> linkedca.Webhook 0, // 9: linkedca.ProvisionerIdentity.type:type_name -> linkedca.Provisioner.Type 14, // 10: linkedca.ProvisionerDetails.JWK:type_name -> linkedca.JWKProvisioner 15, // 11: linkedca.ProvisionerDetails.OIDC:type_name -> linkedca.OIDCProvisioner 16, // 12: linkedca.ProvisionerDetails.GCP:type_name -> linkedca.GCPProvisioner 17, // 13: linkedca.ProvisionerDetails.AWS:type_name -> linkedca.AWSProvisioner 18, // 14: linkedca.ProvisionerDetails.Azure:type_name -> linkedca.AzureProvisioner 19, // 15: linkedca.ProvisionerDetails.ACME:type_name -> linkedca.ACMEProvisioner 20, // 16: linkedca.ProvisionerDetails.X5C:type_name -> linkedca.X5CProvisioner 21, // 17: linkedca.ProvisionerDetails.K8sSA:type_name -> linkedca.K8sSAProvisioner 22, // 18: linkedca.ProvisionerDetails.SSHPOP:type_name -> linkedca.SSHPOPProvisioner 23, // 19: linkedca.ProvisionerDetails.SCEP:type_name -> linkedca.SCEPProvisioner 24, // 20: linkedca.ProvisionerDetails.Nebula:type_name -> linkedca.NebulaProvisioner 5, // 21: linkedca.ProvisionerList.provisioners:type_name -> linkedca.Provisioner 10, // 22: linkedca.Claims.x509:type_name -> linkedca.X509Claims 11, // 23: linkedca.Claims.ssh:type_name -> linkedca.SSHClaims 12, // 24: linkedca.X509Claims.durations:type_name -> linkedca.Durations 12, // 25: linkedca.SSHClaims.user_durations:type_name -> linkedca.Durations 12, // 26: linkedca.SSHClaims.host_durations:type_name -> linkedca.Durations 1, // 27: linkedca.ACMEProvisioner.challenges:type_name -> linkedca.ACMEProvisioner.ChallengeType 2, // 28: linkedca.ACMEProvisioner.attestation_formats:type_name -> linkedca.ACMEProvisioner.AttestationFormatType 3, // 29: linkedca.Webhook.kind:type_name -> linkedca.Webhook.Kind 26, // 30: linkedca.Webhook.bearer_token:type_name -> linkedca.BearerToken 25, // 31: linkedca.Webhook.basic_auth:type_name -> linkedca.BasicAuth 4, // 32: linkedca.Webhook.cert_type:type_name -> linkedca.Webhook.CertType 33, // [33:33] is the sub-list for method output_type 33, // [33:33] is the sub-list for method input_type 33, // [33:33] is the sub-list for extension type_name 33, // [33:33] is the sub-list for extension extendee 0, // [0:33] is the sub-list for field type_name } func init() { file_provisioners_proto_init() } func file_provisioners_proto_init() { if File_provisioners_proto != nil { return } file_policy_proto_init() if !protoimpl.UnsafeEnabled { file_provisioners_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Provisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProvisionerIdentity); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProvisionerDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProvisionerList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Claims); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*X509Claims); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHClaims); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Durations); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Template); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JWKProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OIDCProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GCPProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AWSProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AzureProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ACMEProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*X5CProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*K8SSAProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SSHPOPProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCEPProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NebulaProvisioner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BasicAuth); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BearerToken); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_provisioners_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Webhook); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_provisioners_proto_msgTypes[2].OneofWrappers = []interface{}{ (*ProvisionerDetails_JWK)(nil), (*ProvisionerDetails_OIDC)(nil), (*ProvisionerDetails_GCP)(nil), (*ProvisionerDetails_AWS)(nil), (*ProvisionerDetails_Azure)(nil), (*ProvisionerDetails_ACME)(nil), (*ProvisionerDetails_X5C)(nil), (*ProvisionerDetails_K8SSA)(nil), (*ProvisionerDetails_SSHPOP)(nil), (*ProvisionerDetails_SCEP)(nil), (*ProvisionerDetails_Nebula)(nil), } file_provisioners_proto_msgTypes[22].OneofWrappers = []interface{}{ (*Webhook_BearerToken)(nil), (*Webhook_BasicAuth)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_provisioners_proto_rawDesc, NumEnums: 5, NumMessages: 23, NumExtensions: 0, NumServices: 0, }, GoTypes: file_provisioners_proto_goTypes, DependencyIndexes: file_provisioners_proto_depIdxs, EnumInfos: file_provisioners_proto_enumTypes, MessageInfos: file_provisioners_proto_msgTypes, }.Build() File_provisioners_proto = out.File file_provisioners_proto_rawDesc = nil file_provisioners_proto_goTypes = nil file_provisioners_proto_depIdxs = nil } linkedca-0.19.0/provisioners.proto000066400000000000000000000076251433253635300172230ustar00rootroot00000000000000syntax = "proto3"; package linkedca; option go_package = "go.step.sm/linkedca"; import "google/protobuf/timestamp.proto"; import "policy.proto"; message Provisioner { enum Type { NOOP = 0; JWK = 1; OIDC = 2; GCP = 3; AWS = 4; AZURE = 5; ACME = 6; X5C = 7; K8SSA = 8; SSHPOP = 9; SCEP = 10; NEBULA = 11; } string id = 1; string authority_id = 2; Type type = 3; string name = 4; ProvisionerDetails details = 5; Claims claims = 6; Template x509_template = 7; Template ssh_template = 8; google.protobuf.Timestamp created_at = 9; google.protobuf.Timestamp deleted_at = 10; Policy policy = 11; repeated Webhook webhooks = 12; } message ProvisionerIdentity { string id = 1; Provisioner.Type type = 2; string name = 3; } message ProvisionerDetails { oneof data { JWKProvisioner JWK = 20; OIDCProvisioner OIDC = 21; GCPProvisioner GCP = 22; AWSProvisioner AWS = 23; AzureProvisioner Azure = 24; ACMEProvisioner ACME = 25; X5CProvisioner X5C = 26; K8sSAProvisioner K8sSA = 27; SSHPOPProvisioner SSHPOP = 28; SCEPProvisioner SCEP = 29; NebulaProvisioner Nebula = 30; } } message ProvisionerList { repeated Provisioner provisioners = 1; } message Claims { X509Claims x509 = 1; SSHClaims ssh = 2; bool disable_renewal = 3; bool allow_renewal_after_expiry = 4; } message X509Claims { bool enabled = 1; Durations durations = 2; } message SSHClaims { bool enabled = 1; Durations user_durations = 2; Durations host_durations = 3; } message Durations { string default = 1; string min = 2; string max = 3; } message Template { bytes template = 1; bytes data = 2; } message JWKProvisioner { bytes public_key = 1; bytes encrypted_private_key = 2; } message OIDCProvisioner { string client_id = 1; string client_secret = 2; string configuration_endpoint = 3; repeated string admins = 4; repeated string domains = 5; repeated string groups = 6; string listen_address = 7; string tenant_id = 8; } message GCPProvisioner { repeated string service_accounts = 1; repeated string project_ids = 2; bool disable_custom_sans = 3; bool disable_trust_on_first_use = 4; string instance_age = 5; } message AWSProvisioner { repeated string accounts = 1; bool disable_custom_sans = 2; bool disable_trust_on_first_use = 3; string instance_age = 4; } message AzureProvisioner { string tenant_id = 1; repeated string resource_groups = 2; string audience = 3; bool disable_custom_sans = 4; bool disable_trust_on_first_use = 5; repeated string subscription_ids = 6; repeated string object_ids = 7; } message ACMEProvisioner { enum ChallengeType { UNKNOWN = 0; HTTP_01 = 1; DNS_01 = 2; TLS_ALPN_01 = 3; DEVICE_ATTEST_01 = 4; } enum AttestationFormatType { NONE = 0; APPLE = 1; STEP = 2; TPM = 3; } bool force_cn = 1; bool require_eab = 2; repeated ChallengeType challenges = 3; repeated AttestationFormatType attestation_formats = 4; repeated bytes attestation_roots = 5; string terms_of_service = 6; string website = 7; repeated string caa_identities = 8; } message X5CProvisioner { repeated bytes roots = 1; } message K8sSAProvisioner { repeated bytes public_keys = 1; } message SSHPOPProvisioner {} message SCEPProvisioner { bool force_cn = 1; string challenge = 2; repeated string capabilities = 3; int32 minimum_public_key_length = 4; bool include_root = 5; int32 encryption_algorithm_identifier = 6; } message NebulaProvisioner { repeated bytes roots = 1; } message BasicAuth { string username = 1; string password = 2; } message BearerToken { string bearer_token = 1; } message Webhook { enum Kind { NO_KIND = 0; ENRICHING = 1; AUTHORIZING = 2; } enum CertType { ALL = 0; X509 = 1; SSH = 2; } string name = 1; string id = 2; string url = 3; Kind kind = 4; string secret = 5; oneof auth { BearerToken bearer_token = 6; BasicAuth basic_auth = 7; } bool disable_tls_client_auth = 8; CertType cert_type = 9; }