//nolint:revive
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v3.21.12
// source: keymanager/km_common/proto/algorithms.proto

package keymanager

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Key Encapsulation Mechanism (KEM)
type KemAlgorithm int32

const (
	KemAlgorithm_KEM_ALGORITHM_UNSPECIFIED              KemAlgorithm = 0
	KemAlgorithm_KEM_ALGORITHM_DHKEM_X25519_HKDF_SHA256 KemAlgorithm = 1
)

// Enum value maps for KemAlgorithm.
var (
	KemAlgorithm_name = map[int32]string{
		0: "KEM_ALGORITHM_UNSPECIFIED",
		1: "KEM_ALGORITHM_DHKEM_X25519_HKDF_SHA256",
	}
	KemAlgorithm_value = map[string]int32{
		"KEM_ALGORITHM_UNSPECIFIED":              0,
		"KEM_ALGORITHM_DHKEM_X25519_HKDF_SHA256": 1,
	}
)

func (x KemAlgorithm) Enum() *KemAlgorithm {
	p := new(KemAlgorithm)
	*p = x
	return p
}

func (x KemAlgorithm) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (KemAlgorithm) Descriptor() protoreflect.EnumDescriptor {
	return file_keymanager_km_common_proto_algorithms_proto_enumTypes[0].Descriptor()
}

func (KemAlgorithm) Type() protoreflect.EnumType {
	return &file_keymanager_km_common_proto_algorithms_proto_enumTypes[0]
}

func (x KemAlgorithm) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use KemAlgorithm.Descriptor instead.
func (KemAlgorithm) EnumDescriptor() ([]byte, []int) {
	return file_keymanager_km_common_proto_algorithms_proto_rawDescGZIP(), []int{0}
}

// Key Derivation Function (KDF)
type KdfAlgorithm int32

const (
	KdfAlgorithm_KDF_ALGORITHM_UNSPECIFIED KdfAlgorithm = 0
	KdfAlgorithm_KDF_ALGORITHM_HKDF_SHA256 KdfAlgorithm = 1
)

// Enum value maps for KdfAlgorithm.
var (
	KdfAlgorithm_name = map[int32]string{
		0: "KDF_ALGORITHM_UNSPECIFIED",
		1: "KDF_ALGORITHM_HKDF_SHA256",
	}
	KdfAlgorithm_value = map[string]int32{
		"KDF_ALGORITHM_UNSPECIFIED": 0,
		"KDF_ALGORITHM_HKDF_SHA256": 1,
	}
)

func (x KdfAlgorithm) Enum() *KdfAlgorithm {
	p := new(KdfAlgorithm)
	*p = x
	return p
}

func (x KdfAlgorithm) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (KdfAlgorithm) Descriptor() protoreflect.EnumDescriptor {
	return file_keymanager_km_common_proto_algorithms_proto_enumTypes[1].Descriptor()
}

func (KdfAlgorithm) Type() protoreflect.EnumType {
	return &file_keymanager_km_common_proto_algorithms_proto_enumTypes[1]
}

func (x KdfAlgorithm) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use KdfAlgorithm.Descriptor instead.
func (KdfAlgorithm) EnumDescriptor() ([]byte, []int) {
	return file_keymanager_km_common_proto_algorithms_proto_rawDescGZIP(), []int{1}
}

// Authenticated Encryption with Associated Data (AEAD)
type AeadAlgorithm int32

const (
	AeadAlgorithm_AEAD_ALGORITHM_UNSPECIFIED AeadAlgorithm = 0
	AeadAlgorithm_AEAD_ALGORITHM_AES_256_GCM AeadAlgorithm = 1
)

// Enum value maps for AeadAlgorithm.
var (
	AeadAlgorithm_name = map[int32]string{
		0: "AEAD_ALGORITHM_UNSPECIFIED",
		1: "AEAD_ALGORITHM_AES_256_GCM",
	}
	AeadAlgorithm_value = map[string]int32{
		"AEAD_ALGORITHM_UNSPECIFIED": 0,
		"AEAD_ALGORITHM_AES_256_GCM": 1,
	}
)

func (x AeadAlgorithm) Enum() *AeadAlgorithm {
	p := new(AeadAlgorithm)
	*p = x
	return p
}

func (x AeadAlgorithm) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (AeadAlgorithm) Descriptor() protoreflect.EnumDescriptor {
	return file_keymanager_km_common_proto_algorithms_proto_enumTypes[2].Descriptor()
}

func (AeadAlgorithm) Type() protoreflect.EnumType {
	return &file_keymanager_km_common_proto_algorithms_proto_enumTypes[2]
}

func (x AeadAlgorithm) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use AeadAlgorithm.Descriptor instead.
func (AeadAlgorithm) EnumDescriptor() ([]byte, []int) {
	return file_keymanager_km_common_proto_algorithms_proto_rawDescGZIP(), []int{2}
}

