// Copyright 2020 Google Inc.
//
// 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.
//
////////////////////////////////////////////////////////////////////////////////

// Code generated by protoc-gen-go. DO NOT EDIT.
// source: third_party/tink/proto/hmac.proto

package hmac_go_proto

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	common_go_proto "github.com/google/tink/go/proto/common_go_proto"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type HmacParams struct {
	Hash                 common_go_proto.HashType `protobuf:"varint,1,opt,name=hash,proto3,enum=google.crypto.tink.HashType" json:"hash,omitempty"`
	TagSize              uint32                   `protobuf:"varint,2,opt,name=tag_size,json=tagSize,proto3" json:"tag_size,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

func (m *HmacParams) Reset()         { *m = HmacParams{} }
func (m *HmacParams) String() string { return proto.CompactTextString(m) }
func (*HmacParams) ProtoMessage()    {}
func (*HmacParams) Descriptor() ([]byte, []int) {
	return fileDescriptor_310803c785e2f4dc, []int{0}
}

func (m *HmacParams) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HmacParams.Unmarshal(m, b)
}
func (m *HmacParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HmacParams.Marshal(b, m, deterministic)
}
func (m *HmacParams) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HmacParams.Merge(m, src)
}
func (m *HmacParams) XXX_Size() int {
	return xxx_messageInfo_HmacParams.Size(m)
}
func (m *HmacParams) XXX_DiscardUnknown() {
	xxx_messageInfo_HmacParams.DiscardUnknown(m)
}

var xxx_messageInfo_HmacParams proto.InternalMessageInfo

func (m *HmacParams) GetHash() common_go_proto.HashType {
	if m != nil {
		return m.Hash
	}
	return common_go_proto.HashType_UNKNOWN_HASH
}

func (m *HmacParams) GetTagSize() uint32 {
	if m != nil {
		return m.TagSize
	}
	return 0
}

// key_type: type.googleapis.com/google.crypto.tink.HmacKey
type HmacKey struct {
	Version              uint32      `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
	Params               *HmacParams `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"`
	KeyValue             []byte      `protobuf:"bytes,3,opt,name=key_value,json=keyValue,proto3" json:"key_value,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *HmacKey) Reset()         { *m = HmacKey{} }
func (m *HmacKey) String() string { return proto.CompactTextString(m) }
func (*HmacKey) ProtoMessage()    {}
func (*HmacKey) Descriptor() ([]byte, []int) {
	return fileDescriptor_310803c785e2f4dc, []int{1}
}

func (m *HmacKey) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HmacKey.Unmarshal(m, b)
}
func (m *HmacKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HmacKey.Marshal(b, m, deterministic)
}
func (m *HmacKey) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HmacKey.Merge(m, src)
}
func (m *HmacKey) XXX_Size() int {
	return xxx_messageInfo_HmacKey.Size(m)
}
func (m *HmacKey) XXX_DiscardUnknown() {
	xxx_messageInfo_HmacKey.DiscardUnknown(m)
}

var xxx_messageInfo_HmacKey proto.InternalMessageInfo

func (m *HmacKey) GetVersion() uint32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *HmacKey) GetParams() *HmacParams {
	if m != nil {
		return m.Params
	}
	return nil
}

func (m *HmacKey) GetKeyValue() []byte {
	if m != nil {
		return m.KeyValue
	}
	return nil
}

type HmacKeyFormat struct {
	Params               *HmacParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
	KeySize              uint32      `protobuf:"varint,2,opt,name=key_size,json=keySize,proto3" json:"key_size,omitempty"`
	Version              uint32      `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *HmacKeyFormat) Reset()         { *m = HmacKeyFormat{} }
func (m *HmacKeyFormat) String() string { return proto.CompactTextString(m) }
func (*HmacKeyFormat) ProtoMessage()    {}
func (*HmacKeyFormat) Descriptor() ([]byte, []int) {
	return fileDescriptor_310803c785e2f4dc, []int{2}
}

func (m *HmacKeyFormat) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HmacKeyFormat.Unmarshal(m, b)
}
func (m *HmacKeyFormat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HmacKeyFormat.Marshal(b, m, deterministic)
}
func (m *HmacKeyFormat) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HmacKeyFormat.Merge(m, src)
}
func (m *HmacKeyFormat) XXX_Size() int {
	return xxx_messageInfo_HmacKeyFormat.Size(m)
}
func (m *HmacKeyFormat) XXX_DiscardUnknown() {
	xxx_messageInfo_HmacKeyFormat.DiscardUnknown(m)
}

var xxx_messageInfo_HmacKeyFormat proto.InternalMessageInfo

func (m *HmacKeyFormat) GetParams() *HmacParams {
	if m != nil {
		return m.Params
	}
	return nil
}

