1
0
mirror of https://github.com/chris124567/hulu synced 2024-11-22 16:17:30 +00:00
hulu/widevine/wv_proto2.pb.go

5731 lines
223 KiB
Go
Raw Normal View History

2021-11-20 18:53:30 +00:00
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0-devel
// protoc v3.12.4
// source: wv_proto2.proto
package widevine
import (
reflect "reflect"
sync "sync"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
2021-11-20 18:53:30 +00:00
)
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)
)
// todo: fill (for this top-level type, it might be impossible/difficult)
type LicenseType int32
const (
LicenseType_ZERO LicenseType = 0
LicenseType_DEFAULT LicenseType = 1 // 1 is STREAMING/temporary license; on recent versions may go up to 3 (latest x86); it might be persist/don't persist type, unconfirmed
LicenseType_OFFLINE LicenseType = 2
)
// Enum value maps for LicenseType.
var (
LicenseType_name = map[int32]string{
0: "ZERO",
1: "DEFAULT",
2: "OFFLINE",
}
LicenseType_value = map[string]int32{
"ZERO": 0,
"DEFAULT": 1,
"OFFLINE": 2,
}
)
func (x LicenseType) Enum() *LicenseType {
p := new(LicenseType)
*p = x
return p
}
func (x LicenseType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (LicenseType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[0].Descriptor()
}
func (LicenseType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[0]
}
func (x LicenseType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *LicenseType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = LicenseType(num)
return nil
}
// Deprecated: Use LicenseType.Descriptor instead.
func (LicenseType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{0}
}
// todo: fill (for this top-level type, it might be impossible/difficult)
// this is just a guess because these globals got lost, but really, do we need more?
type ProtocolVersion int32
const (
ProtocolVersion_CURRENT ProtocolVersion = 21 // don't have symbols for this
)
// Enum value maps for ProtocolVersion.
var (
ProtocolVersion_name = map[int32]string{
21: "CURRENT",
}
ProtocolVersion_value = map[string]int32{
"CURRENT": 21,
}
)
func (x ProtocolVersion) Enum() *ProtocolVersion {
p := new(ProtocolVersion)
*p = x
return p
}
func (x ProtocolVersion) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ProtocolVersion) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[1].Descriptor()
}
func (ProtocolVersion) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[1]
}
func (x ProtocolVersion) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ProtocolVersion) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ProtocolVersion(num)
return nil
}
// Deprecated: Use ProtocolVersion.Descriptor instead.
func (ProtocolVersion) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{1}
}
type ClientIdentification_TokenType int32
const (
ClientIdentification_KEYBOX ClientIdentification_TokenType = 0
ClientIdentification_DEVICE_CERTIFICATE ClientIdentification_TokenType = 1
ClientIdentification_REMOTE_ATTESTATION_CERTIFICATE ClientIdentification_TokenType = 2
)
// Enum value maps for ClientIdentification_TokenType.
var (
ClientIdentification_TokenType_name = map[int32]string{
0: "KEYBOX",
1: "DEVICE_CERTIFICATE",
2: "REMOTE_ATTESTATION_CERTIFICATE",
}
ClientIdentification_TokenType_value = map[string]int32{
"KEYBOX": 0,
"DEVICE_CERTIFICATE": 1,
"REMOTE_ATTESTATION_CERTIFICATE": 2,
}
)
func (x ClientIdentification_TokenType) Enum() *ClientIdentification_TokenType {
p := new(ClientIdentification_TokenType)
*p = x
return p
}
func (x ClientIdentification_TokenType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ClientIdentification_TokenType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[2].Descriptor()
}
func (ClientIdentification_TokenType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[2]
}
func (x ClientIdentification_TokenType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ClientIdentification_TokenType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ClientIdentification_TokenType(num)
return nil
}
// Deprecated: Use ClientIdentification_TokenType.Descriptor instead.
func (ClientIdentification_TokenType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{0, 0}
}
type ClientIdentification_ClientCapabilities_HdcpVersion int32
const (
ClientIdentification_ClientCapabilities_HDCP_NONE ClientIdentification_ClientCapabilities_HdcpVersion = 0
ClientIdentification_ClientCapabilities_HDCP_V1 ClientIdentification_ClientCapabilities_HdcpVersion = 1
ClientIdentification_ClientCapabilities_HDCP_V2 ClientIdentification_ClientCapabilities_HdcpVersion = 2
ClientIdentification_ClientCapabilities_HDCP_V2_1 ClientIdentification_ClientCapabilities_HdcpVersion = 3
ClientIdentification_ClientCapabilities_HDCP_V2_2 ClientIdentification_ClientCapabilities_HdcpVersion = 4
)
// Enum value maps for ClientIdentification_ClientCapabilities_HdcpVersion.
var (
ClientIdentification_ClientCapabilities_HdcpVersion_name = map[int32]string{
0: "HDCP_NONE",
1: "HDCP_V1",
2: "HDCP_V2",
3: "HDCP_V2_1",
4: "HDCP_V2_2",
}
ClientIdentification_ClientCapabilities_HdcpVersion_value = map[string]int32{
"HDCP_NONE": 0,
"HDCP_V1": 1,
"HDCP_V2": 2,
"HDCP_V2_1": 3,
"HDCP_V2_2": 4,
}
)
func (x ClientIdentification_ClientCapabilities_HdcpVersion) Enum() *ClientIdentification_ClientCapabilities_HdcpVersion {
p := new(ClientIdentification_ClientCapabilities_HdcpVersion)
*p = x
return p
}
func (x ClientIdentification_ClientCapabilities_HdcpVersion) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ClientIdentification_ClientCapabilities_HdcpVersion) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[3].Descriptor()
}
func (ClientIdentification_ClientCapabilities_HdcpVersion) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[3]
}
func (x ClientIdentification_ClientCapabilities_HdcpVersion) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ClientIdentification_ClientCapabilities_HdcpVersion) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ClientIdentification_ClientCapabilities_HdcpVersion(num)
return nil
}
// Deprecated: Use ClientIdentification_ClientCapabilities_HdcpVersion.Descriptor instead.
func (ClientIdentification_ClientCapabilities_HdcpVersion) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{0, 1, 0}
}
type DeviceCertificate_CertificateType int32
const (
DeviceCertificate_ROOT DeviceCertificate_CertificateType = 0
DeviceCertificate_INTERMEDIATE DeviceCertificate_CertificateType = 1
DeviceCertificate_USER_DEVICE DeviceCertificate_CertificateType = 2
DeviceCertificate_SERVICE DeviceCertificate_CertificateType = 3
)
// Enum value maps for DeviceCertificate_CertificateType.
var (
DeviceCertificate_CertificateType_name = map[int32]string{
0: "ROOT",
1: "INTERMEDIATE",
2: "USER_DEVICE",
3: "SERVICE",
}
DeviceCertificate_CertificateType_value = map[string]int32{
"ROOT": 0,
"INTERMEDIATE": 1,
"USER_DEVICE": 2,
"SERVICE": 3,
}
)
func (x DeviceCertificate_CertificateType) Enum() *DeviceCertificate_CertificateType {
p := new(DeviceCertificate_CertificateType)
*p = x
return p
}
func (x DeviceCertificate_CertificateType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (DeviceCertificate_CertificateType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[4].Descriptor()
}
func (DeviceCertificate_CertificateType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[4]
}
func (x DeviceCertificate_CertificateType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *DeviceCertificate_CertificateType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = DeviceCertificate_CertificateType(num)
return nil
}
// Deprecated: Use DeviceCertificate_CertificateType.Descriptor instead.
func (DeviceCertificate_CertificateType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{1, 0}
}
type DeviceCertificateStatus_CertificateStatus int32
const (
DeviceCertificateStatus_VALID DeviceCertificateStatus_CertificateStatus = 0
DeviceCertificateStatus_REVOKED DeviceCertificateStatus_CertificateStatus = 1
)
// Enum value maps for DeviceCertificateStatus_CertificateStatus.
var (
DeviceCertificateStatus_CertificateStatus_name = map[int32]string{
0: "VALID",
1: "REVOKED",
}
DeviceCertificateStatus_CertificateStatus_value = map[string]int32{
"VALID": 0,
"REVOKED": 1,
}
)
func (x DeviceCertificateStatus_CertificateStatus) Enum() *DeviceCertificateStatus_CertificateStatus {
p := new(DeviceCertificateStatus_CertificateStatus)
*p = x
return p
}
func (x DeviceCertificateStatus_CertificateStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (DeviceCertificateStatus_CertificateStatus) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[5].Descriptor()
}
func (DeviceCertificateStatus_CertificateStatus) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[5]
}
func (x DeviceCertificateStatus_CertificateStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *DeviceCertificateStatus_CertificateStatus) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = DeviceCertificateStatus_CertificateStatus(num)
return nil
}
// Deprecated: Use DeviceCertificateStatus_CertificateStatus.Descriptor instead.
func (DeviceCertificateStatus_CertificateStatus) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{2, 0}
}
type License_KeyContainer_KeyType int32
const (
License_KeyContainer_SIGNING License_KeyContainer_KeyType = 1
License_KeyContainer_CONTENT License_KeyContainer_KeyType = 2
License_KeyContainer_KEY_CONTROL License_KeyContainer_KeyType = 3
License_KeyContainer_OPERATOR_SESSION License_KeyContainer_KeyType = 4
)
// Enum value maps for License_KeyContainer_KeyType.
var (
License_KeyContainer_KeyType_name = map[int32]string{
1: "SIGNING",
2: "CONTENT",
3: "KEY_CONTROL",
4: "OPERATOR_SESSION",
}
License_KeyContainer_KeyType_value = map[string]int32{
"SIGNING": 1,
"CONTENT": 2,
"KEY_CONTROL": 3,
"OPERATOR_SESSION": 4,
}
)
func (x License_KeyContainer_KeyType) Enum() *License_KeyContainer_KeyType {
p := new(License_KeyContainer_KeyType)
*p = x
return p
}
func (x License_KeyContainer_KeyType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (License_KeyContainer_KeyType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[6].Descriptor()
}
func (License_KeyContainer_KeyType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[6]
}
func (x License_KeyContainer_KeyType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *License_KeyContainer_KeyType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = License_KeyContainer_KeyType(num)
return nil
}
// Deprecated: Use License_KeyContainer_KeyType.Descriptor instead.
func (License_KeyContainer_KeyType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 0}
}
type License_KeyContainer_SecurityLevel int32
const (
License_KeyContainer_SW_SECURE_CRYPTO License_KeyContainer_SecurityLevel = 1
License_KeyContainer_SW_SECURE_DECODE License_KeyContainer_SecurityLevel = 2
License_KeyContainer_HW_SECURE_CRYPTO License_KeyContainer_SecurityLevel = 3
License_KeyContainer_HW_SECURE_DECODE License_KeyContainer_SecurityLevel = 4
License_KeyContainer_HW_SECURE_ALL License_KeyContainer_SecurityLevel = 5
)
// Enum value maps for License_KeyContainer_SecurityLevel.
var (
License_KeyContainer_SecurityLevel_name = map[int32]string{
1: "SW_SECURE_CRYPTO",
2: "SW_SECURE_DECODE",
3: "HW_SECURE_CRYPTO",
4: "HW_SECURE_DECODE",
5: "HW_SECURE_ALL",
}
License_KeyContainer_SecurityLevel_value = map[string]int32{
"SW_SECURE_CRYPTO": 1,
"SW_SECURE_DECODE": 2,
"HW_SECURE_CRYPTO": 3,
"HW_SECURE_DECODE": 4,
"HW_SECURE_ALL": 5,
}
)
func (x License_KeyContainer_SecurityLevel) Enum() *License_KeyContainer_SecurityLevel {
p := new(License_KeyContainer_SecurityLevel)
*p = x
return p
}
func (x License_KeyContainer_SecurityLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (License_KeyContainer_SecurityLevel) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[7].Descriptor()
}
func (License_KeyContainer_SecurityLevel) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[7]
}
func (x License_KeyContainer_SecurityLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *License_KeyContainer_SecurityLevel) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = License_KeyContainer_SecurityLevel(num)
return nil
}
// Deprecated: Use License_KeyContainer_SecurityLevel.Descriptor instead.
func (License_KeyContainer_SecurityLevel) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 1}
}
type License_KeyContainer_OutputProtection_CGMS int32
const (
License_KeyContainer_OutputProtection_COPY_FREE License_KeyContainer_OutputProtection_CGMS = 0
License_KeyContainer_OutputProtection_COPY_ONCE License_KeyContainer_OutputProtection_CGMS = 2
License_KeyContainer_OutputProtection_COPY_NEVER License_KeyContainer_OutputProtection_CGMS = 3
License_KeyContainer_OutputProtection_CGMS_NONE License_KeyContainer_OutputProtection_CGMS = 42 // PC default!
)
// Enum value maps for License_KeyContainer_OutputProtection_CGMS.
var (
License_KeyContainer_OutputProtection_CGMS_name = map[int32]string{
0: "COPY_FREE",
2: "COPY_ONCE",
3: "COPY_NEVER",
42: "CGMS_NONE",
}
License_KeyContainer_OutputProtection_CGMS_value = map[string]int32{
"COPY_FREE": 0,
"COPY_ONCE": 2,
"COPY_NEVER": 3,
"CGMS_NONE": 42,
}
)
func (x License_KeyContainer_OutputProtection_CGMS) Enum() *License_KeyContainer_OutputProtection_CGMS {
p := new(License_KeyContainer_OutputProtection_CGMS)
*p = x
return p
}
func (x License_KeyContainer_OutputProtection_CGMS) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (License_KeyContainer_OutputProtection_CGMS) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[8].Descriptor()
}
func (License_KeyContainer_OutputProtection_CGMS) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[8]
}
func (x License_KeyContainer_OutputProtection_CGMS) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *License_KeyContainer_OutputProtection_CGMS) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = License_KeyContainer_OutputProtection_CGMS(num)
return nil
}
// Deprecated: Use License_KeyContainer_OutputProtection_CGMS.Descriptor instead.
func (License_KeyContainer_OutputProtection_CGMS) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 0, 0}
}
type LicenseError_Error int32
const (
LicenseError_INVALID_DEVICE_CERTIFICATE LicenseError_Error = 1
LicenseError_REVOKED_DEVICE_CERTIFICATE LicenseError_Error = 2
LicenseError_SERVICE_UNAVAILABLE LicenseError_Error = 3
)
// Enum value maps for LicenseError_Error.
var (
LicenseError_Error_name = map[int32]string{
1: "INVALID_DEVICE_CERTIFICATE",
2: "REVOKED_DEVICE_CERTIFICATE",
3: "SERVICE_UNAVAILABLE",
}
LicenseError_Error_value = map[string]int32{
"INVALID_DEVICE_CERTIFICATE": 1,
"REVOKED_DEVICE_CERTIFICATE": 2,
"SERVICE_UNAVAILABLE": 3,
}
)
func (x LicenseError_Error) Enum() *LicenseError_Error {
p := new(LicenseError_Error)
*p = x
return p
}
func (x LicenseError_Error) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (LicenseError_Error) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[9].Descriptor()
}
func (LicenseError_Error) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[9]
}
func (x LicenseError_Error) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *LicenseError_Error) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = LicenseError_Error(num)
return nil
}
// Deprecated: Use LicenseError_Error.Descriptor instead.
func (LicenseError_Error) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{7, 0}
}
type LicenseRequest_RequestType int32
const (
LicenseRequest_NEW LicenseRequest_RequestType = 1
LicenseRequest_RENEWAL LicenseRequest_RequestType = 2
LicenseRequest_RELEASE LicenseRequest_RequestType = 3
)
// Enum value maps for LicenseRequest_RequestType.
var (
LicenseRequest_RequestType_name = map[int32]string{
1: "NEW",
2: "RENEWAL",
3: "RELEASE",
}
LicenseRequest_RequestType_value = map[string]int32{
"NEW": 1,
"RENEWAL": 2,
"RELEASE": 3,
}
)
func (x LicenseRequest_RequestType) Enum() *LicenseRequest_RequestType {
p := new(LicenseRequest_RequestType)
*p = x
return p
}
func (x LicenseRequest_RequestType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (LicenseRequest_RequestType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[10].Descriptor()
}
func (LicenseRequest_RequestType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[10]
}
func (x LicenseRequest_RequestType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *LicenseRequest_RequestType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = LicenseRequest_RequestType(num)
return nil
}
// Deprecated: Use LicenseRequest_RequestType.Descriptor instead.
func (LicenseRequest_RequestType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{8, 0}
}
type LicenseRequestRaw_RequestType int32
const (
LicenseRequestRaw_NEW LicenseRequestRaw_RequestType = 1
LicenseRequestRaw_RENEWAL LicenseRequestRaw_RequestType = 2
LicenseRequestRaw_RELEASE LicenseRequestRaw_RequestType = 3
)
// Enum value maps for LicenseRequestRaw_RequestType.
var (
LicenseRequestRaw_RequestType_name = map[int32]string{
1: "NEW",
2: "RENEWAL",
3: "RELEASE",
}
LicenseRequestRaw_RequestType_value = map[string]int32{
"NEW": 1,
"RENEWAL": 2,
"RELEASE": 3,
}
)
func (x LicenseRequestRaw_RequestType) Enum() *LicenseRequestRaw_RequestType {
p := new(LicenseRequestRaw_RequestType)
*p = x
return p
}
func (x LicenseRequestRaw_RequestType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (LicenseRequestRaw_RequestType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[11].Descriptor()
}
func (LicenseRequestRaw_RequestType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[11]
}
func (x LicenseRequestRaw_RequestType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *LicenseRequestRaw_RequestType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = LicenseRequestRaw_RequestType(num)
return nil
}
// Deprecated: Use LicenseRequestRaw_RequestType.Descriptor instead.
func (LicenseRequestRaw_RequestType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{9, 0}
}
type ProvisionedDeviceInfo_WvSecurityLevel int32
const (
ProvisionedDeviceInfo_LEVEL_UNSPECIFIED ProvisionedDeviceInfo_WvSecurityLevel = 0
ProvisionedDeviceInfo_LEVEL_1 ProvisionedDeviceInfo_WvSecurityLevel = 1
ProvisionedDeviceInfo_LEVEL_2 ProvisionedDeviceInfo_WvSecurityLevel = 2
ProvisionedDeviceInfo_LEVEL_3 ProvisionedDeviceInfo_WvSecurityLevel = 3
)
// Enum value maps for ProvisionedDeviceInfo_WvSecurityLevel.
var (
ProvisionedDeviceInfo_WvSecurityLevel_name = map[int32]string{
0: "LEVEL_UNSPECIFIED",
1: "LEVEL_1",
2: "LEVEL_2",
3: "LEVEL_3",
}
ProvisionedDeviceInfo_WvSecurityLevel_value = map[string]int32{
"LEVEL_UNSPECIFIED": 0,
"LEVEL_1": 1,
"LEVEL_2": 2,
"LEVEL_3": 3,
}
)
func (x ProvisionedDeviceInfo_WvSecurityLevel) Enum() *ProvisionedDeviceInfo_WvSecurityLevel {
p := new(ProvisionedDeviceInfo_WvSecurityLevel)
*p = x
return p
}
func (x ProvisionedDeviceInfo_WvSecurityLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ProvisionedDeviceInfo_WvSecurityLevel) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[12].Descriptor()
}
func (ProvisionedDeviceInfo_WvSecurityLevel) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[12]
}
func (x ProvisionedDeviceInfo_WvSecurityLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ProvisionedDeviceInfo_WvSecurityLevel) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ProvisionedDeviceInfo_WvSecurityLevel(num)
return nil
}
// Deprecated: Use ProvisionedDeviceInfo_WvSecurityLevel.Descriptor instead.
func (ProvisionedDeviceInfo_WvSecurityLevel) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{10, 0}
}
type SignedMessage_MessageType int32
const (
SignedMessage_LICENSE_REQUEST SignedMessage_MessageType = 1
SignedMessage_LICENSE SignedMessage_MessageType = 2
SignedMessage_ERROR_RESPONSE SignedMessage_MessageType = 3
SignedMessage_SERVICE_CERTIFICATE_REQUEST SignedMessage_MessageType = 4
SignedMessage_SERVICE_CERTIFICATE SignedMessage_MessageType = 5
)
// Enum value maps for SignedMessage_MessageType.
var (
SignedMessage_MessageType_name = map[int32]string{
1: "LICENSE_REQUEST",
2: "LICENSE",
3: "ERROR_RESPONSE",
4: "SERVICE_CERTIFICATE_REQUEST",
5: "SERVICE_CERTIFICATE",
}
SignedMessage_MessageType_value = map[string]int32{
"LICENSE_REQUEST": 1,
"LICENSE": 2,
"ERROR_RESPONSE": 3,
"SERVICE_CERTIFICATE_REQUEST": 4,
"SERVICE_CERTIFICATE": 5,
}
)
func (x SignedMessage_MessageType) Enum() *SignedMessage_MessageType {
p := new(SignedMessage_MessageType)
*p = x
return p
}
func (x SignedMessage_MessageType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SignedMessage_MessageType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[13].Descriptor()
}
func (SignedMessage_MessageType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[13]
}
func (x SignedMessage_MessageType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SignedMessage_MessageType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SignedMessage_MessageType(num)
return nil
}
// Deprecated: Use SignedMessage_MessageType.Descriptor instead.
func (SignedMessage_MessageType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{20, 0}
}
type WidevineCencHeader_Algorithm int32
const (
WidevineCencHeader_UNENCRYPTED WidevineCencHeader_Algorithm = 0
WidevineCencHeader_AESCTR WidevineCencHeader_Algorithm = 1
)
// Enum value maps for WidevineCencHeader_Algorithm.
var (
WidevineCencHeader_Algorithm_name = map[int32]string{
0: "UNENCRYPTED",
1: "AESCTR",
}
WidevineCencHeader_Algorithm_value = map[string]int32{
"UNENCRYPTED": 0,
"AESCTR": 1,
}
)
func (x WidevineCencHeader_Algorithm) Enum() *WidevineCencHeader_Algorithm {
p := new(WidevineCencHeader_Algorithm)
*p = x
return p
}
func (x WidevineCencHeader_Algorithm) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (WidevineCencHeader_Algorithm) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[14].Descriptor()
}
func (WidevineCencHeader_Algorithm) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[14]
}
func (x WidevineCencHeader_Algorithm) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *WidevineCencHeader_Algorithm) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = WidevineCencHeader_Algorithm(num)
return nil
}
// Deprecated: Use WidevineCencHeader_Algorithm.Descriptor instead.
func (WidevineCencHeader_Algorithm) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{21, 0}
}
type SignedLicenseRequest_MessageType int32
const (
SignedLicenseRequest_LICENSE_REQUEST SignedLicenseRequest_MessageType = 1
SignedLicenseRequest_LICENSE SignedLicenseRequest_MessageType = 2
SignedLicenseRequest_ERROR_RESPONSE SignedLicenseRequest_MessageType = 3
SignedLicenseRequest_SERVICE_CERTIFICATE_REQUEST SignedLicenseRequest_MessageType = 4
SignedLicenseRequest_SERVICE_CERTIFICATE SignedLicenseRequest_MessageType = 5
)
// Enum value maps for SignedLicenseRequest_MessageType.
var (
SignedLicenseRequest_MessageType_name = map[int32]string{
1: "LICENSE_REQUEST",
2: "LICENSE",
3: "ERROR_RESPONSE",
4: "SERVICE_CERTIFICATE_REQUEST",
5: "SERVICE_CERTIFICATE",
}
SignedLicenseRequest_MessageType_value = map[string]int32{
"LICENSE_REQUEST": 1,
"LICENSE": 2,
"ERROR_RESPONSE": 3,
"SERVICE_CERTIFICATE_REQUEST": 4,
"SERVICE_CERTIFICATE": 5,
}
)
func (x SignedLicenseRequest_MessageType) Enum() *SignedLicenseRequest_MessageType {
p := new(SignedLicenseRequest_MessageType)
*p = x
return p
}
func (x SignedLicenseRequest_MessageType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SignedLicenseRequest_MessageType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[15].Descriptor()
}
func (SignedLicenseRequest_MessageType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[15]
}
func (x SignedLicenseRequest_MessageType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SignedLicenseRequest_MessageType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SignedLicenseRequest_MessageType(num)
return nil
}
// Deprecated: Use SignedLicenseRequest_MessageType.Descriptor instead.
func (SignedLicenseRequest_MessageType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{22, 0}
}
type SignedLicenseRequestRaw_MessageType int32
const (
SignedLicenseRequestRaw_LICENSE_REQUEST SignedLicenseRequestRaw_MessageType = 1
SignedLicenseRequestRaw_LICENSE SignedLicenseRequestRaw_MessageType = 2
SignedLicenseRequestRaw_ERROR_RESPONSE SignedLicenseRequestRaw_MessageType = 3
SignedLicenseRequestRaw_SERVICE_CERTIFICATE_REQUEST SignedLicenseRequestRaw_MessageType = 4
SignedLicenseRequestRaw_SERVICE_CERTIFICATE SignedLicenseRequestRaw_MessageType = 5
)
// Enum value maps for SignedLicenseRequestRaw_MessageType.
var (
SignedLicenseRequestRaw_MessageType_name = map[int32]string{
1: "LICENSE_REQUEST",
2: "LICENSE",
3: "ERROR_RESPONSE",
4: "SERVICE_CERTIFICATE_REQUEST",
5: "SERVICE_CERTIFICATE",
}
SignedLicenseRequestRaw_MessageType_value = map[string]int32{
"LICENSE_REQUEST": 1,
"LICENSE": 2,
"ERROR_RESPONSE": 3,
"SERVICE_CERTIFICATE_REQUEST": 4,
"SERVICE_CERTIFICATE": 5,
}
)
func (x SignedLicenseRequestRaw_MessageType) Enum() *SignedLicenseRequestRaw_MessageType {
p := new(SignedLicenseRequestRaw_MessageType)
*p = x
return p
}
func (x SignedLicenseRequestRaw_MessageType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SignedLicenseRequestRaw_MessageType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[16].Descriptor()
}
func (SignedLicenseRequestRaw_MessageType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[16]
}
func (x SignedLicenseRequestRaw_MessageType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SignedLicenseRequestRaw_MessageType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SignedLicenseRequestRaw_MessageType(num)
return nil
}
// Deprecated: Use SignedLicenseRequestRaw_MessageType.Descriptor instead.
func (SignedLicenseRequestRaw_MessageType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{23, 0}
}
type SignedLicense_MessageType int32
const (
SignedLicense_LICENSE_REQUEST SignedLicense_MessageType = 1
SignedLicense_LICENSE SignedLicense_MessageType = 2
SignedLicense_ERROR_RESPONSE SignedLicense_MessageType = 3
SignedLicense_SERVICE_CERTIFICATE_REQUEST SignedLicense_MessageType = 4
SignedLicense_SERVICE_CERTIFICATE SignedLicense_MessageType = 5
)
// Enum value maps for SignedLicense_MessageType.
var (
SignedLicense_MessageType_name = map[int32]string{
1: "LICENSE_REQUEST",
2: "LICENSE",
3: "ERROR_RESPONSE",
4: "SERVICE_CERTIFICATE_REQUEST",
5: "SERVICE_CERTIFICATE",
}
SignedLicense_MessageType_value = map[string]int32{
"LICENSE_REQUEST": 1,
"LICENSE": 2,
"ERROR_RESPONSE": 3,
"SERVICE_CERTIFICATE_REQUEST": 4,
"SERVICE_CERTIFICATE": 5,
}
)
func (x SignedLicense_MessageType) Enum() *SignedLicense_MessageType {
p := new(SignedLicense_MessageType)
*p = x
return p
}
func (x SignedLicense_MessageType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SignedLicense_MessageType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[17].Descriptor()
}
func (SignedLicense_MessageType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[17]
}
func (x SignedLicense_MessageType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SignedLicense_MessageType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SignedLicense_MessageType(num)
return nil
}
// Deprecated: Use SignedLicense_MessageType.Descriptor instead.
func (SignedLicense_MessageType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{24, 0}
}
type SignedServiceCertificate_MessageType int32
const (
SignedServiceCertificate_LICENSE_REQUEST SignedServiceCertificate_MessageType = 1
SignedServiceCertificate_LICENSE SignedServiceCertificate_MessageType = 2
SignedServiceCertificate_ERROR_RESPONSE SignedServiceCertificate_MessageType = 3
SignedServiceCertificate_SERVICE_CERTIFICATE_REQUEST SignedServiceCertificate_MessageType = 4
SignedServiceCertificate_SERVICE_CERTIFICATE SignedServiceCertificate_MessageType = 5
)
// Enum value maps for SignedServiceCertificate_MessageType.
var (
SignedServiceCertificate_MessageType_name = map[int32]string{
1: "LICENSE_REQUEST",
2: "LICENSE",
3: "ERROR_RESPONSE",
4: "SERVICE_CERTIFICATE_REQUEST",
5: "SERVICE_CERTIFICATE",
}
SignedServiceCertificate_MessageType_value = map[string]int32{
"LICENSE_REQUEST": 1,
"LICENSE": 2,
"ERROR_RESPONSE": 3,
"SERVICE_CERTIFICATE_REQUEST": 4,
"SERVICE_CERTIFICATE": 5,
}
)
func (x SignedServiceCertificate_MessageType) Enum() *SignedServiceCertificate_MessageType {
p := new(SignedServiceCertificate_MessageType)
*p = x
return p
}
func (x SignedServiceCertificate_MessageType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SignedServiceCertificate_MessageType) Descriptor() protoreflect.EnumDescriptor {
return file_wv_proto2_proto_enumTypes[18].Descriptor()
}
func (SignedServiceCertificate_MessageType) Type() protoreflect.EnumType {
return &file_wv_proto2_proto_enumTypes[18]
}
func (x SignedServiceCertificate_MessageType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SignedServiceCertificate_MessageType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SignedServiceCertificate_MessageType(num)
return nil
}
// Deprecated: Use SignedServiceCertificate_MessageType.Descriptor instead.
func (SignedServiceCertificate_MessageType) EnumDescriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{25, 0}
}
// from x86 (partial), most of it from the ARM version:
type ClientIdentification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *ClientIdentification_TokenType `protobuf:"varint,1,req,name=Type,enum=ClientIdentification_TokenType" json:"Type,omitempty"`
//optional bytes Token = 2; // by default the client treats this as blob, but it's usually a DeviceCertificate, so for usefulness sake, I'm replacing it with this one:
Token *SignedDeviceCertificate `protobuf:"bytes,2,opt,name=Token" json:"Token,omitempty"` // use this when parsing, "bytes" when building a client id blob
ClientInfo []*ClientIdentification_NameValue `protobuf:"bytes,3,rep,name=ClientInfo" json:"ClientInfo,omitempty"`
ProviderClientToken []byte `protobuf:"bytes,4,opt,name=ProviderClientToken" json:"ProviderClientToken,omitempty"`
LicenseCounter *uint32 `protobuf:"varint,5,opt,name=LicenseCounter" json:"LicenseCounter,omitempty"`
XClientCapabilities *ClientIdentification_ClientCapabilities `protobuf:"bytes,6,opt,name=_ClientCapabilities,json=ClientCapabilities" json:"_ClientCapabilities,omitempty"` // how should we deal with duped names? will have to look at proto docs later
XFileHashes *FileHashes `protobuf:"bytes,7,opt,name=_FileHashes,json=FileHashes" json:"_FileHashes,omitempty"` // vmp blob goes here
}
func (x *ClientIdentification) Reset() {
*x = ClientIdentification{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClientIdentification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClientIdentification) ProtoMessage() {}
func (x *ClientIdentification) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ClientIdentification.ProtoReflect.Descriptor instead.
func (*ClientIdentification) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{0}
}
func (x *ClientIdentification) GetType() ClientIdentification_TokenType {
if x != nil && x.Type != nil {
return *x.Type
}
return ClientIdentification_KEYBOX
}
func (x *ClientIdentification) GetToken() *SignedDeviceCertificate {
if x != nil {
return x.Token
}
return nil
}
func (x *ClientIdentification) GetClientInfo() []*ClientIdentification_NameValue {
if x != nil {
return x.ClientInfo
}
return nil
}
func (x *ClientIdentification) GetProviderClientToken() []byte {
if x != nil {
return x.ProviderClientToken
}
return nil
}
func (x *ClientIdentification) GetLicenseCounter() uint32 {
if x != nil && x.LicenseCounter != nil {
return *x.LicenseCounter
}
return 0
}
func (x *ClientIdentification) GetXClientCapabilities() *ClientIdentification_ClientCapabilities {
if x != nil {
return x.XClientCapabilities
}
return nil
}
func (x *ClientIdentification) GetXFileHashes() *FileHashes {
if x != nil {
return x.XFileHashes
}
return nil
}
type DeviceCertificate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *DeviceCertificate_CertificateType `protobuf:"varint,1,req,name=Type,enum=DeviceCertificate_CertificateType" json:"Type,omitempty"` // the compiled code reused this as ProvisionedDeviceInfo.WvSecurityLevel, however that is incorrect (compiler aliased it as they're both identical as a structure)
SerialNumber []byte `protobuf:"bytes,2,opt,name=SerialNumber" json:"SerialNumber,omitempty"`
CreationTimeSeconds *uint32 `protobuf:"varint,3,opt,name=CreationTimeSeconds" json:"CreationTimeSeconds,omitempty"`
PublicKey []byte `protobuf:"bytes,4,opt,name=PublicKey" json:"PublicKey,omitempty"`
SystemId *uint32 `protobuf:"varint,5,opt,name=SystemId" json:"SystemId,omitempty"`
TestDeviceDeprecated *uint32 `protobuf:"varint,6,opt,name=TestDeviceDeprecated" json:"TestDeviceDeprecated,omitempty"` // is it bool or int?
ServiceId []byte `protobuf:"bytes,7,opt,name=ServiceId" json:"ServiceId,omitempty"` // service URL for service certificates
}
func (x *DeviceCertificate) Reset() {
*x = DeviceCertificate{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceCertificate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceCertificate) ProtoMessage() {}
func (x *DeviceCertificate) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 DeviceCertificate.ProtoReflect.Descriptor instead.
func (*DeviceCertificate) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{1}
}
func (x *DeviceCertificate) GetType() DeviceCertificate_CertificateType {
if x != nil && x.Type != nil {
return *x.Type
}
return DeviceCertificate_ROOT
}
func (x *DeviceCertificate) GetSerialNumber() []byte {
if x != nil {
return x.SerialNumber
}
return nil
}
func (x *DeviceCertificate) GetCreationTimeSeconds() uint32 {
if x != nil && x.CreationTimeSeconds != nil {
return *x.CreationTimeSeconds
}
return 0
}
func (x *DeviceCertificate) GetPublicKey() []byte {
if x != nil {
return x.PublicKey
}
return nil
}
func (x *DeviceCertificate) GetSystemId() uint32 {
if x != nil && x.SystemId != nil {
return *x.SystemId
}
return 0
}
func (x *DeviceCertificate) GetTestDeviceDeprecated() uint32 {
if x != nil && x.TestDeviceDeprecated != nil {
return *x.TestDeviceDeprecated
}
return 0
}
func (x *DeviceCertificate) GetServiceId() []byte {
if x != nil {
return x.ServiceId
}
return nil
}
// missing some references,
type DeviceCertificateStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SerialNumber []byte `protobuf:"bytes,1,opt,name=SerialNumber" json:"SerialNumber,omitempty"`
Status *DeviceCertificateStatus_CertificateStatus `protobuf:"varint,2,opt,name=Status,enum=DeviceCertificateStatus_CertificateStatus" json:"Status,omitempty"`
DeviceInfo *ProvisionedDeviceInfo `protobuf:"bytes,4,opt,name=DeviceInfo" json:"DeviceInfo,omitempty"` // where is 3? is it deprecated?
}
func (x *DeviceCertificateStatus) Reset() {
*x = DeviceCertificateStatus{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceCertificateStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceCertificateStatus) ProtoMessage() {}
func (x *DeviceCertificateStatus) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 DeviceCertificateStatus.ProtoReflect.Descriptor instead.
func (*DeviceCertificateStatus) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{2}
}
func (x *DeviceCertificateStatus) GetSerialNumber() []byte {
if x != nil {
return x.SerialNumber
}
return nil
}
func (x *DeviceCertificateStatus) GetStatus() DeviceCertificateStatus_CertificateStatus {
if x != nil && x.Status != nil {
return *x.Status
}
return DeviceCertificateStatus_VALID
}
func (x *DeviceCertificateStatus) GetDeviceInfo() *ProvisionedDeviceInfo {
if x != nil {
return x.DeviceInfo
}
return nil
}
type DeviceCertificateStatusList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CreationTimeSeconds *uint32 `protobuf:"varint,1,opt,name=CreationTimeSeconds" json:"CreationTimeSeconds,omitempty"`
CertificateStatus []*DeviceCertificateStatus `protobuf:"bytes,2,rep,name=CertificateStatus" json:"CertificateStatus,omitempty"`
}
func (x *DeviceCertificateStatusList) Reset() {
*x = DeviceCertificateStatusList{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceCertificateStatusList) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceCertificateStatusList) ProtoMessage() {}
func (x *DeviceCertificateStatusList) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 DeviceCertificateStatusList.ProtoReflect.Descriptor instead.
func (*DeviceCertificateStatusList) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{3}
}
func (x *DeviceCertificateStatusList) GetCreationTimeSeconds() uint32 {
if x != nil && x.CreationTimeSeconds != nil {
return *x.CreationTimeSeconds
}
return 0
}
func (x *DeviceCertificateStatusList) GetCertificateStatus() []*DeviceCertificateStatus {
if x != nil {
return x.CertificateStatus
}
return nil
}
type EncryptedClientIdentification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServiceId *string `protobuf:"bytes,1,req,name=ServiceId" json:"ServiceId,omitempty"`
ServiceCertificateSerialNumber []byte `protobuf:"bytes,2,opt,name=ServiceCertificateSerialNumber" json:"ServiceCertificateSerialNumber,omitempty"`
EncryptedClientId []byte `protobuf:"bytes,3,req,name=EncryptedClientId" json:"EncryptedClientId,omitempty"`
EncryptedClientIdIv []byte `protobuf:"bytes,4,req,name=EncryptedClientIdIv" json:"EncryptedClientIdIv,omitempty"`
EncryptedPrivacyKey []byte `protobuf:"bytes,5,req,name=EncryptedPrivacyKey" json:"EncryptedPrivacyKey,omitempty"`
}
func (x *EncryptedClientIdentification) Reset() {
*x = EncryptedClientIdentification{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EncryptedClientIdentification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EncryptedClientIdentification) ProtoMessage() {}
func (x *EncryptedClientIdentification) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 EncryptedClientIdentification.ProtoReflect.Descriptor instead.
func (*EncryptedClientIdentification) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{4}
}
func (x *EncryptedClientIdentification) GetServiceId() string {
if x != nil && x.ServiceId != nil {
return *x.ServiceId
}
return ""
}
func (x *EncryptedClientIdentification) GetServiceCertificateSerialNumber() []byte {
if x != nil {
return x.ServiceCertificateSerialNumber
}
return nil
}
func (x *EncryptedClientIdentification) GetEncryptedClientId() []byte {
if x != nil {
return x.EncryptedClientId
}
return nil
}
func (x *EncryptedClientIdentification) GetEncryptedClientIdIv() []byte {
if x != nil {
return x.EncryptedClientIdIv
}
return nil
}
func (x *EncryptedClientIdentification) GetEncryptedPrivacyKey() []byte {
if x != nil {
return x.EncryptedPrivacyKey
}
return nil
}
type LicenseIdentification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RequestId []byte `protobuf:"bytes,1,opt,name=RequestId" json:"RequestId,omitempty"`
SessionId []byte `protobuf:"bytes,2,opt,name=SessionId" json:"SessionId,omitempty"`
PurchaseId []byte `protobuf:"bytes,3,opt,name=PurchaseId" json:"PurchaseId,omitempty"`
Type *LicenseType `protobuf:"varint,4,opt,name=Type,enum=LicenseType" json:"Type,omitempty"`
Version *uint32 `protobuf:"varint,5,opt,name=Version" json:"Version,omitempty"`
ProviderSessionToken []byte `protobuf:"bytes,6,opt,name=ProviderSessionToken" json:"ProviderSessionToken,omitempty"`
}
func (x *LicenseIdentification) Reset() {
*x = LicenseIdentification{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseIdentification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseIdentification) ProtoMessage() {}
func (x *LicenseIdentification) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 LicenseIdentification.ProtoReflect.Descriptor instead.
func (*LicenseIdentification) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{5}
}
func (x *LicenseIdentification) GetRequestId() []byte {
if x != nil {
return x.RequestId
}
return nil
}
func (x *LicenseIdentification) GetSessionId() []byte {
if x != nil {
return x.SessionId
}
return nil
}
func (x *LicenseIdentification) GetPurchaseId() []byte {
if x != nil {
return x.PurchaseId
}
return nil
}
func (x *LicenseIdentification) GetType() LicenseType {
if x != nil && x.Type != nil {
return *x.Type
}
return LicenseType_ZERO
}
func (x *LicenseIdentification) GetVersion() uint32 {
if x != nil && x.Version != nil {
return *x.Version
}
return 0
}
func (x *LicenseIdentification) GetProviderSessionToken() []byte {
if x != nil {
return x.ProviderSessionToken
}
return nil
}
type License struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id *LicenseIdentification `protobuf:"bytes,1,opt,name=Id" json:"Id,omitempty"`
XPolicy *License_Policy `protobuf:"bytes,2,opt,name=_Policy,json=Policy" json:"_Policy,omitempty"` // duped names, etc
Key []*License_KeyContainer `protobuf:"bytes,3,rep,name=Key" json:"Key,omitempty"`
LicenseStartTime *uint32 `protobuf:"varint,4,opt,name=LicenseStartTime" json:"LicenseStartTime,omitempty"`
RemoteAttestationVerified *uint32 `protobuf:"varint,5,opt,name=RemoteAttestationVerified" json:"RemoteAttestationVerified,omitempty"` // bool?
ProviderClientToken []byte `protobuf:"bytes,6,opt,name=ProviderClientToken" json:"ProviderClientToken,omitempty"`
// there might be more, check with newer versions (I see field 7-8 in a lic)
// this appeared in latest x86:
ProtectionScheme *uint32 `protobuf:"varint,7,opt,name=ProtectionScheme" json:"ProtectionScheme,omitempty"` // type unconfirmed fully, but it's likely as WidevineCencHeader describesit (fourcc)
}
func (x *License) Reset() {
*x = License{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License) ProtoMessage() {}
func (x *License) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 License.ProtoReflect.Descriptor instead.
func (*License) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6}
}
func (x *License) GetId() *LicenseIdentification {
if x != nil {
return x.Id
}
return nil
}
func (x *License) GetXPolicy() *License_Policy {
if x != nil {
return x.XPolicy
}
return nil
}
func (x *License) GetKey() []*License_KeyContainer {
if x != nil {
return x.Key
}
return nil
}
func (x *License) GetLicenseStartTime() uint32 {
if x != nil && x.LicenseStartTime != nil {
return *x.LicenseStartTime
}
return 0
}
func (x *License) GetRemoteAttestationVerified() uint32 {
if x != nil && x.RemoteAttestationVerified != nil {
return *x.RemoteAttestationVerified
}
return 0
}
func (x *License) GetProviderClientToken() []byte {
if x != nil {
return x.ProviderClientToken
}
return nil
}
func (x *License) GetProtectionScheme() uint32 {
if x != nil && x.ProtectionScheme != nil {
return *x.ProtectionScheme
}
return 0
}
type LicenseError struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
//LicenseRequest.RequestType ErrorCode; // clang mismatch
ErrorCode *LicenseError_Error `protobuf:"varint,1,opt,name=ErrorCode,enum=LicenseError_Error" json:"ErrorCode,omitempty"`
}
func (x *LicenseError) Reset() {
*x = LicenseError{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseError) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseError) ProtoMessage() {}
func (x *LicenseError) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 LicenseError.ProtoReflect.Descriptor instead.
func (*LicenseError) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{7}
}
func (x *LicenseError) GetErrorCode() LicenseError_Error {
if x != nil && x.ErrorCode != nil {
return *x.ErrorCode
}
return LicenseError_INVALID_DEVICE_CERTIFICATE
}
type LicenseRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ClientId *ClientIdentification `protobuf:"bytes,1,opt,name=ClientId" json:"ClientId,omitempty"`
ContentId *LicenseRequest_ContentIdentification `protobuf:"bytes,2,opt,name=ContentId" json:"ContentId,omitempty"`
Type *LicenseRequest_RequestType `protobuf:"varint,3,opt,name=Type,enum=LicenseRequest_RequestType" json:"Type,omitempty"`
RequestTime *uint32 `protobuf:"varint,4,opt,name=RequestTime" json:"RequestTime,omitempty"`
KeyControlNonceDeprecated []byte `protobuf:"bytes,5,opt,name=KeyControlNonceDeprecated" json:"KeyControlNonceDeprecated,omitempty"`
ProtocolVersion *ProtocolVersion `protobuf:"varint,6,opt,name=ProtocolVersion,enum=ProtocolVersion" json:"ProtocolVersion,omitempty"` // lacking symbols for this
KeyControlNonce *uint32 `protobuf:"varint,7,opt,name=KeyControlNonce" json:"KeyControlNonce,omitempty"`
EncryptedClientId *EncryptedClientIdentification `protobuf:"bytes,8,opt,name=EncryptedClientId" json:"EncryptedClientId,omitempty"`
}
func (x *LicenseRequest) Reset() {
*x = LicenseRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequest) ProtoMessage() {}
func (x *LicenseRequest) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 LicenseRequest.ProtoReflect.Descriptor instead.
func (*LicenseRequest) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{8}
}
func (x *LicenseRequest) GetClientId() *ClientIdentification {
if x != nil {
return x.ClientId
}
return nil
}
func (x *LicenseRequest) GetContentId() *LicenseRequest_ContentIdentification {
if x != nil {
return x.ContentId
}
return nil
}
func (x *LicenseRequest) GetType() LicenseRequest_RequestType {
if x != nil && x.Type != nil {
return *x.Type
}
return LicenseRequest_NEW
}
func (x *LicenseRequest) GetRequestTime() uint32 {
if x != nil && x.RequestTime != nil {
return *x.RequestTime
}
return 0
}
func (x *LicenseRequest) GetKeyControlNonceDeprecated() []byte {
if x != nil {
return x.KeyControlNonceDeprecated
}
return nil
}
func (x *LicenseRequest) GetProtocolVersion() ProtocolVersion {
if x != nil && x.ProtocolVersion != nil {
return *x.ProtocolVersion
}
return ProtocolVersion_CURRENT
}
func (x *LicenseRequest) GetKeyControlNonce() uint32 {
if x != nil && x.KeyControlNonce != nil {
return *x.KeyControlNonce
}
return 0
}
func (x *LicenseRequest) GetEncryptedClientId() *EncryptedClientIdentification {
if x != nil {
return x.EncryptedClientId
}
return nil
}
// raw pssh hack
type LicenseRequestRaw struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ClientId *ClientIdentification `protobuf:"bytes,1,opt,name=ClientId" json:"ClientId,omitempty"`
ContentId *LicenseRequestRaw_ContentIdentification `protobuf:"bytes,2,opt,name=ContentId" json:"ContentId,omitempty"`
Type *LicenseRequestRaw_RequestType `protobuf:"varint,3,opt,name=Type,enum=LicenseRequestRaw_RequestType" json:"Type,omitempty"`
RequestTime *uint32 `protobuf:"varint,4,opt,name=RequestTime" json:"RequestTime,omitempty"`
KeyControlNonceDeprecated []byte `protobuf:"bytes,5,opt,name=KeyControlNonceDeprecated" json:"KeyControlNonceDeprecated,omitempty"`
ProtocolVersion *ProtocolVersion `protobuf:"varint,6,opt,name=ProtocolVersion,enum=ProtocolVersion" json:"ProtocolVersion,omitempty"` // lacking symbols for this
KeyControlNonce *uint32 `protobuf:"varint,7,opt,name=KeyControlNonce" json:"KeyControlNonce,omitempty"`
EncryptedClientId *EncryptedClientIdentification `protobuf:"bytes,8,opt,name=EncryptedClientId" json:"EncryptedClientId,omitempty"`
}
func (x *LicenseRequestRaw) Reset() {
*x = LicenseRequestRaw{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequestRaw) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequestRaw) ProtoMessage() {}
func (x *LicenseRequestRaw) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 LicenseRequestRaw.ProtoReflect.Descriptor instead.
func (*LicenseRequestRaw) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{9}
}
func (x *LicenseRequestRaw) GetClientId() *ClientIdentification {
if x != nil {
return x.ClientId
}
return nil
}
func (x *LicenseRequestRaw) GetContentId() *LicenseRequestRaw_ContentIdentification {
if x != nil {
return x.ContentId
}
return nil
}
func (x *LicenseRequestRaw) GetType() LicenseRequestRaw_RequestType {
if x != nil && x.Type != nil {
return *x.Type
}
return LicenseRequestRaw_NEW
}
func (x *LicenseRequestRaw) GetRequestTime() uint32 {
if x != nil && x.RequestTime != nil {
return *x.RequestTime
}
return 0
}
func (x *LicenseRequestRaw) GetKeyControlNonceDeprecated() []byte {
if x != nil {
return x.KeyControlNonceDeprecated
}
return nil
}
func (x *LicenseRequestRaw) GetProtocolVersion() ProtocolVersion {
if x != nil && x.ProtocolVersion != nil {
return *x.ProtocolVersion
}
return ProtocolVersion_CURRENT
}
func (x *LicenseRequestRaw) GetKeyControlNonce() uint32 {
if x != nil && x.KeyControlNonce != nil {
return *x.KeyControlNonce
}
return 0
}
func (x *LicenseRequestRaw) GetEncryptedClientId() *EncryptedClientIdentification {
if x != nil {
return x.EncryptedClientId
}
return nil
}
type ProvisionedDeviceInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SystemId *uint32 `protobuf:"varint,1,opt,name=SystemId" json:"SystemId,omitempty"`
Soc *string `protobuf:"bytes,2,opt,name=Soc" json:"Soc,omitempty"`
Manufacturer *string `protobuf:"bytes,3,opt,name=Manufacturer" json:"Manufacturer,omitempty"`
Model *string `protobuf:"bytes,4,opt,name=Model" json:"Model,omitempty"`
DeviceType *string `protobuf:"bytes,5,opt,name=DeviceType" json:"DeviceType,omitempty"`
ModelYear *uint32 `protobuf:"varint,6,opt,name=ModelYear" json:"ModelYear,omitempty"`
SecurityLevel *ProvisionedDeviceInfo_WvSecurityLevel `protobuf:"varint,7,opt,name=SecurityLevel,enum=ProvisionedDeviceInfo_WvSecurityLevel" json:"SecurityLevel,omitempty"`
TestDevice *uint32 `protobuf:"varint,8,opt,name=TestDevice" json:"TestDevice,omitempty"` // bool?
}
func (x *ProvisionedDeviceInfo) Reset() {
*x = ProvisionedDeviceInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProvisionedDeviceInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProvisionedDeviceInfo) ProtoMessage() {}
func (x *ProvisionedDeviceInfo) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ProvisionedDeviceInfo.ProtoReflect.Descriptor instead.
func (*ProvisionedDeviceInfo) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{10}
}
func (x *ProvisionedDeviceInfo) GetSystemId() uint32 {
if x != nil && x.SystemId != nil {
return *x.SystemId
}
return 0
}
func (x *ProvisionedDeviceInfo) GetSoc() string {
if x != nil && x.Soc != nil {
return *x.Soc
}
return ""
}
func (x *ProvisionedDeviceInfo) GetManufacturer() string {
if x != nil && x.Manufacturer != nil {
return *x.Manufacturer
}
return ""
}
func (x *ProvisionedDeviceInfo) GetModel() string {
if x != nil && x.Model != nil {
return *x.Model
}
return ""
}
func (x *ProvisionedDeviceInfo) GetDeviceType() string {
if x != nil && x.DeviceType != nil {
return *x.DeviceType
}
return ""
}
func (x *ProvisionedDeviceInfo) GetModelYear() uint32 {
if x != nil && x.ModelYear != nil {
return *x.ModelYear
}
return 0
}
func (x *ProvisionedDeviceInfo) GetSecurityLevel() ProvisionedDeviceInfo_WvSecurityLevel {
if x != nil && x.SecurityLevel != nil {
return *x.SecurityLevel
}
return ProvisionedDeviceInfo_LEVEL_UNSPECIFIED
}
func (x *ProvisionedDeviceInfo) GetTestDevice() uint32 {
if x != nil && x.TestDevice != nil {
return *x.TestDevice
}
return 0
}
// todo: fill
type ProvisioningOptions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ProvisioningOptions) Reset() {
*x = ProvisioningOptions{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProvisioningOptions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProvisioningOptions) ProtoMessage() {}
func (x *ProvisioningOptions) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ProvisioningOptions.ProtoReflect.Descriptor instead.
func (*ProvisioningOptions) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{11}
}
// todo: fill
type ProvisioningRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ProvisioningRequest) Reset() {
*x = ProvisioningRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProvisioningRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProvisioningRequest) ProtoMessage() {}
func (x *ProvisioningRequest) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ProvisioningRequest.ProtoReflect.Descriptor instead.
func (*ProvisioningRequest) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{12}
}
// todo: fill
type ProvisioningResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ProvisioningResponse) Reset() {
*x = ProvisioningResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProvisioningResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProvisioningResponse) ProtoMessage() {}
func (x *ProvisioningResponse) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ProvisioningResponse.ProtoReflect.Descriptor instead.
func (*ProvisioningResponse) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{13}
}
type RemoteAttestation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Certificate *EncryptedClientIdentification `protobuf:"bytes,1,opt,name=Certificate" json:"Certificate,omitempty"`
Salt *string `protobuf:"bytes,2,opt,name=Salt" json:"Salt,omitempty"`
Signature *string `protobuf:"bytes,3,opt,name=Signature" json:"Signature,omitempty"`
}
func (x *RemoteAttestation) Reset() {
*x = RemoteAttestation{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RemoteAttestation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RemoteAttestation) ProtoMessage() {}
func (x *RemoteAttestation) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 RemoteAttestation.ProtoReflect.Descriptor instead.
func (*RemoteAttestation) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{14}
}
func (x *RemoteAttestation) GetCertificate() *EncryptedClientIdentification {
if x != nil {
return x.Certificate
}
return nil
}
func (x *RemoteAttestation) GetSalt() string {
if x != nil && x.Salt != nil {
return *x.Salt
}
return ""
}
func (x *RemoteAttestation) GetSignature() string {
if x != nil && x.Signature != nil {
return *x.Signature
}
return ""
}
// todo: fill
type SessionInit struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SessionInit) Reset() {
*x = SessionInit{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SessionInit) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SessionInit) ProtoMessage() {}
func (x *SessionInit) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SessionInit.ProtoReflect.Descriptor instead.
func (*SessionInit) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{15}
}
// todo: fill
type SessionState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SessionState) Reset() {
*x = SessionState{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SessionState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SessionState) ProtoMessage() {}
func (x *SessionState) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SessionState.ProtoReflect.Descriptor instead.
func (*SessionState) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{16}
}
// todo: fill
type SignedCertificateStatusList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SignedCertificateStatusList) Reset() {
*x = SignedCertificateStatusList{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedCertificateStatusList) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedCertificateStatusList) ProtoMessage() {}
func (x *SignedCertificateStatusList) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedCertificateStatusList.ProtoReflect.Descriptor instead.
func (*SignedCertificateStatusList) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{17}
}
type SignedDeviceCertificate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
//optional bytes DeviceCertificate = 1; // again, they use a buffer where it's supposed to be a message, so we'll replace it with what it really is:
XDeviceCertificate *DeviceCertificate `protobuf:"bytes,1,opt,name=_DeviceCertificate,json=DeviceCertificate" json:"_DeviceCertificate,omitempty"` // how should we deal with duped names? will have to look at proto docs later
Signature []byte `protobuf:"bytes,2,opt,name=Signature" json:"Signature,omitempty"`
Signer *SignedDeviceCertificate `protobuf:"bytes,3,opt,name=Signer" json:"Signer,omitempty"`
}
func (x *SignedDeviceCertificate) Reset() {
*x = SignedDeviceCertificate{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedDeviceCertificate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedDeviceCertificate) ProtoMessage() {}
func (x *SignedDeviceCertificate) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedDeviceCertificate.ProtoReflect.Descriptor instead.
func (*SignedDeviceCertificate) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{18}
}
func (x *SignedDeviceCertificate) GetXDeviceCertificate() *DeviceCertificate {
if x != nil {
return x.XDeviceCertificate
}
return nil
}
func (x *SignedDeviceCertificate) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
func (x *SignedDeviceCertificate) GetSigner() *SignedDeviceCertificate {
if x != nil {
return x.Signer
}
return nil
}
// todo: fill
type SignedProvisioningMessage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SignedProvisioningMessage) Reset() {
*x = SignedProvisioningMessage{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedProvisioningMessage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedProvisioningMessage) ProtoMessage() {}
func (x *SignedProvisioningMessage) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedProvisioningMessage.ProtoReflect.Descriptor instead.
func (*SignedProvisioningMessage) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{19}
}
// the root of all messages, from either server or client
type SignedMessage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *SignedMessage_MessageType `protobuf:"varint,1,opt,name=Type,enum=SignedMessage_MessageType" json:"Type,omitempty"` // has in incorrect overlap with License_KeyContainer_SecurityLevel
Msg []byte `protobuf:"bytes,2,opt,name=Msg" json:"Msg,omitempty"` // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
Signature []byte `protobuf:"bytes,3,opt,name=Signature" json:"Signature,omitempty"` // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
SessionKey []byte `protobuf:"bytes,4,opt,name=SessionKey" json:"SessionKey,omitempty"` // often RSA wrapped for licenses
RemoteAttestation *RemoteAttestation `protobuf:"bytes,5,opt,name=RemoteAttestation" json:"RemoteAttestation,omitempty"`
}
func (x *SignedMessage) Reset() {
*x = SignedMessage{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedMessage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedMessage) ProtoMessage() {}
func (x *SignedMessage) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedMessage.ProtoReflect.Descriptor instead.
func (*SignedMessage) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{20}
}
func (x *SignedMessage) GetType() SignedMessage_MessageType {
if x != nil && x.Type != nil {
return *x.Type
}
return SignedMessage_LICENSE_REQUEST
}
func (x *SignedMessage) GetMsg() []byte {
if x != nil {
return x.Msg
}
return nil
}
func (x *SignedMessage) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
func (x *SignedMessage) GetSessionKey() []byte {
if x != nil {
return x.SessionKey
}
return nil
}
func (x *SignedMessage) GetRemoteAttestation() *RemoteAttestation {
if x != nil {
return x.RemoteAttestation
}
return nil
}
// This message is copied from google's docs, not reversed:
type WidevineCencHeader struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Algorithm *WidevineCencHeader_Algorithm `protobuf:"varint,1,opt,name=algorithm,enum=WidevineCencHeader_Algorithm" json:"algorithm,omitempty"`
KeyId [][]byte `protobuf:"bytes,2,rep,name=key_id,json=keyId" json:"key_id,omitempty"`
// Content provider name.
Provider *string `protobuf:"bytes,3,opt,name=provider" json:"provider,omitempty"`
// A content identifier, specified by content provider.
ContentId []byte `protobuf:"bytes,4,opt,name=content_id,json=contentId" json:"content_id,omitempty"`
// Track type. Acceptable values are SD, HD and AUDIO. Used to
// differentiate content keys used by an asset.
TrackTypeDeprecated *string `protobuf:"bytes,5,opt,name=track_type_deprecated,json=trackTypeDeprecated" json:"track_type_deprecated,omitempty"`
// The name of a registered policy to be used for this asset.
Policy *string `protobuf:"bytes,6,opt,name=policy" json:"policy,omitempty"`
// Crypto period index, for media using key rotation.
CryptoPeriodIndex *uint32 `protobuf:"varint,7,opt,name=crypto_period_index,json=cryptoPeriodIndex" json:"crypto_period_index,omitempty"`
// Optional protected context for group content. The grouped_license is a
// serialized SignedMessage.
GroupedLicense []byte `protobuf:"bytes,8,opt,name=grouped_license,json=groupedLicense" json:"grouped_license,omitempty"`
// Protection scheme identifying the encryption algorithm.
// Represented as one of the following 4CC values:
// 'cenc' (AESCTR), 'cbc1' (AESCBC),
// 'cens' (AESCTR subsample), 'cbcs' (AESCBC subsample).
ProtectionScheme *uint32 `protobuf:"varint,9,opt,name=protection_scheme,json=protectionScheme" json:"protection_scheme,omitempty"`
// Optional. For media using key rotation, this represents the duration
// of each crypto period in seconds.
CryptoPeriodSeconds *uint32 `protobuf:"varint,10,opt,name=crypto_period_seconds,json=cryptoPeriodSeconds" json:"crypto_period_seconds,omitempty"`
}
func (x *WidevineCencHeader) Reset() {
*x = WidevineCencHeader{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WidevineCencHeader) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WidevineCencHeader) ProtoMessage() {}
func (x *WidevineCencHeader) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 WidevineCencHeader.ProtoReflect.Descriptor instead.
func (*WidevineCencHeader) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{21}
}
func (x *WidevineCencHeader) GetAlgorithm() WidevineCencHeader_Algorithm {
if x != nil && x.Algorithm != nil {
return *x.Algorithm
}
return WidevineCencHeader_UNENCRYPTED
}
func (x *WidevineCencHeader) GetKeyId() [][]byte {
if x != nil {
return x.KeyId
}
return nil
}
func (x *WidevineCencHeader) GetProvider() string {
if x != nil && x.Provider != nil {
return *x.Provider
}
return ""
}
func (x *WidevineCencHeader) GetContentId() []byte {
if x != nil {
return x.ContentId
}
return nil
}
func (x *WidevineCencHeader) GetTrackTypeDeprecated() string {
if x != nil && x.TrackTypeDeprecated != nil {
return *x.TrackTypeDeprecated
}
return ""
}
func (x *WidevineCencHeader) GetPolicy() string {
if x != nil && x.Policy != nil {
return *x.Policy
}
return ""
}
func (x *WidevineCencHeader) GetCryptoPeriodIndex() uint32 {
if x != nil && x.CryptoPeriodIndex != nil {
return *x.CryptoPeriodIndex
}
return 0
}
func (x *WidevineCencHeader) GetGroupedLicense() []byte {
if x != nil {
return x.GroupedLicense
}
return nil
}
func (x *WidevineCencHeader) GetProtectionScheme() uint32 {
if x != nil && x.ProtectionScheme != nil {
return *x.ProtectionScheme
}
return 0
}
func (x *WidevineCencHeader) GetCryptoPeriodSeconds() uint32 {
if x != nil && x.CryptoPeriodSeconds != nil {
return *x.CryptoPeriodSeconds
}
return 0
}
// from here on, it's just for testing, these messages don't exist in the binaries, I'm adding them to avoid detecting type programmatically
type SignedLicenseRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *SignedLicenseRequest_MessageType `protobuf:"varint,1,opt,name=Type,enum=SignedLicenseRequest_MessageType" json:"Type,omitempty"` // has in incorrect overlap with License_KeyContainer_SecurityLevel
Msg *LicenseRequest `protobuf:"bytes,2,opt,name=Msg" json:"Msg,omitempty"` // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
Signature []byte `protobuf:"bytes,3,opt,name=Signature" json:"Signature,omitempty"` // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
SessionKey []byte `protobuf:"bytes,4,opt,name=SessionKey" json:"SessionKey,omitempty"` // often RSA wrapped for licenses
RemoteAttestation *RemoteAttestation `protobuf:"bytes,5,opt,name=RemoteAttestation" json:"RemoteAttestation,omitempty"`
}
func (x *SignedLicenseRequest) Reset() {
*x = SignedLicenseRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedLicenseRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedLicenseRequest) ProtoMessage() {}
func (x *SignedLicenseRequest) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedLicenseRequest.ProtoReflect.Descriptor instead.
func (*SignedLicenseRequest) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{22}
}
func (x *SignedLicenseRequest) GetType() SignedLicenseRequest_MessageType {
if x != nil && x.Type != nil {
return *x.Type
}
return SignedLicenseRequest_LICENSE_REQUEST
}
func (x *SignedLicenseRequest) GetMsg() *LicenseRequest {
if x != nil {
return x.Msg
}
return nil
}
func (x *SignedLicenseRequest) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
func (x *SignedLicenseRequest) GetSessionKey() []byte {
if x != nil {
return x.SessionKey
}
return nil
}
func (x *SignedLicenseRequest) GetRemoteAttestation() *RemoteAttestation {
if x != nil {
return x.RemoteAttestation
}
return nil
}
// hack
type SignedLicenseRequestRaw struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *SignedLicenseRequestRaw_MessageType `protobuf:"varint,1,opt,name=Type,enum=SignedLicenseRequestRaw_MessageType" json:"Type,omitempty"` // has in incorrect overlap with License_KeyContainer_SecurityLevel
Msg *LicenseRequestRaw `protobuf:"bytes,2,opt,name=Msg" json:"Msg,omitempty"` // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
Signature []byte `protobuf:"bytes,3,opt,name=Signature" json:"Signature,omitempty"` // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
SessionKey []byte `protobuf:"bytes,4,opt,name=SessionKey" json:"SessionKey,omitempty"` // often RSA wrapped for licenses
RemoteAttestation *RemoteAttestation `protobuf:"bytes,5,opt,name=RemoteAttestation" json:"RemoteAttestation,omitempty"`
}
func (x *SignedLicenseRequestRaw) Reset() {
*x = SignedLicenseRequestRaw{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedLicenseRequestRaw) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedLicenseRequestRaw) ProtoMessage() {}
func (x *SignedLicenseRequestRaw) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedLicenseRequestRaw.ProtoReflect.Descriptor instead.
func (*SignedLicenseRequestRaw) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{23}
}
func (x *SignedLicenseRequestRaw) GetType() SignedLicenseRequestRaw_MessageType {
if x != nil && x.Type != nil {
return *x.Type
}
return SignedLicenseRequestRaw_LICENSE_REQUEST
}
func (x *SignedLicenseRequestRaw) GetMsg() *LicenseRequestRaw {
if x != nil {
return x.Msg
}
return nil
}
func (x *SignedLicenseRequestRaw) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
func (x *SignedLicenseRequestRaw) GetSessionKey() []byte {
if x != nil {
return x.SessionKey
}
return nil
}
func (x *SignedLicenseRequestRaw) GetRemoteAttestation() *RemoteAttestation {
if x != nil {
return x.RemoteAttestation
}
return nil
}
type SignedLicense struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *SignedLicense_MessageType `protobuf:"varint,1,opt,name=Type,enum=SignedLicense_MessageType" json:"Type,omitempty"` // has in incorrect overlap with License_KeyContainer_SecurityLevel
Msg *License `protobuf:"bytes,2,opt,name=Msg" json:"Msg,omitempty"` // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
Signature []byte `protobuf:"bytes,3,opt,name=Signature" json:"Signature,omitempty"` // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
SessionKey []byte `protobuf:"bytes,4,opt,name=SessionKey" json:"SessionKey,omitempty"` // often RSA wrapped for licenses
RemoteAttestation *RemoteAttestation `protobuf:"bytes,5,opt,name=RemoteAttestation" json:"RemoteAttestation,omitempty"`
}
func (x *SignedLicense) Reset() {
*x = SignedLicense{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedLicense) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedLicense) ProtoMessage() {}
func (x *SignedLicense) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedLicense.ProtoReflect.Descriptor instead.
func (*SignedLicense) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{24}
}
func (x *SignedLicense) GetType() SignedLicense_MessageType {
if x != nil && x.Type != nil {
return *x.Type
}
return SignedLicense_LICENSE_REQUEST
}
func (x *SignedLicense) GetMsg() *License {
if x != nil {
return x.Msg
}
return nil
}
func (x *SignedLicense) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
func (x *SignedLicense) GetSessionKey() []byte {
if x != nil {
return x.SessionKey
}
return nil
}
func (x *SignedLicense) GetRemoteAttestation() *RemoteAttestation {
if x != nil {
return x.RemoteAttestation
}
return nil
}
type SignedServiceCertificate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *SignedServiceCertificate_MessageType `protobuf:"varint,1,opt,name=Type,enum=SignedServiceCertificate_MessageType" json:"Type,omitempty"` // has in incorrect overlap with License_KeyContainer_SecurityLevel
Msg *SignedDeviceCertificate `protobuf:"bytes,2,opt,name=Msg" json:"Msg,omitempty"` // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
Signature []byte `protobuf:"bytes,3,opt,name=Signature" json:"Signature,omitempty"` // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
SessionKey []byte `protobuf:"bytes,4,opt,name=SessionKey" json:"SessionKey,omitempty"` // often RSA wrapped for licenses
RemoteAttestation *RemoteAttestation `protobuf:"bytes,5,opt,name=RemoteAttestation" json:"RemoteAttestation,omitempty"`
}
func (x *SignedServiceCertificate) Reset() {
*x = SignedServiceCertificate{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedServiceCertificate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedServiceCertificate) ProtoMessage() {}
func (x *SignedServiceCertificate) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 SignedServiceCertificate.ProtoReflect.Descriptor instead.
func (*SignedServiceCertificate) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{25}
}
func (x *SignedServiceCertificate) GetType() SignedServiceCertificate_MessageType {
if x != nil && x.Type != nil {
return *x.Type
}
return SignedServiceCertificate_LICENSE_REQUEST
}
func (x *SignedServiceCertificate) GetMsg() *SignedDeviceCertificate {
if x != nil {
return x.Msg
}
return nil
}
func (x *SignedServiceCertificate) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
func (x *SignedServiceCertificate) GetSessionKey() []byte {
if x != nil {
return x.SessionKey
}
return nil
}
func (x *SignedServiceCertificate) GetRemoteAttestation() *RemoteAttestation {
if x != nil {
return x.RemoteAttestation
}
return nil
}
//vmp support
type FileHashes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Signer []byte `protobuf:"bytes,1,opt,name=signer" json:"signer,omitempty"`
Signatures []*FileHashes_Signature `protobuf:"bytes,2,rep,name=signatures" json:"signatures,omitempty"`
}
func (x *FileHashes) Reset() {
*x = FileHashes{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FileHashes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FileHashes) ProtoMessage() {}
func (x *FileHashes) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 FileHashes.ProtoReflect.Descriptor instead.
func (*FileHashes) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{26}
}
func (x *FileHashes) GetSigner() []byte {
if x != nil {
return x.Signer
}
return nil
}
func (x *FileHashes) GetSignatures() []*FileHashes_Signature {
if x != nil {
return x.Signatures
}
return nil
}
type ClientIdentification_NameValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name *string `protobuf:"bytes,1,req,name=Name" json:"Name,omitempty"`
Value *string `protobuf:"bytes,2,req,name=Value" json:"Value,omitempty"`
}
func (x *ClientIdentification_NameValue) Reset() {
*x = ClientIdentification_NameValue{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClientIdentification_NameValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClientIdentification_NameValue) ProtoMessage() {}
func (x *ClientIdentification_NameValue) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ClientIdentification_NameValue.ProtoReflect.Descriptor instead.
func (*ClientIdentification_NameValue) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{0, 0}
}
func (x *ClientIdentification_NameValue) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *ClientIdentification_NameValue) GetValue() string {
if x != nil && x.Value != nil {
return *x.Value
}
return ""
}
type ClientIdentification_ClientCapabilities struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ClientToken *uint32 `protobuf:"varint,1,opt,name=ClientToken" json:"ClientToken,omitempty"`
SessionToken *uint32 `protobuf:"varint,2,opt,name=SessionToken" json:"SessionToken,omitempty"`
VideoResolutionConstraints *uint32 `protobuf:"varint,3,opt,name=VideoResolutionConstraints" json:"VideoResolutionConstraints,omitempty"`
MaxHdcpVersion *ClientIdentification_ClientCapabilities_HdcpVersion `protobuf:"varint,4,opt,name=MaxHdcpVersion,enum=ClientIdentification_ClientCapabilities_HdcpVersion" json:"MaxHdcpVersion,omitempty"`
OemCryptoApiVersion *uint32 `protobuf:"varint,5,opt,name=OemCryptoApiVersion" json:"OemCryptoApiVersion,omitempty"`
}
func (x *ClientIdentification_ClientCapabilities) Reset() {
*x = ClientIdentification_ClientCapabilities{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClientIdentification_ClientCapabilities) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClientIdentification_ClientCapabilities) ProtoMessage() {}
func (x *ClientIdentification_ClientCapabilities) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 ClientIdentification_ClientCapabilities.ProtoReflect.Descriptor instead.
func (*ClientIdentification_ClientCapabilities) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{0, 1}
}
func (x *ClientIdentification_ClientCapabilities) GetClientToken() uint32 {
if x != nil && x.ClientToken != nil {
return *x.ClientToken
}
return 0
}
func (x *ClientIdentification_ClientCapabilities) GetSessionToken() uint32 {
if x != nil && x.SessionToken != nil {
return *x.SessionToken
}
return 0
}
func (x *ClientIdentification_ClientCapabilities) GetVideoResolutionConstraints() uint32 {
if x != nil && x.VideoResolutionConstraints != nil {
return *x.VideoResolutionConstraints
}
return 0
}
func (x *ClientIdentification_ClientCapabilities) GetMaxHdcpVersion() ClientIdentification_ClientCapabilities_HdcpVersion {
if x != nil && x.MaxHdcpVersion != nil {
return *x.MaxHdcpVersion
}
return ClientIdentification_ClientCapabilities_HDCP_NONE
}
func (x *ClientIdentification_ClientCapabilities) GetOemCryptoApiVersion() uint32 {
if x != nil && x.OemCryptoApiVersion != nil {
return *x.OemCryptoApiVersion
}
return 0
}
type License_Policy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CanPlay *bool `protobuf:"varint,1,opt,name=CanPlay" json:"CanPlay,omitempty"` // changed from uint32 to bool
CanPersist *bool `protobuf:"varint,2,opt,name=CanPersist" json:"CanPersist,omitempty"`
CanRenew *bool `protobuf:"varint,3,opt,name=CanRenew" json:"CanRenew,omitempty"`
RentalDurationSeconds *uint32 `protobuf:"varint,4,opt,name=RentalDurationSeconds" json:"RentalDurationSeconds,omitempty"`
PlaybackDurationSeconds *uint32 `protobuf:"varint,5,opt,name=PlaybackDurationSeconds" json:"PlaybackDurationSeconds,omitempty"`
LicenseDurationSeconds *uint32 `protobuf:"varint,6,opt,name=LicenseDurationSeconds" json:"LicenseDurationSeconds,omitempty"`
RenewalRecoveryDurationSeconds *uint32 `protobuf:"varint,7,opt,name=RenewalRecoveryDurationSeconds" json:"RenewalRecoveryDurationSeconds,omitempty"`
RenewalServerUrl *string `protobuf:"bytes,8,opt,name=RenewalServerUrl" json:"RenewalServerUrl,omitempty"`
RenewalDelaySeconds *uint32 `protobuf:"varint,9,opt,name=RenewalDelaySeconds" json:"RenewalDelaySeconds,omitempty"`
RenewalRetryIntervalSeconds *uint32 `protobuf:"varint,10,opt,name=RenewalRetryIntervalSeconds" json:"RenewalRetryIntervalSeconds,omitempty"`
RenewWithUsage *bool `protobuf:"varint,11,opt,name=RenewWithUsage" json:"RenewWithUsage,omitempty"` // was uint32
}
func (x *License_Policy) Reset() {
*x = License_Policy{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License_Policy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License_Policy) ProtoMessage() {}
func (x *License_Policy) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 License_Policy.ProtoReflect.Descriptor instead.
func (*License_Policy) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 0}
}
func (x *License_Policy) GetCanPlay() bool {
if x != nil && x.CanPlay != nil {
return *x.CanPlay
}
return false
}
func (x *License_Policy) GetCanPersist() bool {
if x != nil && x.CanPersist != nil {
return *x.CanPersist
}
return false
}
func (x *License_Policy) GetCanRenew() bool {
if x != nil && x.CanRenew != nil {
return *x.CanRenew
}
return false
}
func (x *License_Policy) GetRentalDurationSeconds() uint32 {
if x != nil && x.RentalDurationSeconds != nil {
return *x.RentalDurationSeconds
}
return 0
}
func (x *License_Policy) GetPlaybackDurationSeconds() uint32 {
if x != nil && x.PlaybackDurationSeconds != nil {
return *x.PlaybackDurationSeconds
}
return 0
}
func (x *License_Policy) GetLicenseDurationSeconds() uint32 {
if x != nil && x.LicenseDurationSeconds != nil {
return *x.LicenseDurationSeconds
}
return 0
}
func (x *License_Policy) GetRenewalRecoveryDurationSeconds() uint32 {
if x != nil && x.RenewalRecoveryDurationSeconds != nil {
return *x.RenewalRecoveryDurationSeconds
}
return 0
}
func (x *License_Policy) GetRenewalServerUrl() string {
if x != nil && x.RenewalServerUrl != nil {
return *x.RenewalServerUrl
}
return ""
}
func (x *License_Policy) GetRenewalDelaySeconds() uint32 {
if x != nil && x.RenewalDelaySeconds != nil {
return *x.RenewalDelaySeconds
}
return 0
}
func (x *License_Policy) GetRenewalRetryIntervalSeconds() uint32 {
if x != nil && x.RenewalRetryIntervalSeconds != nil {
return *x.RenewalRetryIntervalSeconds
}
return 0
}
func (x *License_Policy) GetRenewWithUsage() bool {
if x != nil && x.RenewWithUsage != nil {
return *x.RenewWithUsage
}
return false
}
type License_KeyContainer struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id []byte `protobuf:"bytes,1,opt,name=Id" json:"Id,omitempty"`
Iv []byte `protobuf:"bytes,2,opt,name=Iv" json:"Iv,omitempty"`
Key []byte `protobuf:"bytes,3,opt,name=Key" json:"Key,omitempty"`
Type *License_KeyContainer_KeyType `protobuf:"varint,4,opt,name=Type,enum=License_KeyContainer_KeyType" json:"Type,omitempty"`
Level *License_KeyContainer_SecurityLevel `protobuf:"varint,5,opt,name=Level,enum=License_KeyContainer_SecurityLevel" json:"Level,omitempty"`
RequiredProtection *License_KeyContainer_OutputProtection `protobuf:"bytes,6,opt,name=RequiredProtection" json:"RequiredProtection,omitempty"`
RequestedProtection *License_KeyContainer_OutputProtection `protobuf:"bytes,7,opt,name=RequestedProtection" json:"RequestedProtection,omitempty"`
XKeyControl *License_KeyContainer_KeyControl `protobuf:"bytes,8,opt,name=_KeyControl,json=KeyControl" json:"_KeyControl,omitempty"` // duped names, etc
XOperatorSessionKeyPermissions *License_KeyContainer_OperatorSessionKeyPermissions `protobuf:"bytes,9,opt,name=_OperatorSessionKeyPermissions,json=OperatorSessionKeyPermissions" json:"_OperatorSessionKeyPermissions,omitempty"` // duped names, etc
VideoResolutionConstraints []*License_KeyContainer_VideoResolutionConstraint `protobuf:"bytes,10,rep,name=VideoResolutionConstraints" json:"VideoResolutionConstraints,omitempty"`
}
func (x *License_KeyContainer) Reset() {
*x = License_KeyContainer{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License_KeyContainer) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License_KeyContainer) ProtoMessage() {}
func (x *License_KeyContainer) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 License_KeyContainer.ProtoReflect.Descriptor instead.
func (*License_KeyContainer) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1}
}
func (x *License_KeyContainer) GetId() []byte {
if x != nil {
return x.Id
}
return nil
}
func (x *License_KeyContainer) GetIv() []byte {
if x != nil {
return x.Iv
}
return nil
}
func (x *License_KeyContainer) GetKey() []byte {
if x != nil {
return x.Key
}
return nil
}
func (x *License_KeyContainer) GetType() License_KeyContainer_KeyType {
if x != nil && x.Type != nil {
return *x.Type
}
return License_KeyContainer_SIGNING
}
func (x *License_KeyContainer) GetLevel() License_KeyContainer_SecurityLevel {
if x != nil && x.Level != nil {
return *x.Level
}
return License_KeyContainer_SW_SECURE_CRYPTO
}
func (x *License_KeyContainer) GetRequiredProtection() *License_KeyContainer_OutputProtection {
if x != nil {
return x.RequiredProtection
}
return nil
}
func (x *License_KeyContainer) GetRequestedProtection() *License_KeyContainer_OutputProtection {
if x != nil {
return x.RequestedProtection
}
return nil
}
func (x *License_KeyContainer) GetXKeyControl() *License_KeyContainer_KeyControl {
if x != nil {
return x.XKeyControl
}
return nil
}
func (x *License_KeyContainer) GetXOperatorSessionKeyPermissions() *License_KeyContainer_OperatorSessionKeyPermissions {
if x != nil {
return x.XOperatorSessionKeyPermissions
}
return nil
}
func (x *License_KeyContainer) GetVideoResolutionConstraints() []*License_KeyContainer_VideoResolutionConstraint {
if x != nil {
return x.VideoResolutionConstraints
}
return nil
}
type License_KeyContainer_OutputProtection struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Hdcp *ClientIdentification_ClientCapabilities_HdcpVersion `protobuf:"varint,1,opt,name=Hdcp,enum=ClientIdentification_ClientCapabilities_HdcpVersion" json:"Hdcp,omitempty"` // it's most likely a copy of Hdcp version available here, but compiler optimized it away
CgmsFlags *License_KeyContainer_OutputProtection_CGMS `protobuf:"varint,2,opt,name=CgmsFlags,enum=License_KeyContainer_OutputProtection_CGMS" json:"CgmsFlags,omitempty"`
}
func (x *License_KeyContainer_OutputProtection) Reset() {
*x = License_KeyContainer_OutputProtection{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License_KeyContainer_OutputProtection) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License_KeyContainer_OutputProtection) ProtoMessage() {}
func (x *License_KeyContainer_OutputProtection) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_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 License_KeyContainer_OutputProtection.ProtoReflect.Descriptor instead.
func (*License_KeyContainer_OutputProtection) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 0}
}
func (x *License_KeyContainer_OutputProtection) GetHdcp() ClientIdentification_ClientCapabilities_HdcpVersion {
if x != nil && x.Hdcp != nil {
return *x.Hdcp
}
return ClientIdentification_ClientCapabilities_HDCP_NONE
}
func (x *License_KeyContainer_OutputProtection) GetCgmsFlags() License_KeyContainer_OutputProtection_CGMS {
if x != nil && x.CgmsFlags != nil {
return *x.CgmsFlags
}
return License_KeyContainer_OutputProtection_COPY_FREE
}
type License_KeyContainer_KeyControl struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
KeyControlBlock []byte `protobuf:"bytes,1,req,name=KeyControlBlock" json:"KeyControlBlock,omitempty"` // what is this?
Iv []byte `protobuf:"bytes,2,req,name=Iv" json:"Iv,omitempty"`
}
func (x *License_KeyContainer_KeyControl) Reset() {
*x = License_KeyContainer_KeyControl{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License_KeyContainer_KeyControl) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License_KeyContainer_KeyControl) ProtoMessage() {}
func (x *License_KeyContainer_KeyControl) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[32]
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 License_KeyContainer_KeyControl.ProtoReflect.Descriptor instead.
func (*License_KeyContainer_KeyControl) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 1}
}
func (x *License_KeyContainer_KeyControl) GetKeyControlBlock() []byte {
if x != nil {
return x.KeyControlBlock
}
return nil
}
func (x *License_KeyContainer_KeyControl) GetIv() []byte {
if x != nil {
return x.Iv
}
return nil
}
type License_KeyContainer_OperatorSessionKeyPermissions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
AllowEncrypt *uint32 `protobuf:"varint,1,opt,name=AllowEncrypt" json:"AllowEncrypt,omitempty"`
AllowDecrypt *uint32 `protobuf:"varint,2,opt,name=AllowDecrypt" json:"AllowDecrypt,omitempty"`
AllowSign *uint32 `protobuf:"varint,3,opt,name=AllowSign" json:"AllowSign,omitempty"`
AllowSignatureVerify *uint32 `protobuf:"varint,4,opt,name=AllowSignatureVerify" json:"AllowSignatureVerify,omitempty"`
}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) Reset() {
*x = License_KeyContainer_OperatorSessionKeyPermissions{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License_KeyContainer_OperatorSessionKeyPermissions) ProtoMessage() {}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[33]
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 License_KeyContainer_OperatorSessionKeyPermissions.ProtoReflect.Descriptor instead.
func (*License_KeyContainer_OperatorSessionKeyPermissions) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 2}
}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) GetAllowEncrypt() uint32 {
if x != nil && x.AllowEncrypt != nil {
return *x.AllowEncrypt
}
return 0
}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) GetAllowDecrypt() uint32 {
if x != nil && x.AllowDecrypt != nil {
return *x.AllowDecrypt
}
return 0
}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) GetAllowSign() uint32 {
if x != nil && x.AllowSign != nil {
return *x.AllowSign
}
return 0
}
func (x *License_KeyContainer_OperatorSessionKeyPermissions) GetAllowSignatureVerify() uint32 {
if x != nil && x.AllowSignatureVerify != nil {
return *x.AllowSignatureVerify
}
return 0
}
type License_KeyContainer_VideoResolutionConstraint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MinResolutionPixels *uint32 `protobuf:"varint,1,opt,name=MinResolutionPixels" json:"MinResolutionPixels,omitempty"`
MaxResolutionPixels *uint32 `protobuf:"varint,2,opt,name=MaxResolutionPixels" json:"MaxResolutionPixels,omitempty"`
RequiredProtection *License_KeyContainer_OutputProtection `protobuf:"bytes,3,opt,name=RequiredProtection" json:"RequiredProtection,omitempty"`
}
func (x *License_KeyContainer_VideoResolutionConstraint) Reset() {
*x = License_KeyContainer_VideoResolutionConstraint{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License_KeyContainer_VideoResolutionConstraint) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License_KeyContainer_VideoResolutionConstraint) ProtoMessage() {}
func (x *License_KeyContainer_VideoResolutionConstraint) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[34]
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 License_KeyContainer_VideoResolutionConstraint.ProtoReflect.Descriptor instead.
func (*License_KeyContainer_VideoResolutionConstraint) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{6, 1, 3}
}
func (x *License_KeyContainer_VideoResolutionConstraint) GetMinResolutionPixels() uint32 {
if x != nil && x.MinResolutionPixels != nil {
return *x.MinResolutionPixels
}
return 0
}
func (x *License_KeyContainer_VideoResolutionConstraint) GetMaxResolutionPixels() uint32 {
if x != nil && x.MaxResolutionPixels != nil {
return *x.MaxResolutionPixels
}
return 0
}
func (x *License_KeyContainer_VideoResolutionConstraint) GetRequiredProtection() *License_KeyContainer_OutputProtection {
if x != nil {
return x.RequiredProtection
}
return nil
}
type LicenseRequest_ContentIdentification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CencId *LicenseRequest_ContentIdentification_CENC `protobuf:"bytes,1,opt,name=CencId" json:"CencId,omitempty"`
WebmId *LicenseRequest_ContentIdentification_WebM `protobuf:"bytes,2,opt,name=WebmId" json:"WebmId,omitempty"`
License *LicenseRequest_ContentIdentification_ExistingLicense `protobuf:"bytes,3,opt,name=License" json:"License,omitempty"`
}
func (x *LicenseRequest_ContentIdentification) Reset() {
*x = LicenseRequest_ContentIdentification{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequest_ContentIdentification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequest_ContentIdentification) ProtoMessage() {}
func (x *LicenseRequest_ContentIdentification) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[35]
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 LicenseRequest_ContentIdentification.ProtoReflect.Descriptor instead.
func (*LicenseRequest_ContentIdentification) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{8, 0}
}
func (x *LicenseRequest_ContentIdentification) GetCencId() *LicenseRequest_ContentIdentification_CENC {
if x != nil {
return x.CencId
}
return nil
}
func (x *LicenseRequest_ContentIdentification) GetWebmId() *LicenseRequest_ContentIdentification_WebM {
if x != nil {
return x.WebmId
}
return nil
}
func (x *LicenseRequest_ContentIdentification) GetLicense() *LicenseRequest_ContentIdentification_ExistingLicense {
if x != nil {
return x.License
}
return nil
}
type LicenseRequest_ContentIdentification_CENC struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
//optional bytes Pssh = 1; // the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
Pssh *WidevineCencHeader `protobuf:"bytes,1,opt,name=Pssh" json:"Pssh,omitempty"`
LicenseType *LicenseType `protobuf:"varint,2,opt,name=LicenseType,enum=LicenseType" json:"LicenseType,omitempty"` // unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1 (is this persist/don't persist? look into it!)
RequestId []byte `protobuf:"bytes,3,opt,name=RequestId" json:"RequestId,omitempty"`
}
func (x *LicenseRequest_ContentIdentification_CENC) Reset() {
*x = LicenseRequest_ContentIdentification_CENC{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequest_ContentIdentification_CENC) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequest_ContentIdentification_CENC) ProtoMessage() {}
func (x *LicenseRequest_ContentIdentification_CENC) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[36]
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 LicenseRequest_ContentIdentification_CENC.ProtoReflect.Descriptor instead.
func (*LicenseRequest_ContentIdentification_CENC) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{8, 0, 0}
}
func (x *LicenseRequest_ContentIdentification_CENC) GetPssh() *WidevineCencHeader {
if x != nil {
return x.Pssh
}
return nil
}
func (x *LicenseRequest_ContentIdentification_CENC) GetLicenseType() LicenseType {
if x != nil && x.LicenseType != nil {
return *x.LicenseType
}
return LicenseType_ZERO
}
func (x *LicenseRequest_ContentIdentification_CENC) GetRequestId() []byte {
if x != nil {
return x.RequestId
}
return nil
}
type LicenseRequest_ContentIdentification_WebM struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Header []byte `protobuf:"bytes,1,opt,name=Header" json:"Header,omitempty"` // identical to CENC, aside from PSSH and the parent field number used
LicenseType *LicenseType `protobuf:"varint,2,opt,name=LicenseType,enum=LicenseType" json:"LicenseType,omitempty"`
RequestId []byte `protobuf:"bytes,3,opt,name=RequestId" json:"RequestId,omitempty"`
}
func (x *LicenseRequest_ContentIdentification_WebM) Reset() {
*x = LicenseRequest_ContentIdentification_WebM{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequest_ContentIdentification_WebM) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequest_ContentIdentification_WebM) ProtoMessage() {}
func (x *LicenseRequest_ContentIdentification_WebM) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[37]
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 LicenseRequest_ContentIdentification_WebM.ProtoReflect.Descriptor instead.
func (*LicenseRequest_ContentIdentification_WebM) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{8, 0, 1}
}
func (x *LicenseRequest_ContentIdentification_WebM) GetHeader() []byte {
if x != nil {
return x.Header
}
return nil
}
func (x *LicenseRequest_ContentIdentification_WebM) GetLicenseType() LicenseType {
if x != nil && x.LicenseType != nil {
return *x.LicenseType
}
return LicenseType_ZERO
}
func (x *LicenseRequest_ContentIdentification_WebM) GetRequestId() []byte {
if x != nil {
return x.RequestId
}
return nil
}
type LicenseRequest_ContentIdentification_ExistingLicense struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
LicenseId *LicenseIdentification `protobuf:"bytes,1,opt,name=LicenseId" json:"LicenseId,omitempty"`
SecondsSinceStarted *uint32 `protobuf:"varint,2,opt,name=SecondsSinceStarted" json:"SecondsSinceStarted,omitempty"`
SecondsSinceLastPlayed *uint32 `protobuf:"varint,3,opt,name=SecondsSinceLastPlayed" json:"SecondsSinceLastPlayed,omitempty"`
SessionUsageTableEntry []byte `protobuf:"bytes,4,opt,name=SessionUsageTableEntry" json:"SessionUsageTableEntry,omitempty"` // interesting! try to figure out the connection between the usage table blob and KCB!
}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) Reset() {
*x = LicenseRequest_ContentIdentification_ExistingLicense{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequest_ContentIdentification_ExistingLicense) ProtoMessage() {}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[38]
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 LicenseRequest_ContentIdentification_ExistingLicense.ProtoReflect.Descriptor instead.
func (*LicenseRequest_ContentIdentification_ExistingLicense) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{8, 0, 2}
}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) GetLicenseId() *LicenseIdentification {
if x != nil {
return x.LicenseId
}
return nil
}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) GetSecondsSinceStarted() uint32 {
if x != nil && x.SecondsSinceStarted != nil {
return *x.SecondsSinceStarted
}
return 0
}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) GetSecondsSinceLastPlayed() uint32 {
if x != nil && x.SecondsSinceLastPlayed != nil {
return *x.SecondsSinceLastPlayed
}
return 0
}
func (x *LicenseRequest_ContentIdentification_ExistingLicense) GetSessionUsageTableEntry() []byte {
if x != nil {
return x.SessionUsageTableEntry
}
return nil
}
type LicenseRequestRaw_ContentIdentification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CencId *LicenseRequestRaw_ContentIdentification_CENC `protobuf:"bytes,1,opt,name=CencId" json:"CencId,omitempty"`
WebmId *LicenseRequestRaw_ContentIdentification_WebM `protobuf:"bytes,2,opt,name=WebmId" json:"WebmId,omitempty"`
License *LicenseRequestRaw_ContentIdentification_ExistingLicense `protobuf:"bytes,3,opt,name=License" json:"License,omitempty"`
}
func (x *LicenseRequestRaw_ContentIdentification) Reset() {
*x = LicenseRequestRaw_ContentIdentification{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequestRaw_ContentIdentification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequestRaw_ContentIdentification) ProtoMessage() {}
func (x *LicenseRequestRaw_ContentIdentification) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[39]
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 LicenseRequestRaw_ContentIdentification.ProtoReflect.Descriptor instead.
func (*LicenseRequestRaw_ContentIdentification) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{9, 0}
}
func (x *LicenseRequestRaw_ContentIdentification) GetCencId() *LicenseRequestRaw_ContentIdentification_CENC {
if x != nil {
return x.CencId
}
return nil
}
func (x *LicenseRequestRaw_ContentIdentification) GetWebmId() *LicenseRequestRaw_ContentIdentification_WebM {
if x != nil {
return x.WebmId
}
return nil
}
func (x *LicenseRequestRaw_ContentIdentification) GetLicense() *LicenseRequestRaw_ContentIdentification_ExistingLicense {
if x != nil {
return x.License
}
return nil
}
type LicenseRequestRaw_ContentIdentification_CENC struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Pssh []byte `protobuf:"bytes,1,opt,name=Pssh" json:"Pssh,omitempty"` // the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
//optional WidevineCencHeader Pssh = 1;
LicenseType *LicenseType `protobuf:"varint,2,opt,name=LicenseType,enum=LicenseType" json:"LicenseType,omitempty"` // unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1 (is this persist/don't persist? look into it!)
RequestId []byte `protobuf:"bytes,3,opt,name=RequestId" json:"RequestId,omitempty"`
}
func (x *LicenseRequestRaw_ContentIdentification_CENC) Reset() {
*x = LicenseRequestRaw_ContentIdentification_CENC{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequestRaw_ContentIdentification_CENC) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequestRaw_ContentIdentification_CENC) ProtoMessage() {}
func (x *LicenseRequestRaw_ContentIdentification_CENC) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[40]
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 LicenseRequestRaw_ContentIdentification_CENC.ProtoReflect.Descriptor instead.
func (*LicenseRequestRaw_ContentIdentification_CENC) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{9, 0, 0}
}
func (x *LicenseRequestRaw_ContentIdentification_CENC) GetPssh() []byte {
if x != nil {
return x.Pssh
}
return nil
}
func (x *LicenseRequestRaw_ContentIdentification_CENC) GetLicenseType() LicenseType {
if x != nil && x.LicenseType != nil {
return *x.LicenseType
}
return LicenseType_ZERO
}
func (x *LicenseRequestRaw_ContentIdentification_CENC) GetRequestId() []byte {
if x != nil {
return x.RequestId
}
return nil
}
type LicenseRequestRaw_ContentIdentification_WebM struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Header []byte `protobuf:"bytes,1,opt,name=Header" json:"Header,omitempty"` // identical to CENC, aside from PSSH and the parent field number used
LicenseType *LicenseType `protobuf:"varint,2,opt,name=LicenseType,enum=LicenseType" json:"LicenseType,omitempty"`
RequestId []byte `protobuf:"bytes,3,opt,name=RequestId" json:"RequestId,omitempty"`
}
func (x *LicenseRequestRaw_ContentIdentification_WebM) Reset() {
*x = LicenseRequestRaw_ContentIdentification_WebM{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequestRaw_ContentIdentification_WebM) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequestRaw_ContentIdentification_WebM) ProtoMessage() {}
func (x *LicenseRequestRaw_ContentIdentification_WebM) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[41]
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 LicenseRequestRaw_ContentIdentification_WebM.ProtoReflect.Descriptor instead.
func (*LicenseRequestRaw_ContentIdentification_WebM) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{9, 0, 1}
}
func (x *LicenseRequestRaw_ContentIdentification_WebM) GetHeader() []byte {
if x != nil {
return x.Header
}
return nil
}
func (x *LicenseRequestRaw_ContentIdentification_WebM) GetLicenseType() LicenseType {
if x != nil && x.LicenseType != nil {
return *x.LicenseType
}
return LicenseType_ZERO
}
func (x *LicenseRequestRaw_ContentIdentification_WebM) GetRequestId() []byte {
if x != nil {
return x.RequestId
}
return nil
}
type LicenseRequestRaw_ContentIdentification_ExistingLicense struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
LicenseId *LicenseIdentification `protobuf:"bytes,1,opt,name=LicenseId" json:"LicenseId,omitempty"`
SecondsSinceStarted *uint32 `protobuf:"varint,2,opt,name=SecondsSinceStarted" json:"SecondsSinceStarted,omitempty"`
SecondsSinceLastPlayed *uint32 `protobuf:"varint,3,opt,name=SecondsSinceLastPlayed" json:"SecondsSinceLastPlayed,omitempty"`
SessionUsageTableEntry []byte `protobuf:"bytes,4,opt,name=SessionUsageTableEntry" json:"SessionUsageTableEntry,omitempty"` // interesting! try to figure out the connection between the usage table blob and KCB!
}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) Reset() {
*x = LicenseRequestRaw_ContentIdentification_ExistingLicense{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LicenseRequestRaw_ContentIdentification_ExistingLicense) ProtoMessage() {}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[42]
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 LicenseRequestRaw_ContentIdentification_ExistingLicense.ProtoReflect.Descriptor instead.
func (*LicenseRequestRaw_ContentIdentification_ExistingLicense) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{9, 0, 2}
}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) GetLicenseId() *LicenseIdentification {
if x != nil {
return x.LicenseId
}
return nil
}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) GetSecondsSinceStarted() uint32 {
if x != nil && x.SecondsSinceStarted != nil {
return *x.SecondsSinceStarted
}
return 0
}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) GetSecondsSinceLastPlayed() uint32 {
if x != nil && x.SecondsSinceLastPlayed != nil {
return *x.SecondsSinceLastPlayed
}
return 0
}
func (x *LicenseRequestRaw_ContentIdentification_ExistingLicense) GetSessionUsageTableEntry() []byte {
if x != nil {
return x.SessionUsageTableEntry
}
return nil
}
type FileHashes_Signature struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Filename *string `protobuf:"bytes,1,opt,name=filename" json:"filename,omitempty"`
TestSigning *bool `protobuf:"varint,2,opt,name=test_signing,json=testSigning" json:"test_signing,omitempty"` //0 - release, 1 - testing
SHA512Hash []byte `protobuf:"bytes,3,opt,name=SHA512Hash" json:"SHA512Hash,omitempty"`
MainExe *bool `protobuf:"varint,4,opt,name=main_exe,json=mainExe" json:"main_exe,omitempty"` //0 for dlls, 1 for exe, this is field 3 in file
Signature []byte `protobuf:"bytes,5,opt,name=signature" json:"signature,omitempty"`
}
func (x *FileHashes_Signature) Reset() {
*x = FileHashes_Signature{}
if protoimpl.UnsafeEnabled {
mi := &file_wv_proto2_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FileHashes_Signature) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FileHashes_Signature) ProtoMessage() {}
func (x *FileHashes_Signature) ProtoReflect() protoreflect.Message {
mi := &file_wv_proto2_proto_msgTypes[43]
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 FileHashes_Signature.ProtoReflect.Descriptor instead.
func (*FileHashes_Signature) Descriptor() ([]byte, []int) {
return file_wv_proto2_proto_rawDescGZIP(), []int{26, 0}
}
func (x *FileHashes_Signature) GetFilename() string {
if x != nil && x.Filename != nil {
return *x.Filename
}
return ""
}
func (x *FileHashes_Signature) GetTestSigning() bool {
if x != nil && x.TestSigning != nil {
return *x.TestSigning
}
return false
}
func (x *FileHashes_Signature) GetSHA512Hash() []byte {
if x != nil {
return x.SHA512Hash
}
return nil
}
func (x *FileHashes_Signature) GetMainExe() bool {
if x != nil && x.MainExe != nil {
return *x.MainExe
}
return false
}
func (x *FileHashes_Signature) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
var File_wv_proto2_proto protoreflect.FileDescriptor
var file_wv_proto2_proto_rawDesc = []byte{
0x0a, 0x0f, 0x77, 0x76, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x22, 0xae, 0x07, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x54, 0x79,
0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e,
0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12,
0x2e, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
0x3f, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x30, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x50,
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x4c, 0x69, 0x63, 0x65,
0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x13, 0x5f, 0x43,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65,
0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65,
0x73, 0x52, 0x12, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c,
0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x5f, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61,
0x73, 0x68, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x69, 0x6c,
0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73,
0x68, 0x65, 0x73, 0x1a, 0x35, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x02, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x80, 0x03, 0x0a, 0x12, 0x43,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65,
0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3e, 0x0a, 0x1a, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72,
0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x56, 0x69, 0x64,
0x65, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x48, 0x64,
0x63, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x34, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70,
0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x48, 0x64, 0x63, 0x70, 0x56, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x4d, 0x61, 0x78, 0x48, 0x64, 0x63, 0x70, 0x56, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x4f, 0x65, 0x6d, 0x43, 0x72, 0x79, 0x70,
0x74, 0x6f, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x13, 0x4f, 0x65, 0x6d, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41, 0x70, 0x69,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x0b, 0x48, 0x64, 0x63, 0x70, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x44, 0x43, 0x50, 0x5f, 0x4e,
0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x44, 0x43, 0x50, 0x5f, 0x56, 0x31,
0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x44, 0x43, 0x50, 0x5f, 0x56, 0x32, 0x10, 0x02, 0x12,
0x0d, 0x0a, 0x09, 0x48, 0x44, 0x43, 0x50, 0x5f, 0x56, 0x32, 0x5f, 0x31, 0x10, 0x03, 0x12, 0x0d,
0x0a, 0x09, 0x48, 0x44, 0x43, 0x50, 0x5f, 0x56, 0x32, 0x5f, 0x32, 0x10, 0x04, 0x22, 0x53, 0x0a,
0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x45,
0x59, 0x42, 0x4f, 0x58, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45,
0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x22,
0x0a, 0x1e, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45,
0x10, 0x02, 0x22, 0xfa, 0x02, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69,
0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65,
0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75,
0x6d, 0x62, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53,
0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69,
0x63, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64,
0x12, 0x32, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65,
0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14,
0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63,
0x61, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49,
0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x00, 0x12,
0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x10,
0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45,
0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x22,
0xe6, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53,
0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12,
0x42, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x2a, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73,
0x69, 0x6f, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x2b, 0x0a, 0x11, 0x43,
0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52,
0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x1b, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x43, 0x65,
0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65,
0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
0x11, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x22, 0x97, 0x02, 0x0a, 0x1d, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x49, 0x64, 0x12, 0x46, 0x0a, 0x1e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75,
0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1e, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x65,
0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x45, 0x6e,
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18,
0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x45, 0x6e, 0x63, 0x72,
0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x49, 0x76, 0x18,
0x04, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x13, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x49, 0x76, 0x12, 0x30, 0x0a, 0x13, 0x45, 0x6e,
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4b, 0x65,
0x79, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x13, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x22, 0xe3, 0x01, 0x0a,
0x15, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x49, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65,
0x49, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x0c, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32,
0x0a, 0x14, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x50, 0x72,
0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0x8d, 0x13, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x26,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73,
0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x12, 0x27, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61,
0x69, 0x6e, 0x65, 0x72, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x10, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x72,
0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41,
0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69,
0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x69, 0x66,
0x69, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x10, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d,
0x65, 0x1a, 0x96, 0x04, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x18, 0x0a, 0x07,
0x43, 0x61, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x43,
0x61, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x6e, 0x50, 0x65, 0x72,
0x73, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x43, 0x61, 0x6e, 0x50,
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x52, 0x65, 0x6e,
0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x52, 0x65, 0x6e,
0x65, 0x77, 0x12, 0x34, 0x0a, 0x15, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x15, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x79,
0x62, 0x61, 0x63, 0x6b, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f,
0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x50, 0x6c, 0x61, 0x79, 0x62,
0x61, 0x63, 0x6b, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e,
0x64, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x44, 0x75, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x16, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x52, 0x65,
0x6e, 0x65, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x75, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x1e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x76,
0x65, 0x72, 0x79, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e,
0x64, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x52, 0x65,
0x6e, 0x65, 0x77, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x30,
0x0a, 0x13, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65,
0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x52, 0x65, 0x6e,
0x65, 0x77, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
0x12, 0x40, 0x0a, 0x1b, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x74, 0x72, 0x79,
0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x52, 0x65,
0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e,
0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x57, 0x69, 0x74, 0x68, 0x55,
0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x52, 0x65, 0x6e, 0x65,
0x77, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x61, 0x67, 0x65, 0x1a, 0xa5, 0x0c, 0x0a, 0x0c, 0x4b,
0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x49, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x4b,
0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a,
0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x4c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
0x65, 0x72, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65,
0x12, 0x39, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x23, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e,
0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c,
0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x56, 0x0a, 0x12, 0x52,
0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73,
0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4f,
0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x12, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64,
0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x26, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72,
0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a,
0x0b, 0x5f, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79,
0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x52, 0x0a, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x12, 0x7a, 0x0a, 0x1e, 0x5f, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e,
0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b,
0x65, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x1d, 0x4f,
0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65,
0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6f, 0x0a, 0x1a,
0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x2f, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73,
0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e,
0x74, 0x52, 0x1a, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0xec, 0x01,
0x0a, 0x10, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x04, 0x48, 0x64, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x34, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61,
0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x48, 0x64, 0x63, 0x70, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x48, 0x64, 0x63, 0x70, 0x12, 0x49, 0x0a, 0x09,
0x43, 0x67, 0x6d, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x2b, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e,
0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x47, 0x4d, 0x53, 0x52, 0x09, 0x43, 0x67,
0x6d, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x04, 0x43, 0x47, 0x4d, 0x53, 0x12,
0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x46, 0x52, 0x45, 0x45, 0x10, 0x00, 0x12, 0x0d,
0x0a, 0x09, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a,
0x0a, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a,
0x09, 0x43, 0x47, 0x4d, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x2a, 0x1a, 0x46, 0x0a, 0x0a,
0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x4b, 0x65,
0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20,
0x02, 0x28, 0x0c, 0x52, 0x0f, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42,
0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x76, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c,
0x52, 0x02, 0x49, 0x76, 0x1a, 0xb9, 0x01, 0x0a, 0x1d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x45,
0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x41, 0x6c,
0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x6c,
0x6c, 0x6f, 0x77, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0c, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x12, 0x1c,
0x0a, 0x09, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x09, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x32, 0x0a, 0x14,
0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x65,
0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x41, 0x6c, 0x6c, 0x6f,
0x77, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
0x1a, 0xd7, 0x01, 0x0a, 0x19, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x30,
0x0a, 0x13, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50,
0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x4d, 0x69, 0x6e,
0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73,
0x12, 0x30, 0x0a, 0x13, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
0x6e, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x4d,
0x61, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x78, 0x65,
0x6c, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x72,
0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74,
0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x07, 0x4b, 0x65,
0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x49, 0x47, 0x4e, 0x49, 0x4e, 0x47,
0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12,
0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x03,
0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53,
0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x22, 0x7a, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x57, 0x5f, 0x53, 0x45,
0x43, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x10, 0x01, 0x12, 0x14, 0x0a,
0x10, 0x53, 0x57, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x44,
0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x48, 0x57, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45,
0x5f, 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x48, 0x57, 0x5f,
0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12,
0x11, 0x0a, 0x0d, 0x48, 0x57, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x4c, 0x4c,
0x10, 0x05, 0x22, 0xa3, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x45, 0x72,
0x72, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x60, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43,
0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12,
0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43,
0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12,
0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41,
0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x22, 0xcb, 0x09, 0x0a, 0x0e, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x08, 0x43,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x43,
0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x25, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x1b, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54,
0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x4b, 0x65, 0x79, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63,
0x61, 0x74, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x28, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f,
0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x4b, 0x65, 0x79, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x11, 0x45, 0x6e,
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18,
0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65,
0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0xc9, 0x05, 0x0a, 0x15, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x06, 0x43, 0x65, 0x6e, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4e, 0x43, 0x52, 0x06,
0x43, 0x65, 0x6e, 0x63, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x06, 0x57, 0x65, 0x62, 0x6d, 0x49, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x65,
0x62, 0x4d, 0x52, 0x06, 0x57, 0x65, 0x62, 0x6d, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x07, 0x4c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x4c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x52, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x1a, 0x7d, 0x0a, 0x04, 0x43,
0x45, 0x4e, 0x43, 0x12, 0x27, 0x0a, 0x04, 0x50, 0x73, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x13, 0x2e, 0x57, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, 0x65, 0x43, 0x65, 0x6e, 0x63,
0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x04, 0x50, 0x73, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x0b,
0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x0c, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x09, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x1a, 0x6c, 0x0a, 0x04, 0x57, 0x65,
0x62, 0x4d, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0c, 0x52, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0b, 0x4c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x0c, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x4c,
0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x1a, 0xe9, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x69,
0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09,
0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x16, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e,
0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x13, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61,
0x72, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53,
0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e,
0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16,
0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c,
0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x53, 0x65,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x22, 0x30, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54,
0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07,
0x52, 0x45, 0x4e, 0x45, 0x57, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c,
0x45, 0x41, 0x53, 0x45, 0x10, 0x03, 0x22, 0xc8, 0x09, 0x0a, 0x11, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x12, 0x31, 0x0a, 0x08,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
0x46, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x28, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x43, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3c, 0x0a,
0x19, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63, 0x65,
0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x19, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63,
0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0f, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0f, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x6e, 0x63,
0x65, 0x12, 0x4c, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c,
0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x45,
0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x45, 0x6e,
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x1a,
0xbd, 0x05, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x06, 0x43, 0x65, 0x6e,
0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x4c, 0x69, 0x63, 0x65,
0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x2e, 0x43, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x45, 0x4e, 0x43, 0x52, 0x06, 0x43, 0x65, 0x6e, 0x63, 0x49, 0x64,
0x12, 0x45, 0x0a, 0x06, 0x57, 0x65, 0x62, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x2d, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x52, 0x61, 0x77, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x65, 0x62, 0x4d, 0x52,
0x06, 0x57, 0x65, 0x62, 0x6d, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x2e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x52, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x1a, 0x68, 0x0a, 0x04, 0x43,
0x45, 0x4e, 0x43, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x73, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x04, 0x50, 0x73, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c, 0x2e, 0x4c,
0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x4c, 0x69, 0x63, 0x65,
0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x49, 0x64, 0x1a, 0x6c, 0x0a, 0x04, 0x57, 0x65, 0x62, 0x4d, 0x12, 0x16, 0x0a,
0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x48,
0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c, 0x2e, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x49, 0x64, 0x1a, 0xe9, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67,
0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x09, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a,
0x13, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61,
0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x53, 0x65, 0x63, 0x6f,
0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12,
0x36, 0x0a, 0x16, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4c,
0x61, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x16, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73,
0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x53, 0x65, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x55, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22,
0x30, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07,
0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4e, 0x45, 0x57,
0x41, 0x4c, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10,
0x03, 0x22, 0xfc, 0x02, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65,
0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x53,
0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x53,
0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x6f, 0x63, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x53, 0x6f, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x6e,
0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a,
0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f,
0x64, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x59, 0x65, 0x61, 0x72,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x59, 0x65, 0x61,
0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76,
0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x2e, 0x57, 0x76, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x52, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
0x1e, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22,
0x4f, 0x0a, 0x0f, 0x57, 0x76, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76,
0x65, 0x6c, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50,
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x45, 0x56,
0x45, 0x4c, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
0x32, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x33, 0x10, 0x03,
0x22, 0x15, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x16,
0x0a, 0x14, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x74,
0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b,
0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1e, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69,
0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x53, 0x61, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x53, 0x61,
0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x22,
0x0e, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22,
0x1d, 0x0a, 0x1b, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xac,
0x01, 0x0a, 0x17, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x12, 0x5f, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x11, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a,
0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x53,
0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x69,
0x67, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x22, 0x1b, 0x0a,
0x19, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd0, 0x02, 0x0a, 0x0d, 0x53,
0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x04,
0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x53, 0x69, 0x67,
0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03,
0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1c,
0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x11,
0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x52, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d,
0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a,
0x0f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x10, 0x02, 0x12,
0x12, 0x0a, 0x0e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53,
0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43,
0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45,
0x53, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f,
0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x05, 0x22, 0xd3, 0x03,
0x0a, 0x12, 0x57, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, 0x65, 0x43, 0x65, 0x6e, 0x63, 0x48, 0x65,
0x61, 0x64, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x57, 0x69, 0x64, 0x65, 0x76, 0x69,
0x6e, 0x65, 0x43, 0x65, 0x6e, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x6c, 0x67,
0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
0x6d, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0c, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f,
0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x13, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x70,
0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
0x2e, 0x0a, 0x13, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x72,
0x79, 0x70, 0x74, 0x6f, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
0x27, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x65,
0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x09, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53,
0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f,
0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x50, 0x65, 0x72, 0x69,
0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x28, 0x0a, 0x09, 0x41, 0x6c, 0x67,
0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x45, 0x4e, 0x43, 0x52,
0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x45, 0x53, 0x43, 0x54,
0x52, 0x10, 0x01, 0x22, 0xef, 0x02, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04,
0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x53, 0x69, 0x67,
0x6e, 0x65, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54,
0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0f, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61,
0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b,
0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74,
0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73,
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45,
0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x49,
0x43, 0x45, 0x4e, 0x53, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x52, 0x52, 0x4f, 0x52,
0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x53,
0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41,
0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13,
0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43,
0x41, 0x54, 0x45, 0x10, 0x05, 0x22, 0xf8, 0x02, 0x0a, 0x17, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64,
0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61,
0x77, 0x12, 0x38, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x24, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x4d,
0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x77, 0x52, 0x03, 0x4d, 0x73,
0x67, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12,
0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12,
0x40, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x52, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11,
0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55,
0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45,
0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x50,
0x4f, 0x4e, 0x53, 0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43,
0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45,
0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49,
0x43, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x05,
0x22, 0xda, 0x02, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x1a, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79,
0x70, 0x65, 0x12, 0x1a, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x08, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1c,
0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x11,
0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x52, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d,
0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a,
0x0f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x10, 0x02, 0x12,
0x12, 0x0a, 0x0e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53,
0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43,
0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45,
0x53, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f,
0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x05, 0x22, 0x80, 0x03,
0x0a, 0x18, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43,
0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x54, 0x79,
0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65,
0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x03, 0x4d, 0x73,
0x67, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12,
0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x0a, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12,
0x40, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x52, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11,
0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55,
0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45,
0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x50,
0x4f, 0x4e, 0x53, 0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43,
0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45,
0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49,
0x43, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x05,
0x22, 0x81, 0x02, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12,
0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61,
0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x46, 0x69,
0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
0x72, 0x65, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0xa3,
0x01, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74,
0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,
0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x53,
0x48, 0x41, 0x35, 0x31, 0x32, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x0a, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6d,
0x61, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d,
0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74,
0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61,
0x74, 0x75, 0x72, 0x65, 0x2a, 0x31, 0x0a, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54,
0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a,
0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x46,
0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x02, 0x2a, 0x1e, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x55,
0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x15, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x3b, 0x67, 0x65, 0x6e,
}
var (
file_wv_proto2_proto_rawDescOnce sync.Once
file_wv_proto2_proto_rawDescData = file_wv_proto2_proto_rawDesc
)
func file_wv_proto2_proto_rawDescGZIP() []byte {
file_wv_proto2_proto_rawDescOnce.Do(func() {
file_wv_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(file_wv_proto2_proto_rawDescData)
})
return file_wv_proto2_proto_rawDescData
}
var file_wv_proto2_proto_enumTypes = make([]protoimpl.EnumInfo, 19)
var file_wv_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
var file_wv_proto2_proto_goTypes = []interface{}{
(LicenseType)(0), // 0: LicenseType
(ProtocolVersion)(0), // 1: ProtocolVersion
(ClientIdentification_TokenType)(0), // 2: ClientIdentification.TokenType
(ClientIdentification_ClientCapabilities_HdcpVersion)(0), // 3: ClientIdentification.ClientCapabilities.HdcpVersion
(DeviceCertificate_CertificateType)(0), // 4: DeviceCertificate.CertificateType
(DeviceCertificateStatus_CertificateStatus)(0), // 5: DeviceCertificateStatus.CertificateStatus
(License_KeyContainer_KeyType)(0), // 6: License.KeyContainer.KeyType
(License_KeyContainer_SecurityLevel)(0), // 7: License.KeyContainer.SecurityLevel
(License_KeyContainer_OutputProtection_CGMS)(0), // 8: License.KeyContainer.OutputProtection.CGMS
(LicenseError_Error)(0), // 9: LicenseError.Error
(LicenseRequest_RequestType)(0), // 10: LicenseRequest.RequestType
(LicenseRequestRaw_RequestType)(0), // 11: LicenseRequestRaw.RequestType
(ProvisionedDeviceInfo_WvSecurityLevel)(0), // 12: ProvisionedDeviceInfo.WvSecurityLevel
(SignedMessage_MessageType)(0), // 13: SignedMessage.MessageType
(WidevineCencHeader_Algorithm)(0), // 14: WidevineCencHeader.Algorithm
(SignedLicenseRequest_MessageType)(0), // 15: SignedLicenseRequest.MessageType
(SignedLicenseRequestRaw_MessageType)(0), // 16: SignedLicenseRequestRaw.MessageType
(SignedLicense_MessageType)(0), // 17: SignedLicense.MessageType
(SignedServiceCertificate_MessageType)(0), // 18: SignedServiceCertificate.MessageType
(*ClientIdentification)(nil), // 19: ClientIdentification
(*DeviceCertificate)(nil), // 20: DeviceCertificate
(*DeviceCertificateStatus)(nil), // 21: DeviceCertificateStatus
(*DeviceCertificateStatusList)(nil), // 22: DeviceCertificateStatusList
(*EncryptedClientIdentification)(nil), // 23: EncryptedClientIdentification
(*LicenseIdentification)(nil), // 24: LicenseIdentification
(*License)(nil), // 25: License
(*LicenseError)(nil), // 26: LicenseError
(*LicenseRequest)(nil), // 27: LicenseRequest
(*LicenseRequestRaw)(nil), // 28: LicenseRequestRaw
(*ProvisionedDeviceInfo)(nil), // 29: ProvisionedDeviceInfo
(*ProvisioningOptions)(nil), // 30: ProvisioningOptions
(*ProvisioningRequest)(nil), // 31: ProvisioningRequest
(*ProvisioningResponse)(nil), // 32: ProvisioningResponse
(*RemoteAttestation)(nil), // 33: RemoteAttestation
(*SessionInit)(nil), // 34: SessionInit
(*SessionState)(nil), // 35: SessionState
(*SignedCertificateStatusList)(nil), // 36: SignedCertificateStatusList
(*SignedDeviceCertificate)(nil), // 37: SignedDeviceCertificate
(*SignedProvisioningMessage)(nil), // 38: SignedProvisioningMessage
(*SignedMessage)(nil), // 39: SignedMessage
(*WidevineCencHeader)(nil), // 40: WidevineCencHeader
(*SignedLicenseRequest)(nil), // 41: SignedLicenseRequest
(*SignedLicenseRequestRaw)(nil), // 42: SignedLicenseRequestRaw
(*SignedLicense)(nil), // 43: SignedLicense
(*SignedServiceCertificate)(nil), // 44: SignedServiceCertificate
(*FileHashes)(nil), // 45: FileHashes
(*ClientIdentification_NameValue)(nil), // 46: ClientIdentification.NameValue
(*ClientIdentification_ClientCapabilities)(nil), // 47: ClientIdentification.ClientCapabilities
(*License_Policy)(nil), // 48: License.Policy
(*License_KeyContainer)(nil), // 49: License.KeyContainer
(*License_KeyContainer_OutputProtection)(nil), // 50: License.KeyContainer.OutputProtection
(*License_KeyContainer_KeyControl)(nil), // 51: License.KeyContainer.KeyControl
(*License_KeyContainer_OperatorSessionKeyPermissions)(nil), // 52: License.KeyContainer.OperatorSessionKeyPermissions
(*License_KeyContainer_VideoResolutionConstraint)(nil), // 53: License.KeyContainer.VideoResolutionConstraint
(*LicenseRequest_ContentIdentification)(nil), // 54: LicenseRequest.ContentIdentification
(*LicenseRequest_ContentIdentification_CENC)(nil), // 55: LicenseRequest.ContentIdentification.CENC
(*LicenseRequest_ContentIdentification_WebM)(nil), // 56: LicenseRequest.ContentIdentification.WebM
(*LicenseRequest_ContentIdentification_ExistingLicense)(nil), // 57: LicenseRequest.ContentIdentification.ExistingLicense
(*LicenseRequestRaw_ContentIdentification)(nil), // 58: LicenseRequestRaw.ContentIdentification
(*LicenseRequestRaw_ContentIdentification_CENC)(nil), // 59: LicenseRequestRaw.ContentIdentification.CENC
(*LicenseRequestRaw_ContentIdentification_WebM)(nil), // 60: LicenseRequestRaw.ContentIdentification.WebM
(*LicenseRequestRaw_ContentIdentification_ExistingLicense)(nil), // 61: LicenseRequestRaw.ContentIdentification.ExistingLicense
(*FileHashes_Signature)(nil), // 62: FileHashes.Signature
}
var file_wv_proto2_proto_depIdxs = []int32{
2, // 0: ClientIdentification.Type:type_name -> ClientIdentification.TokenType
37, // 1: ClientIdentification.Token:type_name -> SignedDeviceCertificate
46, // 2: ClientIdentification.ClientInfo:type_name -> ClientIdentification.NameValue
47, // 3: ClientIdentification._ClientCapabilities:type_name -> ClientIdentification.ClientCapabilities
45, // 4: ClientIdentification._FileHashes:type_name -> FileHashes
4, // 5: DeviceCertificate.Type:type_name -> DeviceCertificate.CertificateType
5, // 6: DeviceCertificateStatus.Status:type_name -> DeviceCertificateStatus.CertificateStatus
29, // 7: DeviceCertificateStatus.DeviceInfo:type_name -> ProvisionedDeviceInfo
21, // 8: DeviceCertificateStatusList.CertificateStatus:type_name -> DeviceCertificateStatus
0, // 9: LicenseIdentification.Type:type_name -> LicenseType
24, // 10: License.Id:type_name -> LicenseIdentification
48, // 11: License._Policy:type_name -> License.Policy
49, // 12: License.Key:type_name -> License.KeyContainer
9, // 13: LicenseError.ErrorCode:type_name -> LicenseError.Error
19, // 14: LicenseRequest.ClientId:type_name -> ClientIdentification
54, // 15: LicenseRequest.ContentId:type_name -> LicenseRequest.ContentIdentification
10, // 16: LicenseRequest.Type:type_name -> LicenseRequest.RequestType
1, // 17: LicenseRequest.ProtocolVersion:type_name -> ProtocolVersion
23, // 18: LicenseRequest.EncryptedClientId:type_name -> EncryptedClientIdentification
19, // 19: LicenseRequestRaw.ClientId:type_name -> ClientIdentification
58, // 20: LicenseRequestRaw.ContentId:type_name -> LicenseRequestRaw.ContentIdentification
11, // 21: LicenseRequestRaw.Type:type_name -> LicenseRequestRaw.RequestType
1, // 22: LicenseRequestRaw.ProtocolVersion:type_name -> ProtocolVersion
23, // 23: LicenseRequestRaw.EncryptedClientId:type_name -> EncryptedClientIdentification
12, // 24: ProvisionedDeviceInfo.SecurityLevel:type_name -> ProvisionedDeviceInfo.WvSecurityLevel
23, // 25: RemoteAttestation.Certificate:type_name -> EncryptedClientIdentification
20, // 26: SignedDeviceCertificate._DeviceCertificate:type_name -> DeviceCertificate
37, // 27: SignedDeviceCertificate.Signer:type_name -> SignedDeviceCertificate
13, // 28: SignedMessage.Type:type_name -> SignedMessage.MessageType
33, // 29: SignedMessage.RemoteAttestation:type_name -> RemoteAttestation
14, // 30: WidevineCencHeader.algorithm:type_name -> WidevineCencHeader.Algorithm
15, // 31: SignedLicenseRequest.Type:type_name -> SignedLicenseRequest.MessageType
27, // 32: SignedLicenseRequest.Msg:type_name -> LicenseRequest
33, // 33: SignedLicenseRequest.RemoteAttestation:type_name -> RemoteAttestation
16, // 34: SignedLicenseRequestRaw.Type:type_name -> SignedLicenseRequestRaw.MessageType
28, // 35: SignedLicenseRequestRaw.Msg:type_name -> LicenseRequestRaw
33, // 36: SignedLicenseRequestRaw.RemoteAttestation:type_name -> RemoteAttestation
17, // 37: SignedLicense.Type:type_name -> SignedLicense.MessageType
25, // 38: SignedLicense.Msg:type_name -> License
33, // 39: SignedLicense.RemoteAttestation:type_name -> RemoteAttestation
18, // 40: SignedServiceCertificate.Type:type_name -> SignedServiceCertificate.MessageType
37, // 41: SignedServiceCertificate.Msg:type_name -> SignedDeviceCertificate
33, // 42: SignedServiceCertificate.RemoteAttestation:type_name -> RemoteAttestation
62, // 43: FileHashes.signatures:type_name -> FileHashes.Signature
3, // 44: ClientIdentification.ClientCapabilities.MaxHdcpVersion:type_name -> ClientIdentification.ClientCapabilities.HdcpVersion
6, // 45: License.KeyContainer.Type:type_name -> License.KeyContainer.KeyType
7, // 46: License.KeyContainer.Level:type_name -> License.KeyContainer.SecurityLevel
50, // 47: License.KeyContainer.RequiredProtection:type_name -> License.KeyContainer.OutputProtection
50, // 48: License.KeyContainer.RequestedProtection:type_name -> License.KeyContainer.OutputProtection
51, // 49: License.KeyContainer._KeyControl:type_name -> License.KeyContainer.KeyControl
52, // 50: License.KeyContainer._OperatorSessionKeyPermissions:type_name -> License.KeyContainer.OperatorSessionKeyPermissions
53, // 51: License.KeyContainer.VideoResolutionConstraints:type_name -> License.KeyContainer.VideoResolutionConstraint
3, // 52: License.KeyContainer.OutputProtection.Hdcp:type_name -> ClientIdentification.ClientCapabilities.HdcpVersion
8, // 53: License.KeyContainer.OutputProtection.CgmsFlags:type_name -> License.KeyContainer.OutputProtection.CGMS
50, // 54: License.KeyContainer.VideoResolutionConstraint.RequiredProtection:type_name -> License.KeyContainer.OutputProtection
55, // 55: LicenseRequest.ContentIdentification.CencId:type_name -> LicenseRequest.ContentIdentification.CENC
56, // 56: LicenseRequest.ContentIdentification.WebmId:type_name -> LicenseRequest.ContentIdentification.WebM
57, // 57: LicenseRequest.ContentIdentification.License:type_name -> LicenseRequest.ContentIdentification.ExistingLicense
40, // 58: LicenseRequest.ContentIdentification.CENC.Pssh:type_name -> WidevineCencHeader
0, // 59: LicenseRequest.ContentIdentification.CENC.LicenseType:type_name -> LicenseType
0, // 60: LicenseRequest.ContentIdentification.WebM.LicenseType:type_name -> LicenseType
24, // 61: LicenseRequest.ContentIdentification.ExistingLicense.LicenseId:type_name -> LicenseIdentification
59, // 62: LicenseRequestRaw.ContentIdentification.CencId:type_name -> LicenseRequestRaw.ContentIdentification.CENC
60, // 63: LicenseRequestRaw.ContentIdentification.WebmId:type_name -> LicenseRequestRaw.ContentIdentification.WebM
61, // 64: LicenseRequestRaw.ContentIdentification.License:type_name -> LicenseRequestRaw.ContentIdentification.ExistingLicense
0, // 65: LicenseRequestRaw.ContentIdentification.CENC.LicenseType:type_name -> LicenseType
0, // 66: LicenseRequestRaw.ContentIdentification.WebM.LicenseType:type_name -> LicenseType
24, // 67: LicenseRequestRaw.ContentIdentification.ExistingLicense.LicenseId:type_name -> LicenseIdentification
68, // [68:68] is the sub-list for method output_type
68, // [68:68] is the sub-list for method input_type
68, // [68:68] is the sub-list for extension type_name
68, // [68:68] is the sub-list for extension extendee
0, // [0:68] is the sub-list for field type_name
}
func init() { file_wv_proto2_proto_init() }
func file_wv_proto2_proto_init() {
if File_wv_proto2_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_wv_proto2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClientIdentification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceCertificate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceCertificateStatus); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceCertificateStatusList); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EncryptedClientIdentification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseIdentification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseError); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequestRaw); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProvisionedDeviceInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProvisioningOptions); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProvisioningRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProvisioningResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemoteAttestation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SessionInit); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SessionState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedCertificateStatusList); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedDeviceCertificate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedProvisioningMessage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedMessage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WidevineCencHeader); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedLicenseRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedLicenseRequestRaw); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedLicense); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedServiceCertificate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FileHashes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClientIdentification_NameValue); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClientIdentification_ClientCapabilities); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License_Policy); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License_KeyContainer); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License_KeyContainer_OutputProtection); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License_KeyContainer_KeyControl); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License_KeyContainer_OperatorSessionKeyPermissions); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*License_KeyContainer_VideoResolutionConstraint); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequest_ContentIdentification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequest_ContentIdentification_CENC); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequest_ContentIdentification_WebM); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequest_ContentIdentification_ExistingLicense); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequestRaw_ContentIdentification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequestRaw_ContentIdentification_CENC); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequestRaw_ContentIdentification_WebM); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LicenseRequestRaw_ContentIdentification_ExistingLicense); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_wv_proto2_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FileHashes_Signature); 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_wv_proto2_proto_rawDesc,
NumEnums: 19,
NumMessages: 44,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_wv_proto2_proto_goTypes,
DependencyIndexes: file_wv_proto2_proto_depIdxs,
EnumInfos: file_wv_proto2_proto_enumTypes,
MessageInfos: file_wv_proto2_proto_msgTypes,
}.Build()
File_wv_proto2_proto = out.File
file_wv_proto2_proto_rawDesc = nil
file_wv_proto2_proto_goTypes = nil
file_wv_proto2_proto_depIdxs = nil
}