// Composite HPKE Algorithm suite
type HpkeAlgorithm struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Kem           KemAlgorithm           `protobuf:"varint,1,opt,name=kem,proto3,enum=keymanager.KemAlgorithm" json:"kem,omitempty"`
	Kdf           KdfAlgorithm           `protobuf:"varint,2,opt,name=kdf,proto3,enum=keymanager.KdfAlgorithm" json:"kdf,omitempty"`
	Aead          AeadAlgorithm          `protobuf:"varint,3,opt,name=aead,proto3,enum=keymanager.AeadAlgorithm" json:"aead,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HpkeAlgorithm) Reset() {
	*x = HpkeAlgorithm{}
	mi := &file_keymanager_km_common_proto_algorithms_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HpkeAlgorithm) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HpkeAlgorithm) ProtoMessage() {}

func (x *HpkeAlgorithm) ProtoReflect() protoreflect.Message {
	mi := &file_keymanager_km_common_proto_algorithms_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HpkeAlgorithm.ProtoReflect.Descriptor instead.
func (*HpkeAlgorithm) Descriptor() ([]byte, []int) {
	return file_keymanager_km_common_proto_algorithms_proto_rawDescGZIP(), []int{0}
}

func (x *HpkeAlgorithm) GetKem() KemAlgorithm {
	if x != nil {
		return x.Kem
	}
	return KemAlgorithm_KEM_ALGORITHM_UNSPECIFIED
}

func (x *HpkeAlgorithm) GetKdf() KdfAlgorithm {
	if x != nil {
		return x.Kdf
	}
	return KdfAlgorithm_KDF_ALGORITHM_UNSPECIFIED
}

func (x *HpkeAlgorithm) GetAead() AeadAlgorithm {
	if x != nil {
		return x.Aead
	}
	return AeadAlgorithm_AEAD_ALGORITHM_UNSPECIFIED
}

var File_keymanager_km_common_proto_algorithms_proto protoreflect.FileDescriptor

const file_keymanager_km_common_proto_algorithms_proto_rawDesc = "" +
	"\n" +
	"+keymanager/km_common/proto/algorithms.proto\x12\n" +
	"keymanager\"\x96\x01\n" +
	"\rHpkeAlgorithm\x12*\n" +
	"\x03kem\x18\x01 \x01(\x0e2\x18.keymanager.KemAlgorithmR\x03kem\x12*\n" +
	"\x03kdf\x18\x02 \x01(\x0e2\x18.keymanager.KdfAlgorithmR\x03kdf\x12-\n" +
	"\x04aead\x18\x03 \x01(\x0e2\x19.keymanager.AeadAlgorithmR\x04aead*Y\n" +
	"\fKemAlgorithm\x12\x1d\n" +
	"\x19KEM_ALGORITHM_UNSPECIFIED\x10\x00\x12*\n" +
	"&KEM_ALGORITHM_DHKEM_X25519_HKDF_SHA256\x10\x01*L\n" +
	"\fKdfAlgorithm\x12\x1d\n" +
	"\x19KDF_ALGORITHM_UNSPECIFIED\x10\x00\x12\x1d\n" +
	"\x19KDF_ALGORITHM_HKDF_SHA256\x10\x01*O\n" +
	"\rAeadAlgorithm\x12\x1e\n" +
	"\x1aAEAD_ALGORITHM_UNSPECIFIED\x10\x00\x12\x1e\n" +
	"\x1aAEAD_ALGORITHM_AES_256_GCM\x10\x01BFZDgithub.com/google/go-tpm-tools/keymanager/km_common/proto;keymanagerb\x06proto3"

var (
	file_keymanager_km_common_proto_algorithms_proto_rawDescOnce sync.Once
	file_keymanager_km_common_proto_algorithms_proto_rawDescData []byte
)

func file_keymanager_km_common_proto_algorithms_proto_rawDescGZIP() []byte {
	file_keymanager_km_common_proto_algorithms_proto_rawDescOnce.Do(func() {
		file_keymanager_km_common_proto_algorithms_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_keymanager_km_common_proto_algorithms_proto_rawDesc), len(file_keymanager_km_common_proto_algorithms_proto_rawDesc)))
	})
	return file_keymanager_km_common_proto_algorithms_proto_rawDescData
}

var file_keymanager_km_common_proto_algorithms_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_keymanager_km_common_proto_algorithms_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_keymanager_km_common_proto_algorithms_proto_goTypes = []any{
	(KemAlgorithm)(0),     // 0: keymanager.KemAlgorithm
	(KdfAlgorithm)(0),     // 1: keymanager.KdfAlgorithm
	(AeadAlgorithm)(0),    // 2: keymanager.AeadAlgorithm
	(*HpkeAlgorithm)(nil), // 3: keymanager.HpkeAlgorithm
}
var file_keymanager_km_common_proto_algorithms_proto_depIdxs = []int32{
	0, // 0: keymanager.HpkeAlgorithm.kem:type_name -> keymanager.KemAlgorithm
	1, // 1: keymanager.HpkeAlgorithm.kdf:type_name -> keymanager.KdfAlgorithm
	2, // 2: keymanager.HpkeAlgorithm.aead:type_name -> keymanager.AeadAlgorithm
	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_keymanager_km_common_proto_algorithms_proto_init() }
func file_keymanager_km_common_proto_algorithms_proto_init() {
	if File_keymanager_km_common_proto_algorithms_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_keymanager_km_common_proto_algorithms_proto_rawDesc), len(file_keymanager_km_common_proto_algorithms_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_keymanager_km_common_proto_algorithms_proto_goTypes,
		DependencyIndexes: file_keymanager_km_common_proto_algorithms_proto_depIdxs,
		EnumInfos:         file_keymanager_km_common_proto_algorithms_proto_enumTypes,
		MessageInfos:      file_keymanager_km_common_proto_algorithms_proto_msgTypes,
	}.Build()
	File_keymanager_km_common_proto_algorithms_proto = out.File
	file_keymanager_km_common_proto_algorithms_proto_goTypes = nil
	file_keymanager_km_common_proto_algorithms_proto_depIdxs = nil
}
