github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/ccl/baseccl/encryption_options.pb.go (about) 1 // Code generated by protoc-gen-gogo. DO NOT EDIT. 2 // source: ccl/baseccl/encryption_options.proto 3 4 package baseccl 5 6 import proto "github.com/gogo/protobuf/proto" 7 import fmt "fmt" 8 import math "math" 9 10 import io "io" 11 12 // Reference imports to suppress errors if they are not otherwise used. 13 var _ = proto.Marshal 14 var _ = fmt.Errorf 15 var _ = math.Inf 16 17 // This is a compile-time assertion to ensure that this generated file 18 // is compatible with the proto package it is being compiled against. 19 // A compilation error at this line likely means your copy of the 20 // proto package needs to be updated. 21 const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package 22 23 type EncryptionKeySource int32 24 25 const ( 26 // Plain key files. 27 EncryptionKeySource_KeyFiles EncryptionKeySource = 0 28 ) 29 30 var EncryptionKeySource_name = map[int32]string{ 31 0: "KeyFiles", 32 } 33 var EncryptionKeySource_value = map[string]int32{ 34 "KeyFiles": 0, 35 } 36 37 func (x EncryptionKeySource) String() string { 38 return proto.EnumName(EncryptionKeySource_name, int32(x)) 39 } 40 func (EncryptionKeySource) EnumDescriptor() ([]byte, []int) { 41 return fileDescriptor_encryption_options_46022063d9b927cf, []int{0} 42 } 43 44 // EncryptionKeyFiles is used when plain key files are passed. 45 type EncryptionKeyFiles struct { 46 CurrentKey string `protobuf:"bytes,1,opt,name=current_key,json=currentKey,proto3" json:"current_key,omitempty"` 47 OldKey string `protobuf:"bytes,2,opt,name=old_key,json=oldKey,proto3" json:"old_key,omitempty"` 48 } 49 50 func (m *EncryptionKeyFiles) Reset() { *m = EncryptionKeyFiles{} } 51 func (m *EncryptionKeyFiles) String() string { return proto.CompactTextString(m) } 52 func (*EncryptionKeyFiles) ProtoMessage() {} 53 func (*EncryptionKeyFiles) Descriptor() ([]byte, []int) { 54 return fileDescriptor_encryption_options_46022063d9b927cf, []int{0} 55 } 56 func (m *EncryptionKeyFiles) XXX_Unmarshal(b []byte) error { 57 return m.Unmarshal(b) 58 } 59 func (m *EncryptionKeyFiles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 60 b = b[:cap(b)] 61 n, err := m.MarshalTo(b) 62 if err != nil { 63 return nil, err 64 } 65 return b[:n], nil 66 } 67 func (dst *EncryptionKeyFiles) XXX_Merge(src proto.Message) { 68 xxx_messageInfo_EncryptionKeyFiles.Merge(dst, src) 69 } 70 func (m *EncryptionKeyFiles) XXX_Size() int { 71 return m.Size() 72 } 73 func (m *EncryptionKeyFiles) XXX_DiscardUnknown() { 74 xxx_messageInfo_EncryptionKeyFiles.DiscardUnknown(m) 75 } 76 77 var xxx_messageInfo_EncryptionKeyFiles proto.InternalMessageInfo 78 79 // EncryptionOptions defines the per-store encryption options. 80 type EncryptionOptions struct { 81 // The store key source. Defines which fields are useful. 82 KeySource EncryptionKeySource `protobuf:"varint,1,opt,name=key_source,json=keySource,proto3,enum=cockroach.ccl.baseccl.EncryptionKeySource" json:"key_source,omitempty"` 83 // Set if key_source == KeyFiles. 84 KeyFiles *EncryptionKeyFiles `protobuf:"bytes,2,opt,name=key_files,json=keyFiles,proto3" json:"key_files,omitempty"` 85 // Default data key rotation in seconds. 86 DataKeyRotationPeriod int64 `protobuf:"varint,3,opt,name=data_key_rotation_period,json=dataKeyRotationPeriod,proto3" json:"data_key_rotation_period,omitempty"` 87 } 88 89 func (m *EncryptionOptions) Reset() { *m = EncryptionOptions{} } 90 func (m *EncryptionOptions) String() string { return proto.CompactTextString(m) } 91 func (*EncryptionOptions) ProtoMessage() {} 92 func (*EncryptionOptions) Descriptor() ([]byte, []int) { 93 return fileDescriptor_encryption_options_46022063d9b927cf, []int{1} 94 } 95 func (m *EncryptionOptions) XXX_Unmarshal(b []byte) error { 96 return m.Unmarshal(b) 97 } 98 func (m *EncryptionOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 99 b = b[:cap(b)] 100 n, err := m.MarshalTo(b) 101 if err != nil { 102 return nil, err 103 } 104 return b[:n], nil 105 } 106 func (dst *EncryptionOptions) XXX_Merge(src proto.Message) { 107 xxx_messageInfo_EncryptionOptions.Merge(dst, src) 108 } 109 func (m *EncryptionOptions) XXX_Size() int { 110 return m.Size() 111 } 112 func (m *EncryptionOptions) XXX_DiscardUnknown() { 113 xxx_messageInfo_EncryptionOptions.DiscardUnknown(m) 114 } 115 116 var xxx_messageInfo_EncryptionOptions proto.InternalMessageInfo 117 118 func init() { 119 proto.RegisterType((*EncryptionKeyFiles)(nil), "cockroach.ccl.baseccl.EncryptionKeyFiles") 120 proto.RegisterType((*EncryptionOptions)(nil), "cockroach.ccl.baseccl.EncryptionOptions") 121 proto.RegisterEnum("cockroach.ccl.baseccl.EncryptionKeySource", EncryptionKeySource_name, EncryptionKeySource_value) 122 } 123 func (m *EncryptionKeyFiles) Marshal() (dAtA []byte, err error) { 124 size := m.Size() 125 dAtA = make([]byte, size) 126 n, err := m.MarshalTo(dAtA) 127 if err != nil { 128 return nil, err 129 } 130 return dAtA[:n], nil 131 } 132 133 func (m *EncryptionKeyFiles) MarshalTo(dAtA []byte) (int, error) { 134 var i int 135 _ = i 136 var l int 137 _ = l 138 if len(m.CurrentKey) > 0 { 139 dAtA[i] = 0xa 140 i++ 141 i = encodeVarintEncryptionOptions(dAtA, i, uint64(len(m.CurrentKey))) 142 i += copy(dAtA[i:], m.CurrentKey) 143 } 144 if len(m.OldKey) > 0 { 145 dAtA[i] = 0x12 146 i++ 147 i = encodeVarintEncryptionOptions(dAtA, i, uint64(len(m.OldKey))) 148 i += copy(dAtA[i:], m.OldKey) 149 } 150 return i, nil 151 } 152 153 func (m *EncryptionOptions) Marshal() (dAtA []byte, err error) { 154 size := m.Size() 155 dAtA = make([]byte, size) 156 n, err := m.MarshalTo(dAtA) 157 if err != nil { 158 return nil, err 159 } 160 return dAtA[:n], nil 161 } 162 163 func (m *EncryptionOptions) MarshalTo(dAtA []byte) (int, error) { 164 var i int 165 _ = i 166 var l int 167 _ = l 168 if m.KeySource != 0 { 169 dAtA[i] = 0x8 170 i++ 171 i = encodeVarintEncryptionOptions(dAtA, i, uint64(m.KeySource)) 172 } 173 if m.KeyFiles != nil { 174 dAtA[i] = 0x12 175 i++ 176 i = encodeVarintEncryptionOptions(dAtA, i, uint64(m.KeyFiles.Size())) 177 n1, err := m.KeyFiles.MarshalTo(dAtA[i:]) 178 if err != nil { 179 return 0, err 180 } 181 i += n1 182 } 183 if m.DataKeyRotationPeriod != 0 { 184 dAtA[i] = 0x18 185 i++ 186 i = encodeVarintEncryptionOptions(dAtA, i, uint64(m.DataKeyRotationPeriod)) 187 } 188 return i, nil 189 } 190 191 func encodeVarintEncryptionOptions(dAtA []byte, offset int, v uint64) int { 192 for v >= 1<<7 { 193 dAtA[offset] = uint8(v&0x7f | 0x80) 194 v >>= 7 195 offset++ 196 } 197 dAtA[offset] = uint8(v) 198 return offset + 1 199 } 200 func (m *EncryptionKeyFiles) Size() (n int) { 201 if m == nil { 202 return 0 203 } 204 var l int 205 _ = l 206 l = len(m.CurrentKey) 207 if l > 0 { 208 n += 1 + l + sovEncryptionOptions(uint64(l)) 209 } 210 l = len(m.OldKey) 211 if l > 0 { 212 n += 1 + l + sovEncryptionOptions(uint64(l)) 213 } 214 return n 215 } 216 217 func (m *EncryptionOptions) Size() (n int) { 218 if m == nil { 219 return 0 220 } 221 var l int 222 _ = l 223 if m.KeySource != 0 { 224 n += 1 + sovEncryptionOptions(uint64(m.KeySource)) 225 } 226 if m.KeyFiles != nil { 227 l = m.KeyFiles.Size() 228 n += 1 + l + sovEncryptionOptions(uint64(l)) 229 } 230 if m.DataKeyRotationPeriod != 0 { 231 n += 1 + sovEncryptionOptions(uint64(m.DataKeyRotationPeriod)) 232 } 233 return n 234 } 235 236 func sovEncryptionOptions(x uint64) (n int) { 237 for { 238 n++ 239 x >>= 7 240 if x == 0 { 241 break 242 } 243 } 244 return n 245 } 246 func sozEncryptionOptions(x uint64) (n int) { 247 return sovEncryptionOptions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) 248 } 249 func (m *EncryptionKeyFiles) Unmarshal(dAtA []byte) error { 250 l := len(dAtA) 251 iNdEx := 0 252 for iNdEx < l { 253 preIndex := iNdEx 254 var wire uint64 255 for shift := uint(0); ; shift += 7 { 256 if shift >= 64 { 257 return ErrIntOverflowEncryptionOptions 258 } 259 if iNdEx >= l { 260 return io.ErrUnexpectedEOF 261 } 262 b := dAtA[iNdEx] 263 iNdEx++ 264 wire |= (uint64(b) & 0x7F) << shift 265 if b < 0x80 { 266 break 267 } 268 } 269 fieldNum := int32(wire >> 3) 270 wireType := int(wire & 0x7) 271 if wireType == 4 { 272 return fmt.Errorf("proto: EncryptionKeyFiles: wiretype end group for non-group") 273 } 274 if fieldNum <= 0 { 275 return fmt.Errorf("proto: EncryptionKeyFiles: illegal tag %d (wire type %d)", fieldNum, wire) 276 } 277 switch fieldNum { 278 case 1: 279 if wireType != 2 { 280 return fmt.Errorf("proto: wrong wireType = %d for field CurrentKey", wireType) 281 } 282 var stringLen uint64 283 for shift := uint(0); ; shift += 7 { 284 if shift >= 64 { 285 return ErrIntOverflowEncryptionOptions 286 } 287 if iNdEx >= l { 288 return io.ErrUnexpectedEOF 289 } 290 b := dAtA[iNdEx] 291 iNdEx++ 292 stringLen |= (uint64(b) & 0x7F) << shift 293 if b < 0x80 { 294 break 295 } 296 } 297 intStringLen := int(stringLen) 298 if intStringLen < 0 { 299 return ErrInvalidLengthEncryptionOptions 300 } 301 postIndex := iNdEx + intStringLen 302 if postIndex > l { 303 return io.ErrUnexpectedEOF 304 } 305 m.CurrentKey = string(dAtA[iNdEx:postIndex]) 306 iNdEx = postIndex 307 case 2: 308 if wireType != 2 { 309 return fmt.Errorf("proto: wrong wireType = %d for field OldKey", wireType) 310 } 311 var stringLen uint64 312 for shift := uint(0); ; shift += 7 { 313 if shift >= 64 { 314 return ErrIntOverflowEncryptionOptions 315 } 316 if iNdEx >= l { 317 return io.ErrUnexpectedEOF 318 } 319 b := dAtA[iNdEx] 320 iNdEx++ 321 stringLen |= (uint64(b) & 0x7F) << shift 322 if b < 0x80 { 323 break 324 } 325 } 326 intStringLen := int(stringLen) 327 if intStringLen < 0 { 328 return ErrInvalidLengthEncryptionOptions 329 } 330 postIndex := iNdEx + intStringLen 331 if postIndex > l { 332 return io.ErrUnexpectedEOF 333 } 334 m.OldKey = string(dAtA[iNdEx:postIndex]) 335 iNdEx = postIndex 336 default: 337 iNdEx = preIndex 338 skippy, err := skipEncryptionOptions(dAtA[iNdEx:]) 339 if err != nil { 340 return err 341 } 342 if skippy < 0 { 343 return ErrInvalidLengthEncryptionOptions 344 } 345 if (iNdEx + skippy) > l { 346 return io.ErrUnexpectedEOF 347 } 348 iNdEx += skippy 349 } 350 } 351 352 if iNdEx > l { 353 return io.ErrUnexpectedEOF 354 } 355 return nil 356 } 357 func (m *EncryptionOptions) Unmarshal(dAtA []byte) error { 358 l := len(dAtA) 359 iNdEx := 0 360 for iNdEx < l { 361 preIndex := iNdEx 362 var wire uint64 363 for shift := uint(0); ; shift += 7 { 364 if shift >= 64 { 365 return ErrIntOverflowEncryptionOptions 366 } 367 if iNdEx >= l { 368 return io.ErrUnexpectedEOF 369 } 370 b := dAtA[iNdEx] 371 iNdEx++ 372 wire |= (uint64(b) & 0x7F) << shift 373 if b < 0x80 { 374 break 375 } 376 } 377 fieldNum := int32(wire >> 3) 378 wireType := int(wire & 0x7) 379 if wireType == 4 { 380 return fmt.Errorf("proto: EncryptionOptions: wiretype end group for non-group") 381 } 382 if fieldNum <= 0 { 383 return fmt.Errorf("proto: EncryptionOptions: illegal tag %d (wire type %d)", fieldNum, wire) 384 } 385 switch fieldNum { 386 case 1: 387 if wireType != 0 { 388 return fmt.Errorf("proto: wrong wireType = %d for field KeySource", wireType) 389 } 390 m.KeySource = 0 391 for shift := uint(0); ; shift += 7 { 392 if shift >= 64 { 393 return ErrIntOverflowEncryptionOptions 394 } 395 if iNdEx >= l { 396 return io.ErrUnexpectedEOF 397 } 398 b := dAtA[iNdEx] 399 iNdEx++ 400 m.KeySource |= (EncryptionKeySource(b) & 0x7F) << shift 401 if b < 0x80 { 402 break 403 } 404 } 405 case 2: 406 if wireType != 2 { 407 return fmt.Errorf("proto: wrong wireType = %d for field KeyFiles", wireType) 408 } 409 var msglen int 410 for shift := uint(0); ; shift += 7 { 411 if shift >= 64 { 412 return ErrIntOverflowEncryptionOptions 413 } 414 if iNdEx >= l { 415 return io.ErrUnexpectedEOF 416 } 417 b := dAtA[iNdEx] 418 iNdEx++ 419 msglen |= (int(b) & 0x7F) << shift 420 if b < 0x80 { 421 break 422 } 423 } 424 if msglen < 0 { 425 return ErrInvalidLengthEncryptionOptions 426 } 427 postIndex := iNdEx + msglen 428 if postIndex > l { 429 return io.ErrUnexpectedEOF 430 } 431 if m.KeyFiles == nil { 432 m.KeyFiles = &EncryptionKeyFiles{} 433 } 434 if err := m.KeyFiles.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { 435 return err 436 } 437 iNdEx = postIndex 438 case 3: 439 if wireType != 0 { 440 return fmt.Errorf("proto: wrong wireType = %d for field DataKeyRotationPeriod", wireType) 441 } 442 m.DataKeyRotationPeriod = 0 443 for shift := uint(0); ; shift += 7 { 444 if shift >= 64 { 445 return ErrIntOverflowEncryptionOptions 446 } 447 if iNdEx >= l { 448 return io.ErrUnexpectedEOF 449 } 450 b := dAtA[iNdEx] 451 iNdEx++ 452 m.DataKeyRotationPeriod |= (int64(b) & 0x7F) << shift 453 if b < 0x80 { 454 break 455 } 456 } 457 default: 458 iNdEx = preIndex 459 skippy, err := skipEncryptionOptions(dAtA[iNdEx:]) 460 if err != nil { 461 return err 462 } 463 if skippy < 0 { 464 return ErrInvalidLengthEncryptionOptions 465 } 466 if (iNdEx + skippy) > l { 467 return io.ErrUnexpectedEOF 468 } 469 iNdEx += skippy 470 } 471 } 472 473 if iNdEx > l { 474 return io.ErrUnexpectedEOF 475 } 476 return nil 477 } 478 func skipEncryptionOptions(dAtA []byte) (n int, err error) { 479 l := len(dAtA) 480 iNdEx := 0 481 for iNdEx < l { 482 var wire uint64 483 for shift := uint(0); ; shift += 7 { 484 if shift >= 64 { 485 return 0, ErrIntOverflowEncryptionOptions 486 } 487 if iNdEx >= l { 488 return 0, io.ErrUnexpectedEOF 489 } 490 b := dAtA[iNdEx] 491 iNdEx++ 492 wire |= (uint64(b) & 0x7F) << shift 493 if b < 0x80 { 494 break 495 } 496 } 497 wireType := int(wire & 0x7) 498 switch wireType { 499 case 0: 500 for shift := uint(0); ; shift += 7 { 501 if shift >= 64 { 502 return 0, ErrIntOverflowEncryptionOptions 503 } 504 if iNdEx >= l { 505 return 0, io.ErrUnexpectedEOF 506 } 507 iNdEx++ 508 if dAtA[iNdEx-1] < 0x80 { 509 break 510 } 511 } 512 return iNdEx, nil 513 case 1: 514 iNdEx += 8 515 return iNdEx, nil 516 case 2: 517 var length int 518 for shift := uint(0); ; shift += 7 { 519 if shift >= 64 { 520 return 0, ErrIntOverflowEncryptionOptions 521 } 522 if iNdEx >= l { 523 return 0, io.ErrUnexpectedEOF 524 } 525 b := dAtA[iNdEx] 526 iNdEx++ 527 length |= (int(b) & 0x7F) << shift 528 if b < 0x80 { 529 break 530 } 531 } 532 iNdEx += length 533 if length < 0 { 534 return 0, ErrInvalidLengthEncryptionOptions 535 } 536 return iNdEx, nil 537 case 3: 538 for { 539 var innerWire uint64 540 var start int = iNdEx 541 for shift := uint(0); ; shift += 7 { 542 if shift >= 64 { 543 return 0, ErrIntOverflowEncryptionOptions 544 } 545 if iNdEx >= l { 546 return 0, io.ErrUnexpectedEOF 547 } 548 b := dAtA[iNdEx] 549 iNdEx++ 550 innerWire |= (uint64(b) & 0x7F) << shift 551 if b < 0x80 { 552 break 553 } 554 } 555 innerWireType := int(innerWire & 0x7) 556 if innerWireType == 4 { 557 break 558 } 559 next, err := skipEncryptionOptions(dAtA[start:]) 560 if err != nil { 561 return 0, err 562 } 563 iNdEx = start + next 564 } 565 return iNdEx, nil 566 case 4: 567 return iNdEx, nil 568 case 5: 569 iNdEx += 4 570 return iNdEx, nil 571 default: 572 return 0, fmt.Errorf("proto: illegal wireType %d", wireType) 573 } 574 } 575 panic("unreachable") 576 } 577 578 var ( 579 ErrInvalidLengthEncryptionOptions = fmt.Errorf("proto: negative length found during unmarshaling") 580 ErrIntOverflowEncryptionOptions = fmt.Errorf("proto: integer overflow") 581 ) 582 583 func init() { 584 proto.RegisterFile("ccl/baseccl/encryption_options.proto", fileDescriptor_encryption_options_46022063d9b927cf) 585 } 586 587 var fileDescriptor_encryption_options_46022063d9b927cf = []byte{ 588 // 317 bytes of a gzipped FileDescriptorProto 589 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0x4f, 0x4f, 0xf2, 0x40, 590 0x10, 0xc6, 0xbb, 0x2f, 0x09, 0x7f, 0x86, 0x37, 0x46, 0x57, 0x89, 0xc4, 0xc3, 0x4a, 0xd0, 0x03, 591 0x70, 0x28, 0x09, 0x1e, 0xbc, 0x9b, 0x48, 0x62, 0x9a, 0xa8, 0xa9, 0x37, 0x2f, 0x4d, 0xd9, 0x8e, 592 0x48, 0xda, 0x30, 0x64, 0x5b, 0x0e, 0xfb, 0x2d, 0xfc, 0x58, 0x1c, 0x39, 0x72, 0x53, 0xcb, 0x17, 593 0x31, 0xbb, 0xb4, 0x1a, 0x13, 0x0e, 0x9e, 0x66, 0xda, 0x67, 0xf6, 0x99, 0xdf, 0xb3, 0x0b, 0x97, 594 0x52, 0x26, 0xc3, 0x49, 0x98, 0xa2, 0xa9, 0x38, 0x97, 0x4a, 0x2f, 0xb2, 0x19, 0xcd, 0x03, 0xb2, 595 0x25, 0x75, 0x17, 0x8a, 0x32, 0xe2, 0x2d, 0x49, 0x32, 0x56, 0x14, 0xca, 0x57, 0x57, 0xca, 0xc4, 596 0x2d, 0xe6, 0xcf, 0x4e, 0xa6, 0x34, 0x25, 0x3b, 0x31, 0x34, 0xdd, 0x6e, 0xb8, 0x7b, 0x0f, 0xfc, 597 0xf6, 0xdb, 0xc8, 0x43, 0x3d, 0x9e, 0x25, 0x98, 0xf2, 0x73, 0x68, 0xca, 0xa5, 0x52, 0x38, 0xcf, 598 0x82, 0x18, 0x75, 0x9b, 0x75, 0x58, 0xaf, 0xe1, 0x43, 0xf1, 0xcb, 0x43, 0xcd, 0x4f, 0xa1, 0x46, 599 0x49, 0x64, 0xc5, 0x7f, 0x56, 0xac, 0x52, 0x12, 0x79, 0xa8, 0xbb, 0xef, 0x0c, 0x8e, 0x7e, 0x0c, 600 0x1f, 0x76, 0x60, 0xfc, 0x0e, 0x20, 0x46, 0x1d, 0xa4, 0xb4, 0x54, 0x12, 0xad, 0xdd, 0xc1, 0x68, 601 0xe0, 0xee, 0xe5, 0x74, 0x7f, 0xe1, 0x3c, 0xd9, 0x13, 0x7e, 0x23, 0x2e, 0x5b, 0x3e, 0x06, 0xf3, 602 0x11, 0xbc, 0x18, 0x4e, 0xbb, 0xbb, 0x39, 0xea, 0xff, 0xc5, 0xc9, 0x06, 0xf3, 0xeb, 0x71, 0x19, 603 0xf1, 0x1a, 0xda, 0x51, 0x98, 0x85, 0x26, 0x42, 0xa0, 0x28, 0x0b, 0xed, 0x45, 0x2e, 0x50, 0xcd, 604 0x28, 0x6a, 0x57, 0x3a, 0xac, 0x57, 0xf1, 0x5b, 0x46, 0xf7, 0x50, 0xfb, 0x85, 0xfa, 0x68, 0xc5, 605 0xc1, 0x05, 0x1c, 0xef, 0x41, 0xe4, 0xff, 0xa1, 0x5e, 0x6e, 0x39, 0x74, 0x6e, 0xfa, 0xab, 0x4f, 606 0xe1, 0xac, 0x72, 0xc1, 0xd6, 0xb9, 0x60, 0x9b, 0x5c, 0xb0, 0x8f, 0x5c, 0xb0, 0xb7, 0xad, 0x70, 607 0xd6, 0x5b, 0xe1, 0x6c, 0xb6, 0xc2, 0x79, 0xae, 0x15, 0x94, 0x93, 0xaa, 0x7d, 0x88, 0xab, 0xaf, 608 0x00, 0x00, 0x00, 0xff, 0xff, 0x37, 0x8e, 0xeb, 0xba, 0xdd, 0x01, 0x00, 0x00, 609 }