diff --git a/.github/workflows/go-tests.yml b/.github/workflows/go-tests.yml index 4331c880a..7ddad8e81 100644 --- a/.github/workflows/go-tests.yml +++ b/.github/workflows/go-tests.yml @@ -141,10 +141,10 @@ jobs: run: | set -e # ensure the version of 'protoc' matches the one that generated the files - PROTOBUF_VERSION="35.0" + PROTOBUF_VERSION="35.1" JAVY_VERSION="8.1.1" # sha256 of the release assets, verified before use - PROTOBUF_SHA256="a45cda0989c17dd950db55f6fbe1e5814c50fda08e87aa422980ac1f89dddbbc" + PROTOBUF_SHA256="6930ebf62bd4ea607b98fff052596c6ee564b9835b4ce172c75a3f53ae9d91b7" JAVY_SHA256="4bec224e1d51827808fd063541a2b4d94cf474744636b692be63e7a29bec83a6" # don't pollute the repo pushd $HOME diff --git a/pkg/appsec/challenge/fingerprint.go b/pkg/appsec/challenge/fingerprint.go index 869cd5257..67b9ec0f6 100644 --- a/pkg/appsec/challenge/fingerprint.go +++ b/pkg/appsec/challenge/fingerprint.go @@ -111,6 +111,10 @@ func (fi FlexInt) Int() int { "hover": true, "anyHover": true, "colorDepth": 10 + }, + "keyboard": { + "layout": "Backquote,` Backslash,\\ BracketLeft,[ BracketRight,]", + "layoutSize": 4 } }, "browser": { @@ -167,6 +171,10 @@ func (fi FlexInt) Int() int { "toSourceError": { "toSourceError": "TypeError:+Cannot+read+properties+of+null+(reading+usdfsh)", "hasToSource": false + }, + "ai": { + "summarizerAvailability": "downloadable", + "summarizerLanguageAvailability": "available" } }, "graphics": { @@ -360,6 +368,7 @@ type fingerprintDevice struct { ScreenResolution fingerprintScreenResolution `json:"screenResolution"` MultimediaDevices fingerprintMultimediaDevices `json:"multimediaDevices"` MediaQueries fingerprintDeviceMediaQueries `json:"mediaQueries"` + Keyboard fingerprintDeviceKeyboard `json:"keyboard"` } type fingerprintScreenResolution struct { @@ -392,6 +401,14 @@ type fingerprintDeviceMediaQueries struct { ColorDepth FlexInt `json:"colorDepth"` } +// Layout is the KeyboardLayoutMap serialized as "code,key" pairs joined by +// spaces; both fields are "NA" (Layout) / 0 (LayoutSize, via FlexInt) on +// browsers without navigator.keyboard. +type fingerprintDeviceKeyboard struct { + Layout string `json:"layout"` + LayoutSize FlexInt `json:"layoutSize"` +} + type fingerprintBrowser struct { UserAgent string `json:"userAgent"` Features fingerprintBrowserFeatures `json:"features"` @@ -401,6 +418,7 @@ type fingerprintBrowser struct { ETSL FlexInt `json:"etsl"` Maths string `json:"maths"` ToSourceError fingerprintBrowserToSourceError `json:"toSourceError"` + AI fingerprintBrowserAI `json:"ai"` } type fingerprintBrowserFeatures struct { @@ -433,6 +451,12 @@ type fingerprintBrowserFeatures struct { FencedFrame FlexBool `json:"fencedFrame"` Sanitizer FlexBool `json:"sanitizer"` OTPCredential FlexBool `json:"otpCredential"` + SumPrecise FlexBool `json:"sumPrecise"` +} + +type fingerprintBrowserAI struct { + SummarizerAvailability string `json:"summarizerAvailability"` + SummarizerLanguageAvailability string `json:"summarizerLanguageAvailability"` } type fingerprintBrowserPlugins struct { diff --git a/pkg/appsec/challenge/fingerprint_proto.go b/pkg/appsec/challenge/fingerprint_proto.go index 9bc2e187b..8919b98b9 100644 --- a/pkg/appsec/challenge/fingerprint_proto.go +++ b/pkg/appsec/challenge/fingerprint_proto.go @@ -111,6 +111,12 @@ func deviceFromProto(d *pb.FingerprintDevice) fingerprintDevice { ColorDepth: FlexInt(mq.GetColorDepth()), } } + if kb := d.GetKeyboard(); kb != nil { + out.Keyboard = fingerprintDeviceKeyboard{ + Layout: kb.GetLayout(), + LayoutSize: FlexInt(kb.GetLayoutSize()), + } + } return out } @@ -152,6 +158,7 @@ func browserFromProto(b *pb.FingerprintBrowser) fingerprintBrowser { FencedFrame: FlexBool(ft.GetFencedFrame()), Sanitizer: FlexBool(ft.GetSanitizer()), OTPCredential: FlexBool(ft.GetOtpCredential()), + SumPrecise: FlexBool(ft.GetSumPrecise()), } } if pl := b.GetPlugins(); pl != nil { @@ -192,6 +199,12 @@ func browserFromProto(b *pb.FingerprintBrowser) fingerprintBrowser { HasToSource: FlexBool(tse.GetHasToSource()), } } + if ai := b.GetAi(); ai != nil { + out.AI = fingerprintBrowserAI{ + SummarizerAvailability: ai.GetSummarizerAvailability(), + SummarizerLanguageAvailability: ai.GetSummarizerLanguageAvailability(), + } + } return out } @@ -372,6 +385,10 @@ func (d fingerprintDevice) toProto() *pb.FingerprintDevice { AnyHover: bool(d.MediaQueries.AnyHover), ColorDepth: int32(d.MediaQueries.ColorDepth), }, + Keyboard: &pb.FingerprintDeviceKeyboard{ + Layout: d.Keyboard.Layout, + LayoutSize: int32(d.Keyboard.LayoutSize), + }, } } @@ -416,6 +433,7 @@ func (b fingerprintBrowser) toProto() *pb.FingerprintBrowser { FencedFrame: bool(b.Features.FencedFrame), Sanitizer: bool(b.Features.Sanitizer), OtpCredential: bool(b.Features.OTPCredential), + SumPrecise: bool(b.Features.SumPrecise), }, Plugins: &pb.FingerprintBrowserPlugins{ IsValidPluginArray: bool(b.Plugins.IsValidPluginArray), @@ -444,6 +462,10 @@ func (b fingerprintBrowser) toProto() *pb.FingerprintBrowser { ToSourceError: b.ToSourceError.ToSourceError, HasToSource: bool(b.ToSourceError.HasToSource), }, + Ai: &pb.FingerprintBrowserAI{ + SummarizerAvailability: b.AI.SummarizerAvailability, + SummarizerLanguageAvailability: b.AI.SummarizerLanguageAvailability, + }, } } diff --git a/pkg/appsec/challenge/fingerprint_proto_test.go b/pkg/appsec/challenge/fingerprint_proto_test.go new file mode 100644 index 000000000..9bbcf1475 --- /dev/null +++ b/pkg/appsec/challenge/fingerprint_proto_test.go @@ -0,0 +1,77 @@ +package challenge + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestKeyboardSignal(t *testing.T) { + t.Run("parsed from the bundle payload", func(t *testing.T) { + fp := mustUnmarshal(t, `{"signals": {"device": {"keyboard": { + "layout": "Backquote,` + "`" + ` Backslash,\\ BracketLeft,[", + "layoutSize": 3 + }}}}`) + + assert.Equal(t, "Backquote,` Backslash,\\ BracketLeft,[", fp.Signals.Device.Keyboard.Layout) + assert.Equal(t, FlexInt(3), fp.Signals.Device.Keyboard.LayoutSize) + }) + + // Browsers without navigator.keyboard (and collection errors) report "NA" + // for both fields. + t.Run("unsupported browser", func(t *testing.T) { + fp := mustUnmarshal(t, `{"signals": {"device": {"keyboard": {"layout": "NA", "layoutSize": "NA"}}}}`) + + assert.Equal(t, "NA", fp.Signals.Device.Keyboard.Layout) + assert.Equal(t, FlexInt(0), fp.Signals.Device.Keyboard.LayoutSize) + }) + + t.Run("survives the cookie proto round-trip", func(t *testing.T) { + fp := mustUnmarshal(t, `{"signals": {"device": {"keyboard": {"layout": "KeyQ,a KeyW,z", "layoutSize": 2}}}}`) + + got := fingerprintDataFromProto(fp.ToProto()) + + assert.Equal(t, fp.Signals.Device.Keyboard, got.Signals.Device.Keyboard) + }) +} + +func TestAISignal(t *testing.T) { + // availability() returns an enum string, not a bool — the library's own + // TS type says boolean, the implementation and its tests say string. + t.Run("availability enum", func(t *testing.T) { + fp := mustUnmarshal(t, `{"signals": {"browser": {"ai": { + "summarizerAvailability": "downloadable", + "summarizerLanguageAvailability": "unavailable" + }}}}`) + + assert.Equal(t, "downloadable", fp.Signals.Browser.AI.SummarizerAvailability) + assert.Equal(t, "unavailable", fp.Signals.Browser.AI.SummarizerLanguageAvailability) + + got := fingerprintDataFromProto(fp.ToProto()) + assert.Equal(t, fp.Signals.Browser.AI, got.Signals.Browser.AI) + }) + + t.Run("unsupported browser", func(t *testing.T) { + fp := mustUnmarshal(t, `{"signals": {"browser": {"ai": {"summarizerAvailability": "NA", "summarizerLanguageAvailability": "NA"}}}}`) + + assert.Equal(t, "NA", fp.Signals.Browser.AI.SummarizerAvailability) + assert.Equal(t, "NA", fp.Signals.Browser.AI.SummarizerLanguageAvailability) + }) +} + +func TestSumPreciseFeature(t *testing.T) { + fp := mustUnmarshal(t, `{"signals": {"browser": {"features": {"otpCredential": true, "sumPrecise": true}}}}`) + + assert.True(t, fp.Signals.Browser.Features.SumPrecise.Bool()) + assert.True(t, fingerprintDataFromProto(fp.ToProto()).Signals.Browser.Features.SumPrecise.Bool()) +} + +func TestKeyboardSignalMissing(t *testing.T) { + fp := &FingerprintData{} + require.NoError(t, json.Unmarshal([]byte(`{"signals": {"device": {"cpuCount": 4}}}`), fp)) + + assert.Equal(t, fingerprintDeviceKeyboard{}, fp.Signals.Device.Keyboard) + assert.Equal(t, fingerprintDeviceKeyboard{}, fingerprintDataFromProto(fp.ToProto()).Signals.Device.Keyboard) +} diff --git a/pkg/appsec/challenge/pb/fingerprint.pb.go b/pkg/appsec/challenge/pb/fingerprint.pb.go index 2faa0f5ed..af79cf3c1 100644 --- a/pkg/appsec/challenge/pb/fingerprint.pb.go +++ b/pkg/appsec/challenge/pb/fingerprint.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.35.0 +// protoc v7.35.1 // source: fingerprint.proto package pb @@ -364,6 +364,7 @@ type FingerprintDevice struct { ScreenResolution *FingerprintScreenResolution `protobuf:"bytes,4,opt,name=screenResolution,proto3" json:"screenResolution,omitempty"` MultimediaDevices *FingerprintMultimediaDevices `protobuf:"bytes,5,opt,name=multimediaDevices,proto3" json:"multimediaDevices,omitempty"` MediaQueries *FingerprintDeviceMediaQueries `protobuf:"bytes,6,opt,name=mediaQueries,proto3" json:"mediaQueries,omitempty"` + Keyboard *FingerprintDeviceKeyboard `protobuf:"bytes,7,opt,name=keyboard,proto3" json:"keyboard,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -440,6 +441,13 @@ func (x *FingerprintDevice) GetMediaQueries() *FingerprintDeviceMediaQueries { return nil } +func (x *FingerprintDevice) GetKeyboard() *FingerprintDeviceKeyboard { + if x != nil { + return x.Keyboard + } + return nil +} + type FingerprintScreenResolution struct { state protoimpl.MessageState `protogen:"open.v1"` Width int32 `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"` @@ -716,6 +724,58 @@ func (x *FingerprintDeviceMediaQueries) GetColorDepth() int32 { return 0 } +type FingerprintDeviceKeyboard struct { + state protoimpl.MessageState `protogen:"open.v1"` + Layout string `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"` + LayoutSize int32 `protobuf:"varint,2,opt,name=layoutSize,proto3" json:"layoutSize,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FingerprintDeviceKeyboard) Reset() { + *x = FingerprintDeviceKeyboard{} + mi := &file_fingerprint_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FingerprintDeviceKeyboard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FingerprintDeviceKeyboard) ProtoMessage() {} + +func (x *FingerprintDeviceKeyboard) ProtoReflect() protoreflect.Message { + mi := &file_fingerprint_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FingerprintDeviceKeyboard.ProtoReflect.Descriptor instead. +func (*FingerprintDeviceKeyboard) Descriptor() ([]byte, []int) { + return file_fingerprint_proto_rawDescGZIP(), []int{8} +} + +func (x *FingerprintDeviceKeyboard) GetLayout() string { + if x != nil { + return x.Layout + } + return "" +} + +func (x *FingerprintDeviceKeyboard) GetLayoutSize() int32 { + if x != nil { + return x.LayoutSize + } + return 0 +} + type FingerprintBrowser struct { state protoimpl.MessageState `protogen:"open.v1"` UserAgent string `protobuf:"bytes,1,opt,name=userAgent,proto3" json:"userAgent,omitempty"` @@ -726,13 +786,14 @@ type FingerprintBrowser struct { Etsl int32 `protobuf:"varint,6,opt,name=etsl,proto3" json:"etsl,omitempty"` Maths string `protobuf:"bytes,7,opt,name=maths,proto3" json:"maths,omitempty"` ToSourceError *FingerprintBrowserToSourceError `protobuf:"bytes,8,opt,name=toSourceError,proto3" json:"toSourceError,omitempty"` + Ai *FingerprintBrowserAI `protobuf:"bytes,9,opt,name=ai,proto3" json:"ai,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FingerprintBrowser) Reset() { *x = FingerprintBrowser{} - mi := &file_fingerprint_proto_msgTypes[8] + mi := &file_fingerprint_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -744,7 +805,7 @@ func (x *FingerprintBrowser) String() string { func (*FingerprintBrowser) ProtoMessage() {} func (x *FingerprintBrowser) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[8] + mi := &file_fingerprint_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -757,7 +818,7 @@ func (x *FingerprintBrowser) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBrowser.ProtoReflect.Descriptor instead. func (*FingerprintBrowser) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{8} + return file_fingerprint_proto_rawDescGZIP(), []int{9} } func (x *FingerprintBrowser) GetUserAgent() string { @@ -816,6 +877,65 @@ func (x *FingerprintBrowser) GetToSourceError() *FingerprintBrowserToSourceError return nil } +func (x *FingerprintBrowser) GetAi() *FingerprintBrowserAI { + if x != nil { + return x.Ai + } + return nil +} + +type FingerprintBrowserAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + SummarizerAvailability string `protobuf:"bytes,1,opt,name=summarizerAvailability,proto3" json:"summarizerAvailability,omitempty"` + SummarizerLanguageAvailability string `protobuf:"bytes,2,opt,name=summarizerLanguageAvailability,proto3" json:"summarizerLanguageAvailability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FingerprintBrowserAI) Reset() { + *x = FingerprintBrowserAI{} + mi := &file_fingerprint_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FingerprintBrowserAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FingerprintBrowserAI) ProtoMessage() {} + +func (x *FingerprintBrowserAI) ProtoReflect() protoreflect.Message { + mi := &file_fingerprint_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FingerprintBrowserAI.ProtoReflect.Descriptor instead. +func (*FingerprintBrowserAI) Descriptor() ([]byte, []int) { + return file_fingerprint_proto_rawDescGZIP(), []int{10} +} + +func (x *FingerprintBrowserAI) GetSummarizerAvailability() string { + if x != nil { + return x.SummarizerAvailability + } + return "" +} + +func (x *FingerprintBrowserAI) GetSummarizerLanguageAvailability() string { + if x != nil { + return x.SummarizerLanguageAvailability + } + return "" +} + type FingerprintBrowserFeatures struct { state protoimpl.MessageState `protogen:"open.v1"` Bitmask string `protobuf:"bytes,1,opt,name=bitmask,proto3" json:"bitmask,omitempty"` @@ -847,13 +967,14 @@ type FingerprintBrowserFeatures struct { FencedFrame bool `protobuf:"varint,27,opt,name=fencedFrame,proto3" json:"fencedFrame,omitempty"` Sanitizer bool `protobuf:"varint,28,opt,name=sanitizer,proto3" json:"sanitizer,omitempty"` OtpCredential bool `protobuf:"varint,29,opt,name=otpCredential,proto3" json:"otpCredential,omitempty"` + SumPrecise bool `protobuf:"varint,30,opt,name=sumPrecise,proto3" json:"sumPrecise,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FingerprintBrowserFeatures) Reset() { *x = FingerprintBrowserFeatures{} - mi := &file_fingerprint_proto_msgTypes[9] + mi := &file_fingerprint_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -865,7 +986,7 @@ func (x *FingerprintBrowserFeatures) String() string { func (*FingerprintBrowserFeatures) ProtoMessage() {} func (x *FingerprintBrowserFeatures) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[9] + mi := &file_fingerprint_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -878,7 +999,7 @@ func (x *FingerprintBrowserFeatures) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBrowserFeatures.ProtoReflect.Descriptor instead. func (*FingerprintBrowserFeatures) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{9} + return file_fingerprint_proto_rawDescGZIP(), []int{11} } func (x *FingerprintBrowserFeatures) GetBitmask() string { @@ -1084,6 +1205,13 @@ func (x *FingerprintBrowserFeatures) GetOtpCredential() bool { return false } +func (x *FingerprintBrowserFeatures) GetSumPrecise() bool { + if x != nil { + return x.SumPrecise + } + return false +} + type FingerprintBrowserPlugins struct { state protoimpl.MessageState `protogen:"open.v1"` IsValidPluginArray bool `protobuf:"varint,1,opt,name=isValidPluginArray,proto3" json:"isValidPluginArray,omitempty"` @@ -1097,7 +1225,7 @@ type FingerprintBrowserPlugins struct { func (x *FingerprintBrowserPlugins) Reset() { *x = FingerprintBrowserPlugins{} - mi := &file_fingerprint_proto_msgTypes[10] + mi := &file_fingerprint_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1109,7 +1237,7 @@ func (x *FingerprintBrowserPlugins) String() string { func (*FingerprintBrowserPlugins) ProtoMessage() {} func (x *FingerprintBrowserPlugins) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[10] + mi := &file_fingerprint_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1122,7 +1250,7 @@ func (x *FingerprintBrowserPlugins) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBrowserPlugins.ProtoReflect.Descriptor instead. func (*FingerprintBrowserPlugins) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{10} + return file_fingerprint_proto_rawDescGZIP(), []int{12} } func (x *FingerprintBrowserPlugins) GetIsValidPluginArray() bool { @@ -1170,7 +1298,7 @@ type FingerprintBrowserExtensions struct { func (x *FingerprintBrowserExtensions) Reset() { *x = FingerprintBrowserExtensions{} - mi := &file_fingerprint_proto_msgTypes[11] + mi := &file_fingerprint_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1182,7 +1310,7 @@ func (x *FingerprintBrowserExtensions) String() string { func (*FingerprintBrowserExtensions) ProtoMessage() {} func (x *FingerprintBrowserExtensions) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[11] + mi := &file_fingerprint_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1195,7 +1323,7 @@ func (x *FingerprintBrowserExtensions) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBrowserExtensions.ProtoReflect.Descriptor instead. func (*FingerprintBrowserExtensions) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{11} + return file_fingerprint_proto_rawDescGZIP(), []int{13} } func (x *FingerprintBrowserExtensions) GetBitmask() string { @@ -1228,7 +1356,7 @@ type FingerprintBrowserHighEntropyValues struct { func (x *FingerprintBrowserHighEntropyValues) Reset() { *x = FingerprintBrowserHighEntropyValues{} - mi := &file_fingerprint_proto_msgTypes[12] + mi := &file_fingerprint_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1240,7 +1368,7 @@ func (x *FingerprintBrowserHighEntropyValues) String() string { func (*FingerprintBrowserHighEntropyValues) ProtoMessage() {} func (x *FingerprintBrowserHighEntropyValues) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[12] + mi := &file_fingerprint_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1253,7 +1381,7 @@ func (x *FingerprintBrowserHighEntropyValues) ProtoReflect() protoreflect.Messag // Deprecated: Use FingerprintBrowserHighEntropyValues.ProtoReflect.Descriptor instead. func (*FingerprintBrowserHighEntropyValues) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{12} + return file_fingerprint_proto_rawDescGZIP(), []int{14} } func (x *FingerprintBrowserHighEntropyValues) GetArchitecture() string { @@ -1322,7 +1450,7 @@ type FingerprintBrandVersion struct { func (x *FingerprintBrandVersion) Reset() { *x = FingerprintBrandVersion{} - mi := &file_fingerprint_proto_msgTypes[13] + mi := &file_fingerprint_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1334,7 +1462,7 @@ func (x *FingerprintBrandVersion) String() string { func (*FingerprintBrandVersion) ProtoMessage() {} func (x *FingerprintBrandVersion) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[13] + mi := &file_fingerprint_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1347,7 +1475,7 @@ func (x *FingerprintBrandVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBrandVersion.ProtoReflect.Descriptor instead. func (*FingerprintBrandVersion) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{13} + return file_fingerprint_proto_rawDescGZIP(), []int{15} } func (x *FingerprintBrandVersion) GetBrand() string { @@ -1374,7 +1502,7 @@ type FingerprintBrowserToSourceError struct { func (x *FingerprintBrowserToSourceError) Reset() { *x = FingerprintBrowserToSourceError{} - mi := &file_fingerprint_proto_msgTypes[14] + mi := &file_fingerprint_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1386,7 +1514,7 @@ func (x *FingerprintBrowserToSourceError) String() string { func (*FingerprintBrowserToSourceError) ProtoMessage() {} func (x *FingerprintBrowserToSourceError) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[14] + mi := &file_fingerprint_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1399,7 +1527,7 @@ func (x *FingerprintBrowserToSourceError) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBrowserToSourceError.ProtoReflect.Descriptor instead. func (*FingerprintBrowserToSourceError) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{14} + return file_fingerprint_proto_rawDescGZIP(), []int{16} } func (x *FingerprintBrowserToSourceError) GetToSourceError() string { @@ -1427,7 +1555,7 @@ type FingerprintGraphics struct { func (x *FingerprintGraphics) Reset() { *x = FingerprintGraphics{} - mi := &file_fingerprint_proto_msgTypes[15] + mi := &file_fingerprint_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1439,7 +1567,7 @@ func (x *FingerprintGraphics) String() string { func (*FingerprintGraphics) ProtoMessage() {} func (x *FingerprintGraphics) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[15] + mi := &file_fingerprint_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1452,7 +1580,7 @@ func (x *FingerprintGraphics) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintGraphics.ProtoReflect.Descriptor instead. func (*FingerprintGraphics) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{15} + return file_fingerprint_proto_rawDescGZIP(), []int{17} } func (x *FingerprintGraphics) GetWebGL() *FingerprintGraphicsWebGL { @@ -1486,7 +1614,7 @@ type FingerprintGraphicsWebGL struct { func (x *FingerprintGraphicsWebGL) Reset() { *x = FingerprintGraphicsWebGL{} - mi := &file_fingerprint_proto_msgTypes[16] + mi := &file_fingerprint_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1498,7 +1626,7 @@ func (x *FingerprintGraphicsWebGL) String() string { func (*FingerprintGraphicsWebGL) ProtoMessage() {} func (x *FingerprintGraphicsWebGL) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[16] + mi := &file_fingerprint_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1511,7 +1639,7 @@ func (x *FingerprintGraphicsWebGL) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintGraphicsWebGL.ProtoReflect.Descriptor instead. func (*FingerprintGraphicsWebGL) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{16} + return file_fingerprint_proto_rawDescGZIP(), []int{18} } func (x *FingerprintGraphicsWebGL) GetVendor() string { @@ -1540,7 +1668,7 @@ type FingerprintGraphicsWebGPU struct { func (x *FingerprintGraphicsWebGPU) Reset() { *x = FingerprintGraphicsWebGPU{} - mi := &file_fingerprint_proto_msgTypes[17] + mi := &file_fingerprint_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1552,7 +1680,7 @@ func (x *FingerprintGraphicsWebGPU) String() string { func (*FingerprintGraphicsWebGPU) ProtoMessage() {} func (x *FingerprintGraphicsWebGPU) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[17] + mi := &file_fingerprint_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1565,7 +1693,7 @@ func (x *FingerprintGraphicsWebGPU) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintGraphicsWebGPU.ProtoReflect.Descriptor instead. func (*FingerprintGraphicsWebGPU) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{17} + return file_fingerprint_proto_rawDescGZIP(), []int{19} } func (x *FingerprintGraphicsWebGPU) GetVendor() string { @@ -1606,7 +1734,7 @@ type FingerprintGraphicsCanvas struct { func (x *FingerprintGraphicsCanvas) Reset() { *x = FingerprintGraphicsCanvas{} - mi := &file_fingerprint_proto_msgTypes[18] + mi := &file_fingerprint_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1618,7 +1746,7 @@ func (x *FingerprintGraphicsCanvas) String() string { func (*FingerprintGraphicsCanvas) ProtoMessage() {} func (x *FingerprintGraphicsCanvas) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[18] + mi := &file_fingerprint_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1631,7 +1759,7 @@ func (x *FingerprintGraphicsCanvas) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintGraphicsCanvas.ProtoReflect.Descriptor instead. func (*FingerprintGraphicsCanvas) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{18} + return file_fingerprint_proto_rawDescGZIP(), []int{20} } func (x *FingerprintGraphicsCanvas) GetHasModifiedCanvas() bool { @@ -1663,7 +1791,7 @@ type FingerprintCodecs struct { func (x *FingerprintCodecs) Reset() { *x = FingerprintCodecs{} - mi := &file_fingerprint_proto_msgTypes[19] + mi := &file_fingerprint_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1675,7 +1803,7 @@ func (x *FingerprintCodecs) String() string { func (*FingerprintCodecs) ProtoMessage() {} func (x *FingerprintCodecs) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[19] + mi := &file_fingerprint_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1688,7 +1816,7 @@ func (x *FingerprintCodecs) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintCodecs.ProtoReflect.Descriptor instead. func (*FingerprintCodecs) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{19} + return file_fingerprint_proto_rawDescGZIP(), []int{21} } func (x *FingerprintCodecs) GetAudioCanPlayTypeHash() string { @@ -1750,7 +1878,7 @@ type FingerprintLocale struct { func (x *FingerprintLocale) Reset() { *x = FingerprintLocale{} - mi := &file_fingerprint_proto_msgTypes[20] + mi := &file_fingerprint_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1762,7 +1890,7 @@ func (x *FingerprintLocale) String() string { func (*FingerprintLocale) ProtoMessage() {} func (x *FingerprintLocale) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[20] + mi := &file_fingerprint_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1775,7 +1903,7 @@ func (x *FingerprintLocale) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintLocale.ProtoReflect.Descriptor instead. func (*FingerprintLocale) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{20} + return file_fingerprint_proto_rawDescGZIP(), []int{22} } func (x *FingerprintLocale) GetInternationalization() *FingerprintLocaleInternationalization { @@ -1802,7 +1930,7 @@ type FingerprintLocaleInternationalization struct { func (x *FingerprintLocaleInternationalization) Reset() { *x = FingerprintLocaleInternationalization{} - mi := &file_fingerprint_proto_msgTypes[21] + mi := &file_fingerprint_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1814,7 +1942,7 @@ func (x *FingerprintLocaleInternationalization) String() string { func (*FingerprintLocaleInternationalization) ProtoMessage() {} func (x *FingerprintLocaleInternationalization) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[21] + mi := &file_fingerprint_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1827,7 +1955,7 @@ func (x *FingerprintLocaleInternationalization) ProtoReflect() protoreflect.Mess // Deprecated: Use FingerprintLocaleInternationalization.ProtoReflect.Descriptor instead. func (*FingerprintLocaleInternationalization) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{21} + return file_fingerprint_proto_rawDescGZIP(), []int{23} } func (x *FingerprintLocaleInternationalization) GetTimezone() string { @@ -1854,7 +1982,7 @@ type FingerprintLocaleLanguages struct { func (x *FingerprintLocaleLanguages) Reset() { *x = FingerprintLocaleLanguages{} - mi := &file_fingerprint_proto_msgTypes[22] + mi := &file_fingerprint_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1866,7 +1994,7 @@ func (x *FingerprintLocaleLanguages) String() string { func (*FingerprintLocaleLanguages) ProtoMessage() {} func (x *FingerprintLocaleLanguages) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[22] + mi := &file_fingerprint_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1879,7 +2007,7 @@ func (x *FingerprintLocaleLanguages) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintLocaleLanguages.ProtoReflect.Descriptor instead. func (*FingerprintLocaleLanguages) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{22} + return file_fingerprint_proto_rawDescGZIP(), []int{24} } func (x *FingerprintLocaleLanguages) GetLanguages() []string { @@ -1906,7 +2034,7 @@ type FingerprintContexts struct { func (x *FingerprintContexts) Reset() { *x = FingerprintContexts{} - mi := &file_fingerprint_proto_msgTypes[23] + mi := &file_fingerprint_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2046,7 @@ func (x *FingerprintContexts) String() string { func (*FingerprintContexts) ProtoMessage() {} func (x *FingerprintContexts) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[23] + mi := &file_fingerprint_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2059,7 @@ func (x *FingerprintContexts) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintContexts.ProtoReflect.Descriptor instead. func (*FingerprintContexts) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{23} + return file_fingerprint_proto_rawDescGZIP(), []int{25} } func (x *FingerprintContexts) GetIframe() *FingerprintIframeContext { @@ -1962,7 +2090,7 @@ type FingerprintIframeContext struct { func (x *FingerprintIframeContext) Reset() { *x = FingerprintIframeContext{} - mi := &file_fingerprint_proto_msgTypes[24] + mi := &file_fingerprint_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1974,7 +2102,7 @@ func (x *FingerprintIframeContext) String() string { func (*FingerprintIframeContext) ProtoMessage() {} func (x *FingerprintIframeContext) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[24] + mi := &file_fingerprint_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1987,7 +2115,7 @@ func (x *FingerprintIframeContext) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintIframeContext.ProtoReflect.Descriptor instead. func (*FingerprintIframeContext) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{24} + return file_fingerprint_proto_rawDescGZIP(), []int{26} } func (x *FingerprintIframeContext) GetWebdriver() bool { @@ -2047,7 +2175,7 @@ type FingerprintWebWorkerContext struct { func (x *FingerprintWebWorkerContext) Reset() { *x = FingerprintWebWorkerContext{} - mi := &file_fingerprint_proto_msgTypes[25] + mi := &file_fingerprint_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2059,7 +2187,7 @@ func (x *FingerprintWebWorkerContext) String() string { func (*FingerprintWebWorkerContext) ProtoMessage() {} func (x *FingerprintWebWorkerContext) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[25] + mi := &file_fingerprint_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2072,7 +2200,7 @@ func (x *FingerprintWebWorkerContext) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintWebWorkerContext.ProtoReflect.Descriptor instead. func (*FingerprintWebWorkerContext) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{25} + return file_fingerprint_proto_rawDescGZIP(), []int{27} } func (x *FingerprintWebWorkerContext) GetVendor() string { @@ -2153,7 +2281,7 @@ type FingerprintFastBotDetectionDetails struct { func (x *FingerprintFastBotDetectionDetails) Reset() { *x = FingerprintFastBotDetectionDetails{} - mi := &file_fingerprint_proto_msgTypes[26] + mi := &file_fingerprint_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2165,7 +2293,7 @@ func (x *FingerprintFastBotDetectionDetails) String() string { func (*FingerprintFastBotDetectionDetails) ProtoMessage() {} func (x *FingerprintFastBotDetectionDetails) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[26] + mi := &file_fingerprint_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2178,7 +2306,7 @@ func (x *FingerprintFastBotDetectionDetails) ProtoReflect() protoreflect.Message // Deprecated: Use FingerprintFastBotDetectionDetails.ProtoReflect.Descriptor instead. func (*FingerprintFastBotDetectionDetails) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{26} + return file_fingerprint_proto_rawDescGZIP(), []int{28} } func (x *FingerprintFastBotDetectionDetails) GetHeadlessChromeScreenResolution() *FingerprintDetectionResult { @@ -2337,7 +2465,7 @@ type FingerprintDetectionResult struct { func (x *FingerprintDetectionResult) Reset() { *x = FingerprintDetectionResult{} - mi := &file_fingerprint_proto_msgTypes[27] + mi := &file_fingerprint_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2349,7 +2477,7 @@ func (x *FingerprintDetectionResult) String() string { func (*FingerprintDetectionResult) ProtoMessage() {} func (x *FingerprintDetectionResult) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[27] + mi := &file_fingerprint_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2362,7 +2490,7 @@ func (x *FingerprintDetectionResult) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintDetectionResult.ProtoReflect.Descriptor instead. func (*FingerprintDetectionResult) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{27} + return file_fingerprint_proto_rawDescGZIP(), []int{29} } func (x *FingerprintDetectionResult) GetDetected() bool { @@ -2403,7 +2531,7 @@ type FingerprintBotAlias struct { func (x *FingerprintBotAlias) Reset() { *x = FingerprintBotAlias{} - mi := &file_fingerprint_proto_msgTypes[28] + mi := &file_fingerprint_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2415,7 +2543,7 @@ func (x *FingerprintBotAlias) String() string { func (*FingerprintBotAlias) ProtoMessage() {} func (x *FingerprintBotAlias) ProtoReflect() protoreflect.Message { - mi := &file_fingerprint_proto_msgTypes[28] + mi := &file_fingerprint_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2428,7 +2556,7 @@ func (x *FingerprintBotAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use FingerprintBotAlias.ProtoReflect.Descriptor instead. func (*FingerprintBotAlias) Descriptor() ([]byte, []int) { - return file_fingerprint_proto_rawDescGZIP(), []int{28} + return file_fingerprint_proto_rawDescGZIP(), []int{30} } func (x *FingerprintBotAlias) GetHeadlessChromeScreenResolution() bool { @@ -2627,14 +2755,15 @@ const file_fingerprint_proto_rawDesc = "" + "\n" + "playwright\x18\x05 \x01(\bR\n" + "playwright\x12B\n" + - "\x1cnavigatorPropertyDescriptors\x18\x06 \x01(\tR\x1cnavigatorPropertyDescriptors\"\xe2\x02\n" + + "\x1cnavigatorPropertyDescriptors\x18\x06 \x01(\tR\x1cnavigatorPropertyDescriptors\"\xa6\x03\n" + "\x11fingerprintDevice\x12\x1a\n" + "\bcpuCount\x18\x01 \x01(\x05R\bcpuCount\x12\x16\n" + "\x06memory\x18\x02 \x01(\x05R\x06memory\x12\x1a\n" + "\bplatform\x18\x03 \x01(\tR\bplatform\x12T\n" + "\x10screenResolution\x18\x04 \x01(\v2(.fingerprint.fingerprintScreenResolutionR\x10screenResolution\x12W\n" + "\x11multimediaDevices\x18\x05 \x01(\v2).fingerprint.fingerprintMultimediaDevicesR\x11multimediaDevices\x12N\n" + - "\fmediaQueries\x18\x06 \x01(\v2*.fingerprint.fingerprintDeviceMediaQueriesR\fmediaQueries\"\xd1\x02\n" + + "\fmediaQueries\x18\x06 \x01(\v2*.fingerprint.fingerprintDeviceMediaQueriesR\fmediaQueries\x12B\n" + + "\bkeyboard\x18\a \x01(\v2&.fingerprint.fingerprintDeviceKeyboardR\bkeyboard\"\xd1\x02\n" + "\x1bfingerprintScreenResolution\x12\x14\n" + "\x05width\x18\x01 \x01(\x05R\x05width\x12\x16\n" + "\x06height\x18\x02 \x01(\x05R\x06height\x12\x1e\n" + @@ -2670,7 +2799,12 @@ const file_fingerprint_proto_rawDesc = "" + "\banyHover\x18\b \x01(\bR\banyHover\x12\x1e\n" + "\n" + "colorDepth\x18\t \x01(\x05R\n" + - "colorDepth\"\xe2\x03\n" + + "colorDepth\"S\n" + + "\x19fingerprintDeviceKeyboard\x12\x16\n" + + "\x06layout\x18\x01 \x01(\tR\x06layout\x12\x1e\n" + + "\n" + + "layoutSize\x18\x02 \x01(\x05R\n" + + "layoutSize\"\x95\x04\n" + "\x12fingerprintBrowser\x12\x1c\n" + "\tuserAgent\x18\x01 \x01(\tR\tuserAgent\x12C\n" + "\bfeatures\x18\x02 \x01(\v2'.fingerprint.fingerprintBrowserFeaturesR\bfeatures\x12@\n" + @@ -2681,7 +2815,11 @@ const file_fingerprint_proto_rawDesc = "" + "\x11highEntropyValues\x18\x05 \x01(\v20.fingerprint.fingerprintBrowserHighEntropyValuesR\x11highEntropyValues\x12\x12\n" + "\x04etsl\x18\x06 \x01(\x05R\x04etsl\x12\x14\n" + "\x05maths\x18\a \x01(\tR\x05maths\x12R\n" + - "\rtoSourceError\x18\b \x01(\v2,.fingerprint.fingerprintBrowserToSourceErrorR\rtoSourceError\"\xa2\b\n" + + "\rtoSourceError\x18\b \x01(\v2,.fingerprint.fingerprintBrowserToSourceErrorR\rtoSourceError\x121\n" + + "\x02ai\x18\t \x01(\v2!.fingerprint.fingerprintBrowserAIR\x02ai\"\x96\x01\n" + + "\x14fingerprintBrowserAI\x126\n" + + "\x16summarizerAvailability\x18\x01 \x01(\tR\x16summarizerAvailability\x12F\n" + + "\x1esummarizerLanguageAvailability\x18\x02 \x01(\tR\x1esummarizerLanguageAvailability\"\xc2\b\n" + "\x1afingerprintBrowserFeatures\x12\x18\n" + "\abitmask\x18\x01 \x01(\tR\abitmask\x12\x16\n" + "\x06chrome\x18\x02 \x01(\bR\x06chrome\x12\x14\n" + @@ -2714,7 +2852,10 @@ const file_fingerprint_proto_rawDesc = "" + "\veditContext\x18\x1a \x01(\bR\veditContext\x12 \n" + "\vfencedFrame\x18\x1b \x01(\bR\vfencedFrame\x12\x1c\n" + "\tsanitizer\x18\x1c \x01(\bR\tsanitizer\x12$\n" + - "\rotpCredential\x18\x1d \x01(\bR\rotpCredential\"\xef\x01\n" + + "\rotpCredential\x18\x1d \x01(\bR\rotpCredential\x12\x1e\n" + + "\n" + + "sumPrecise\x18\x1e \x01(\bR\n" + + "sumPrecise\"\xef\x01\n" + "\x19fingerprintBrowserPlugins\x12.\n" + "\x12isValidPluginArray\x18\x01 \x01(\bR\x12isValidPluginArray\x12 \n" + "\vpluginCount\x18\x02 \x01(\x05R\vpluginCount\x12(\n" + @@ -2856,7 +2997,7 @@ func file_fingerprint_proto_rawDescGZIP() []byte { return file_fingerprint_proto_rawDescData } -var file_fingerprint_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_fingerprint_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_fingerprint_proto_goTypes = []any{ (*FingerprintData)(nil), // 0: fingerprint.FingerprintData (*ChallengeCookie)(nil), // 1: fingerprint.ChallengeCookie @@ -2866,82 +3007,86 @@ var file_fingerprint_proto_goTypes = []any{ (*FingerprintScreenResolution)(nil), // 5: fingerprint.fingerprintScreenResolution (*FingerprintMultimediaDevices)(nil), // 6: fingerprint.fingerprintMultimediaDevices (*FingerprintDeviceMediaQueries)(nil), // 7: fingerprint.fingerprintDeviceMediaQueries - (*FingerprintBrowser)(nil), // 8: fingerprint.fingerprintBrowser - (*FingerprintBrowserFeatures)(nil), // 9: fingerprint.fingerprintBrowserFeatures - (*FingerprintBrowserPlugins)(nil), // 10: fingerprint.fingerprintBrowserPlugins - (*FingerprintBrowserExtensions)(nil), // 11: fingerprint.fingerprintBrowserExtensions - (*FingerprintBrowserHighEntropyValues)(nil), // 12: fingerprint.fingerprintBrowserHighEntropyValues - (*FingerprintBrandVersion)(nil), // 13: fingerprint.fingerprintBrandVersion - (*FingerprintBrowserToSourceError)(nil), // 14: fingerprint.fingerprintBrowserToSourceError - (*FingerprintGraphics)(nil), // 15: fingerprint.fingerprintGraphics - (*FingerprintGraphicsWebGL)(nil), // 16: fingerprint.fingerprintGraphicsWebGL - (*FingerprintGraphicsWebGPU)(nil), // 17: fingerprint.fingerprintGraphicsWebGPU - (*FingerprintGraphicsCanvas)(nil), // 18: fingerprint.fingerprintGraphicsCanvas - (*FingerprintCodecs)(nil), // 19: fingerprint.fingerprintCodecs - (*FingerprintLocale)(nil), // 20: fingerprint.fingerprintLocale - (*FingerprintLocaleInternationalization)(nil), // 21: fingerprint.fingerprintLocaleInternationalization - (*FingerprintLocaleLanguages)(nil), // 22: fingerprint.fingerprintLocaleLanguages - (*FingerprintContexts)(nil), // 23: fingerprint.fingerprintContexts - (*FingerprintIframeContext)(nil), // 24: fingerprint.fingerprintIframeContext - (*FingerprintWebWorkerContext)(nil), // 25: fingerprint.fingerprintWebWorkerContext - (*FingerprintFastBotDetectionDetails)(nil), // 26: fingerprint.fingerprintFastBotDetectionDetails - (*FingerprintDetectionResult)(nil), // 27: fingerprint.fingerprintDetectionResult - (*FingerprintBotAlias)(nil), // 28: fingerprint.fingerprintBotAlias + (*FingerprintDeviceKeyboard)(nil), // 8: fingerprint.fingerprintDeviceKeyboard + (*FingerprintBrowser)(nil), // 9: fingerprint.fingerprintBrowser + (*FingerprintBrowserAI)(nil), // 10: fingerprint.fingerprintBrowserAI + (*FingerprintBrowserFeatures)(nil), // 11: fingerprint.fingerprintBrowserFeatures + (*FingerprintBrowserPlugins)(nil), // 12: fingerprint.fingerprintBrowserPlugins + (*FingerprintBrowserExtensions)(nil), // 13: fingerprint.fingerprintBrowserExtensions + (*FingerprintBrowserHighEntropyValues)(nil), // 14: fingerprint.fingerprintBrowserHighEntropyValues + (*FingerprintBrandVersion)(nil), // 15: fingerprint.fingerprintBrandVersion + (*FingerprintBrowserToSourceError)(nil), // 16: fingerprint.fingerprintBrowserToSourceError + (*FingerprintGraphics)(nil), // 17: fingerprint.fingerprintGraphics + (*FingerprintGraphicsWebGL)(nil), // 18: fingerprint.fingerprintGraphicsWebGL + (*FingerprintGraphicsWebGPU)(nil), // 19: fingerprint.fingerprintGraphicsWebGPU + (*FingerprintGraphicsCanvas)(nil), // 20: fingerprint.fingerprintGraphicsCanvas + (*FingerprintCodecs)(nil), // 21: fingerprint.fingerprintCodecs + (*FingerprintLocale)(nil), // 22: fingerprint.fingerprintLocale + (*FingerprintLocaleInternationalization)(nil), // 23: fingerprint.fingerprintLocaleInternationalization + (*FingerprintLocaleLanguages)(nil), // 24: fingerprint.fingerprintLocaleLanguages + (*FingerprintContexts)(nil), // 25: fingerprint.fingerprintContexts + (*FingerprintIframeContext)(nil), // 26: fingerprint.fingerprintIframeContext + (*FingerprintWebWorkerContext)(nil), // 27: fingerprint.fingerprintWebWorkerContext + (*FingerprintFastBotDetectionDetails)(nil), // 28: fingerprint.fingerprintFastBotDetectionDetails + (*FingerprintDetectionResult)(nil), // 29: fingerprint.fingerprintDetectionResult + (*FingerprintBotAlias)(nil), // 30: fingerprint.fingerprintBotAlias } var file_fingerprint_proto_depIdxs = []int32{ 2, // 0: fingerprint.FingerprintData.signals:type_name -> fingerprint.fingerprintSignals - 26, // 1: fingerprint.FingerprintData.fastBotDetectionDetails:type_name -> fingerprint.fingerprintFastBotDetectionDetails - 28, // 2: fingerprint.FingerprintData.bot:type_name -> fingerprint.fingerprintBotAlias + 28, // 1: fingerprint.FingerprintData.fastBotDetectionDetails:type_name -> fingerprint.fingerprintFastBotDetectionDetails + 30, // 2: fingerprint.FingerprintData.bot:type_name -> fingerprint.fingerprintBotAlias 0, // 3: fingerprint.ChallengeCookie.fingerprint:type_name -> fingerprint.FingerprintData 3, // 4: fingerprint.fingerprintSignals.automation:type_name -> fingerprint.fingerprintAutomation 4, // 5: fingerprint.fingerprintSignals.device:type_name -> fingerprint.fingerprintDevice - 8, // 6: fingerprint.fingerprintSignals.browser:type_name -> fingerprint.fingerprintBrowser - 15, // 7: fingerprint.fingerprintSignals.graphics:type_name -> fingerprint.fingerprintGraphics - 19, // 8: fingerprint.fingerprintSignals.codecs:type_name -> fingerprint.fingerprintCodecs - 20, // 9: fingerprint.fingerprintSignals.locale:type_name -> fingerprint.fingerprintLocale - 23, // 10: fingerprint.fingerprintSignals.contexts:type_name -> fingerprint.fingerprintContexts + 9, // 6: fingerprint.fingerprintSignals.browser:type_name -> fingerprint.fingerprintBrowser + 17, // 7: fingerprint.fingerprintSignals.graphics:type_name -> fingerprint.fingerprintGraphics + 21, // 8: fingerprint.fingerprintSignals.codecs:type_name -> fingerprint.fingerprintCodecs + 22, // 9: fingerprint.fingerprintSignals.locale:type_name -> fingerprint.fingerprintLocale + 25, // 10: fingerprint.fingerprintSignals.contexts:type_name -> fingerprint.fingerprintContexts 5, // 11: fingerprint.fingerprintDevice.screenResolution:type_name -> fingerprint.fingerprintScreenResolution 6, // 12: fingerprint.fingerprintDevice.multimediaDevices:type_name -> fingerprint.fingerprintMultimediaDevices 7, // 13: fingerprint.fingerprintDevice.mediaQueries:type_name -> fingerprint.fingerprintDeviceMediaQueries - 9, // 14: fingerprint.fingerprintBrowser.features:type_name -> fingerprint.fingerprintBrowserFeatures - 10, // 15: fingerprint.fingerprintBrowser.plugins:type_name -> fingerprint.fingerprintBrowserPlugins - 11, // 16: fingerprint.fingerprintBrowser.extensions:type_name -> fingerprint.fingerprintBrowserExtensions - 12, // 17: fingerprint.fingerprintBrowser.highEntropyValues:type_name -> fingerprint.fingerprintBrowserHighEntropyValues - 14, // 18: fingerprint.fingerprintBrowser.toSourceError:type_name -> fingerprint.fingerprintBrowserToSourceError - 13, // 19: fingerprint.fingerprintBrowserHighEntropyValues.brands:type_name -> fingerprint.fingerprintBrandVersion - 16, // 20: fingerprint.fingerprintGraphics.webGL:type_name -> fingerprint.fingerprintGraphicsWebGL - 17, // 21: fingerprint.fingerprintGraphics.webgpu:type_name -> fingerprint.fingerprintGraphicsWebGPU - 18, // 22: fingerprint.fingerprintGraphics.canvas:type_name -> fingerprint.fingerprintGraphicsCanvas - 21, // 23: fingerprint.fingerprintLocale.internationalization:type_name -> fingerprint.fingerprintLocaleInternationalization - 22, // 24: fingerprint.fingerprintLocale.languages:type_name -> fingerprint.fingerprintLocaleLanguages - 24, // 25: fingerprint.fingerprintContexts.iframe:type_name -> fingerprint.fingerprintIframeContext - 25, // 26: fingerprint.fingerprintContexts.webWorker:type_name -> fingerprint.fingerprintWebWorkerContext - 27, // 27: fingerprint.fingerprintFastBotDetectionDetails.headlessChromeScreenResolution:type_name -> fingerprint.fingerprintDetectionResult - 27, // 28: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriver:type_name -> fingerprint.fingerprintDetectionResult - 27, // 29: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWritable:type_name -> fingerprint.fingerprintDetectionResult - 27, // 30: fingerprint.fingerprintFastBotDetectionDetails.hasSeleniumProperty:type_name -> fingerprint.fingerprintDetectionResult - 27, // 31: fingerprint.fingerprintFastBotDetectionDetails.hasCDP:type_name -> fingerprint.fingerprintDetectionResult - 27, // 32: fingerprint.fingerprintFastBotDetectionDetails.hasPlaywright:type_name -> fingerprint.fingerprintDetectionResult - 27, // 33: fingerprint.fingerprintFastBotDetectionDetails.hasImpossibleDeviceMemory:type_name -> fingerprint.fingerprintDetectionResult - 27, // 34: fingerprint.fingerprintFastBotDetectionDetails.hasHighCPUCount:type_name -> fingerprint.fingerprintDetectionResult - 27, // 35: fingerprint.fingerprintFastBotDetectionDetails.hasMissingChromeObject:type_name -> fingerprint.fingerprintDetectionResult - 27, // 36: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverIframe:type_name -> fingerprint.fingerprintDetectionResult - 27, // 37: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWorker:type_name -> fingerprint.fingerprintDetectionResult - 27, // 38: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchWebGLInWorker:type_name -> fingerprint.fingerprintDetectionResult - 27, // 39: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformIframe:type_name -> fingerprint.fingerprintDetectionResult - 27, // 40: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformWorker:type_name -> fingerprint.fingerprintDetectionResult - 27, // 41: fingerprint.fingerprintFastBotDetectionDetails.hasSwiftshaderRenderer:type_name -> fingerprint.fingerprintDetectionResult - 27, // 42: fingerprint.fingerprintFastBotDetectionDetails.hasUTCTimezone:type_name -> fingerprint.fingerprintDetectionResult - 27, // 43: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchLanguages:type_name -> fingerprint.fingerprintDetectionResult - 27, // 44: fingerprint.fingerprintFastBotDetectionDetails.hasInconsistentEtsl:type_name -> fingerprint.fingerprintDetectionResult - 27, // 45: fingerprint.fingerprintFastBotDetectionDetails.hasBotUserAgent:type_name -> fingerprint.fingerprintDetectionResult - 27, // 46: fingerprint.fingerprintFastBotDetectionDetails.hasGPUMismatch:type_name -> fingerprint.fingerprintDetectionResult - 27, // 47: fingerprint.fingerprintFastBotDetectionDetails.hasPlatformMismatch:type_name -> fingerprint.fingerprintDetectionResult - 48, // [48:48] is the sub-list for method output_type - 48, // [48:48] is the sub-list for method input_type - 48, // [48:48] is the sub-list for extension type_name - 48, // [48:48] is the sub-list for extension extendee - 0, // [0:48] is the sub-list for field type_name + 8, // 14: fingerprint.fingerprintDevice.keyboard:type_name -> fingerprint.fingerprintDeviceKeyboard + 11, // 15: fingerprint.fingerprintBrowser.features:type_name -> fingerprint.fingerprintBrowserFeatures + 12, // 16: fingerprint.fingerprintBrowser.plugins:type_name -> fingerprint.fingerprintBrowserPlugins + 13, // 17: fingerprint.fingerprintBrowser.extensions:type_name -> fingerprint.fingerprintBrowserExtensions + 14, // 18: fingerprint.fingerprintBrowser.highEntropyValues:type_name -> fingerprint.fingerprintBrowserHighEntropyValues + 16, // 19: fingerprint.fingerprintBrowser.toSourceError:type_name -> fingerprint.fingerprintBrowserToSourceError + 10, // 20: fingerprint.fingerprintBrowser.ai:type_name -> fingerprint.fingerprintBrowserAI + 15, // 21: fingerprint.fingerprintBrowserHighEntropyValues.brands:type_name -> fingerprint.fingerprintBrandVersion + 18, // 22: fingerprint.fingerprintGraphics.webGL:type_name -> fingerprint.fingerprintGraphicsWebGL + 19, // 23: fingerprint.fingerprintGraphics.webgpu:type_name -> fingerprint.fingerprintGraphicsWebGPU + 20, // 24: fingerprint.fingerprintGraphics.canvas:type_name -> fingerprint.fingerprintGraphicsCanvas + 23, // 25: fingerprint.fingerprintLocale.internationalization:type_name -> fingerprint.fingerprintLocaleInternationalization + 24, // 26: fingerprint.fingerprintLocale.languages:type_name -> fingerprint.fingerprintLocaleLanguages + 26, // 27: fingerprint.fingerprintContexts.iframe:type_name -> fingerprint.fingerprintIframeContext + 27, // 28: fingerprint.fingerprintContexts.webWorker:type_name -> fingerprint.fingerprintWebWorkerContext + 29, // 29: fingerprint.fingerprintFastBotDetectionDetails.headlessChromeScreenResolution:type_name -> fingerprint.fingerprintDetectionResult + 29, // 30: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriver:type_name -> fingerprint.fingerprintDetectionResult + 29, // 31: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWritable:type_name -> fingerprint.fingerprintDetectionResult + 29, // 32: fingerprint.fingerprintFastBotDetectionDetails.hasSeleniumProperty:type_name -> fingerprint.fingerprintDetectionResult + 29, // 33: fingerprint.fingerprintFastBotDetectionDetails.hasCDP:type_name -> fingerprint.fingerprintDetectionResult + 29, // 34: fingerprint.fingerprintFastBotDetectionDetails.hasPlaywright:type_name -> fingerprint.fingerprintDetectionResult + 29, // 35: fingerprint.fingerprintFastBotDetectionDetails.hasImpossibleDeviceMemory:type_name -> fingerprint.fingerprintDetectionResult + 29, // 36: fingerprint.fingerprintFastBotDetectionDetails.hasHighCPUCount:type_name -> fingerprint.fingerprintDetectionResult + 29, // 37: fingerprint.fingerprintFastBotDetectionDetails.hasMissingChromeObject:type_name -> fingerprint.fingerprintDetectionResult + 29, // 38: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverIframe:type_name -> fingerprint.fingerprintDetectionResult + 29, // 39: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWorker:type_name -> fingerprint.fingerprintDetectionResult + 29, // 40: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchWebGLInWorker:type_name -> fingerprint.fingerprintDetectionResult + 29, // 41: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformIframe:type_name -> fingerprint.fingerprintDetectionResult + 29, // 42: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformWorker:type_name -> fingerprint.fingerprintDetectionResult + 29, // 43: fingerprint.fingerprintFastBotDetectionDetails.hasSwiftshaderRenderer:type_name -> fingerprint.fingerprintDetectionResult + 29, // 44: fingerprint.fingerprintFastBotDetectionDetails.hasUTCTimezone:type_name -> fingerprint.fingerprintDetectionResult + 29, // 45: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchLanguages:type_name -> fingerprint.fingerprintDetectionResult + 29, // 46: fingerprint.fingerprintFastBotDetectionDetails.hasInconsistentEtsl:type_name -> fingerprint.fingerprintDetectionResult + 29, // 47: fingerprint.fingerprintFastBotDetectionDetails.hasBotUserAgent:type_name -> fingerprint.fingerprintDetectionResult + 29, // 48: fingerprint.fingerprintFastBotDetectionDetails.hasGPUMismatch:type_name -> fingerprint.fingerprintDetectionResult + 29, // 49: fingerprint.fingerprintFastBotDetectionDetails.hasPlatformMismatch:type_name -> fingerprint.fingerprintDetectionResult + 50, // [50:50] is the sub-list for method output_type + 50, // [50:50] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_fingerprint_proto_init() } @@ -2955,7 +3100,7 @@ func file_fingerprint_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_fingerprint_proto_rawDesc), len(file_fingerprint_proto_rawDesc)), NumEnums: 0, - NumMessages: 29, + NumMessages: 31, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/appsec/challenge/pb/fingerprint.proto b/pkg/appsec/challenge/pb/fingerprint.proto index 9213eb715..05a072b12 100644 --- a/pkg/appsec/challenge/pb/fingerprint.proto +++ b/pkg/appsec/challenge/pb/fingerprint.proto @@ -52,6 +52,7 @@ message fingerprintDevice { fingerprintScreenResolution screenResolution = 4; fingerprintMultimediaDevices multimediaDevices = 5; fingerprintDeviceMediaQueries mediaQueries = 6; + fingerprintDeviceKeyboard keyboard = 7; } message fingerprintScreenResolution { @@ -84,6 +85,11 @@ message fingerprintDeviceMediaQueries { int32 colorDepth = 9; } +message fingerprintDeviceKeyboard { + string layout = 1; + int32 layoutSize = 2; +} + message fingerprintBrowser { string userAgent = 1; fingerprintBrowserFeatures features = 2; @@ -93,6 +99,12 @@ message fingerprintBrowser { int32 etsl = 6; string maths = 7; fingerprintBrowserToSourceError toSourceError = 8; + fingerprintBrowserAI ai = 9; +} + +message fingerprintBrowserAI { + string summarizerAvailability = 1; + string summarizerLanguageAvailability = 2; } message fingerprintBrowserFeatures { @@ -125,6 +137,7 @@ message fingerprintBrowserFeatures { bool fencedFrame = 27; bool sanitizer = 28; bool otpCredential = 29; + bool sumPrecise = 30; } message fingerprintBrowserPlugins { diff --git a/pkg/protobufs/notifier.pb.go b/pkg/protobufs/notifier.pb.go index f81d11548..1c17416c7 100644 --- a/pkg/protobufs/notifier.pb.go +++ b/pkg/protobufs/notifier.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.35.0 +// protoc v7.35.1 // source: notifier.proto package protobufs diff --git a/pkg/protobufs/notifier_grpc.pb.go b/pkg/protobufs/notifier_grpc.pb.go index 989fe025f..5e439a009 100644 --- a/pkg/protobufs/notifier_grpc.pb.go +++ b/pkg/protobufs/notifier_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.6.2 -// - protoc v7.35.0 +// - protoc v7.35.1 // source: notifier.proto package protobufs