func (m *HmacKeyFormat) GetKeySize() uint32 {
	if m != nil {
		return m.KeySize
	}
	return 0
}

func (m *HmacKeyFormat) GetVersion() uint32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func init() {
	proto.RegisterType((*HmacParams)(nil), "google.crypto.tink.HmacParams")
	proto.RegisterType((*HmacKey)(nil), "google.crypto.tink.HmacKey")
	proto.RegisterType((*HmacKeyFormat)(nil), "google.crypto.tink.HmacKeyFormat")
}

func init() {
	proto.RegisterFile("proto/hmac.proto", fileDescriptor_310803c785e2f4dc)
}

var fileDescriptor_310803c785e2f4dc = []byte{
	// 309 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xc1, 0x4e, 0x32, 0x31,
	0x1c, 0xc4, 0xb3, 0xf0, 0x05, 0xf8, 0xfe, 0x8a, 0x87, 0x9e, 0x16, 0x25, 0x06, 0xf1, 0x42, 0x3c,
	0xec, 0x1a, 0x4c, 0x7c, 0x00, 0x0e, 0x06, 0x43, 0x62, 0xc8, 0x8a, 0x26, 0x7a, 0xd9, 0x94, 0xda,
	0xb4, 0xcd, 0x52, 0xfe, 0x9b, 0x6e, 0x21, 0x96, 0xf8, 0x34, 0x3e, 0xa9, 0xd9, 0x82, 0x06, 0x14,
	0x0f, 0xde, 0x3a, 0xc9, 0xcc, 0xfc, 0x3a, 0x2d, 0x9c, 0x59, 0xa9, 0xcc, 0x4b, 0x9a, 0x53, 0x63,
	0x5d, 0x6c, 0xd5, 0x3c, 0x8b, 0x73, 0x83, 0x16, 0x63, 0xa9, 0x29, 0x8b, 0xfc, 0x91, 0x10, 0x81,
	0x28, 0x66, 0x3c, 0x62, 0xc6, 0xe5, 0x16, 0xa3, 0xd2, 0x74, 0x7c, 0xfe, 0x4b, 0x8c, 0xa1, 0xd6,
	0x38, 0x5f, 0x07, 0xbb, 0x4f, 0x00, 0x43, 0x4d, 0xd9, 0x98, 0x1a, 0xaa, 0x0b, 0x72, 0x09, 0xff,
	0x24, 0x2d, 0x64, 0x18, 0x74, 0x82, 0xde, 0x51, 0xbf, 0x1d, 0xfd, 0x6c, 0x8d, 0x86, 0xb4, 0x90,
	0x13, 0x97, 0xf3, 0xc4, 0x3b, 0x49, 0x0b, 0x1a, 0x96, 0x8a, 0xb4, 0x50, 0x2b, 0x1e, 0x56, 0x3a,
	0x41, 0xaf, 0x99, 0xd4, 0x2d, 0x15, 0xf7, 0x6a, 0xc5, 0xbb, 0xaf, 0x50, 0x2f, 0xab, 0x47, 0xdc,
	0x91, 0x10, 0xea, 0x4b, 0x6e, 0x0a, 0x85, 0x73, 0x5f, 0xdd, 0x4c, 0x3e, 0x25, 0xb9, 0x86, 0x5a,
	0xee, 0xd9, 0x3e, 0x7d, 0xd0, 0x3f, 0xdd, 0xcb, 0xfc, 0xba, 0x61, 0xb2, 0x71, 0x93, 0x13, 0xf8,
	0x9f, 0x71, 0x97, 0x2e, 0xe9, 0x6c, 0xc1, 0xc3, 0x6a, 0x27, 0xe8, 0x1d, 0x26, 0x8d, 0x8c, 0xbb,
	0xc7, 0x52, 0x77, 0xdf, 0xa0, 0xb9, 0x21, 0xdf, 0xa0, 0xd1, 0xd4, 0x6e, 0x51, 0x82, 0x3f, 0x51,
	0x5a, 0x50, 0x96, 0xee, 0xac, 0xcb, 0xb8, 0x2b, 0xd7, 0x6d, 0x4f, 0xaa, 0xee, 0x4c, 0x1a, 0x3c,
	0x40, 0x9b, 0xa1, 0xde, 0x47, 0xf0, 0x4f, 0x3e, 0x0e, 0x9e, 0x2f, 0x84, 0xb2, 0x72, 0x31, 0x8d,
	0x18, 0xea, 0x78, 0x6d, 0xfb, 0xfe, 0xad, 0xa9, 0xc0, 0xd4, 0xab, 0xf7, 0x4a, 0x6d, 0x72, 0x7b,
	0x37, 0x1a, 0x0f, 0xa6, 0x35, 0xaf, 0xaf, 0x3e, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb4, 0x4a, 0x44,
	0xc9, 0x0e, 0x02, 0x00, 0x00,
}
