| OLD | NEW |
| 1 // Code generated by protoc-gen-go. DO NOT EDIT. | 1 // Code generated by protoc-gen-go. DO NOT EDIT. |
| 2 // source: github.com/luci/luci-go/tokenserver/api/minter/v1/token_minter.proto | 2 // source: github.com/luci/luci-go/tokenserver/api/minter/v1/token_minter.proto |
| 3 | 3 |
| 4 /* | 4 /* |
| 5 Package minter is a generated protocol buffer package. | 5 Package minter is a generated protocol buffer package. |
| 6 | 6 |
| 7 It is generated from these files: | 7 It is generated from these files: |
| 8 github.com/luci/luci-go/tokenserver/api/minter/v1/token_minter.proto | 8 github.com/luci/luci-go/tokenserver/api/minter/v1/token_minter.proto |
| 9 | 9 |
| 10 It has these top-level messages: | 10 It has these top-level messages: |
| 11 MintMachineTokenRequest | 11 MintMachineTokenRequest |
| 12 MachineTokenRequest | 12 MachineTokenRequest |
| 13 MintMachineTokenResponse | 13 MintMachineTokenResponse |
| 14 MachineTokenResponse | 14 MachineTokenResponse |
| 15 LuciMachineToken | 15 LuciMachineToken |
| 16 MintDelegationTokenRequest | 16 MintDelegationTokenRequest |
| 17 MintDelegationTokenResponse | 17 MintDelegationTokenResponse |
| 18 MintOAuthTokenGrantRequest |
| 19 MintOAuthTokenGrantResponse |
| 20 MintOAuthTokenViaGrantRequest |
| 21 MintOAuthTokenViaGrantResponse |
| 18 */ | 22 */ |
| 19 package minter | 23 package minter |
| 20 | 24 |
| 21 import prpc "github.com/luci/luci-go/grpc/prpc" | 25 import prpc "github.com/luci/luci-go/grpc/prpc" |
| 22 | 26 |
| 23 import proto "github.com/golang/protobuf/proto" | 27 import proto "github.com/golang/protobuf/proto" |
| 24 import fmt "fmt" | 28 import fmt "fmt" |
| 25 import math "math" | 29 import math "math" |
| 26 import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" | 30 import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" |
| 27 import messages "github.com/luci/luci-go/server/auth/delegation/messages" | 31 import messages "github.com/luci/luci-go/server/auth/delegation/messages" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 return nil | 193 return nil |
| 190 } | 194 } |
| 191 | 195 |
| 192 func (m *MachineTokenRequest) GetTokenType() tokenserver.MachineTokenType { | 196 func (m *MachineTokenRequest) GetTokenType() tokenserver.MachineTokenType { |
| 193 if m != nil { | 197 if m != nil { |
| 194 return m.TokenType | 198 return m.TokenType |
| 195 } | 199 } |
| 196 return tokenserver.MachineTokenType_UNKNOWN_TYPE | 200 return tokenserver.MachineTokenType_UNKNOWN_TYPE |
| 197 } | 201 } |
| 198 | 202 |
| 199 // MintMachineTokenResponse is returned by 'MintMachineToken' if the server | 203 // MintMachineTokenResponse is returned by MintMachineToken if the server |
| 200 // processed the request. | 204 // processed the request. |
| 201 // | 205 // |
| 202 // It's returned even if server refuses to mint a token. It contains the error | 206 // It's returned even if server refuses to mint a token. It contains the error |
| 203 // details in that case. | 207 // details in that case. |
| 204 type MintMachineTokenResponse struct { | 208 type MintMachineTokenResponse struct { |
| 205 // Possible kinds of fatal errors. | 209 // Possible kinds of fatal errors. |
| 206 // | 210 // |
| 207 // Non fatal errors are returned as grpc.Internal errors instead. | 211 // Non fatal errors are returned as grpc.Internal errors instead. |
| 208 ErrorCode ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCo
de,enum=tokenserver.minter.ErrorCode" json:"error_code,omitempty"` | 212 ErrorCode ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCo
de,enum=tokenserver.minter.ErrorCode" json:"error_code,omitempty"` |
| 209 // Optional detailed error message. | 213 // Optional detailed error message. |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 return nil | 473 return nil |
| 470 } | 474 } |
| 471 | 475 |
| 472 func (m *MintDelegationTokenRequest) GetIntent() string { | 476 func (m *MintDelegationTokenRequest) GetIntent() string { |
| 473 if m != nil { | 477 if m != nil { |
| 474 return m.Intent | 478 return m.Intent |
| 475 } | 479 } |
| 476 return "" | 480 return "" |
| 477 } | 481 } |
| 478 | 482 |
| 479 // MintDelegationTokenResponse is returned by 'MintDelegationToken' on success. | 483 // MintDelegationTokenResponse is returned by MintDelegationToken on success. |
| 480 // | 484 // |
| 481 // Errors are returned via standard gRPC codes. | 485 // Errors are returned via standard gRPC codes. |
| 482 type MintDelegationTokenResponse struct { | 486 type MintDelegationTokenResponse struct { |
| 483 // The actual base64-encoded signed token. | 487 // The actual base64-encoded signed token. |
| 484 Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` | 488 Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` |
| 485 // Same data as in 'token' in deserialized form, just for convenience. | 489 // Same data as in 'token' in deserialized form, just for convenience. |
| 486 // | 490 // |
| 487 // Mostly for JSON encoding users, since they may not understand proto-e
ncoded | 491 // Mostly for JSON encoding users, since they may not understand proto-e
ncoded |
| 488 // tokens. | 492 // tokens. |
| 489 DelegationSubtoken *messages.Subtoken `protobuf:"bytes,2,opt,name=delega
tion_subtoken,json=delegationSubtoken" json:"delegation_subtoken,omitempty"` | 493 DelegationSubtoken *messages.Subtoken `protobuf:"bytes,2,opt,name=delega
tion_subtoken,json=delegationSubtoken" json:"delegation_subtoken,omitempty"` |
| 490 // Identifier of the service and its version that produced the token. | 494 // Identifier of the service and its version that produced the token. |
| 491 // | 495 // |
| 492 // Has the form "<app-id>/<module-version>". This is _not_ part of the t
oken. | 496 // Has the form "<app-id>/<module-version>". This is _not_ part of the t
oken. |
| 497 // Used only for logging and monitoring. |
| 493 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` | 498 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` |
| 494 } | 499 } |
| 495 | 500 |
| 496 func (m *MintDelegationTokenResponse) Reset() { *m = MintDele
gationTokenResponse{} } | 501 func (m *MintDelegationTokenResponse) Reset() { *m = MintDele
gationTokenResponse{} } |
| 497 func (m *MintDelegationTokenResponse) String() string { return proto.
CompactTextString(m) } | 502 func (m *MintDelegationTokenResponse) String() string { return proto.
CompactTextString(m) } |
| 498 func (*MintDelegationTokenResponse) ProtoMessage() {} | 503 func (*MintDelegationTokenResponse) ProtoMessage() {} |
| 499 func (*MintDelegationTokenResponse) Descriptor() ([]byte, []int) { return fileDe
scriptor0, []int{6} } | 504 func (*MintDelegationTokenResponse) Descriptor() ([]byte, []int) { return fileDe
scriptor0, []int{6} } |
| 500 | 505 |
| 501 func (m *MintDelegationTokenResponse) GetToken() string { | 506 func (m *MintDelegationTokenResponse) GetToken() string { |
| 502 if m != nil { | 507 if m != nil { |
| 503 return m.Token | 508 return m.Token |
| 504 } | 509 } |
| 505 return "" | 510 return "" |
| 506 } | 511 } |
| 507 | 512 |
| 508 func (m *MintDelegationTokenResponse) GetDelegationSubtoken() *messages.Subtoken
{ | 513 func (m *MintDelegationTokenResponse) GetDelegationSubtoken() *messages.Subtoken
{ |
| 509 if m != nil { | 514 if m != nil { |
| 510 return m.DelegationSubtoken | 515 return m.DelegationSubtoken |
| 511 } | 516 } |
| 512 return nil | 517 return nil |
| 513 } | 518 } |
| 514 | 519 |
| 515 func (m *MintDelegationTokenResponse) GetServiceVersion() string { | 520 func (m *MintDelegationTokenResponse) GetServiceVersion() string { |
| 516 if m != nil { | 521 if m != nil { |
| 517 return m.ServiceVersion | 522 return m.ServiceVersion |
| 518 } | 523 } |
| 519 return "" | 524 return "" |
| 520 } | 525 } |
| 521 | 526 |
| 527 // MintOAuthTokenGrantRequest is passed to MintOAuthTokenGrant. |
| 528 // |
| 529 // Additional implicit field is the identity of whoever makes this call. It |
| 530 // becomes 'wielder_identity' of the generated token. |
| 531 type MintOAuthTokenGrantRequest struct { |
| 532 // Service account identity the end user wants to act as. |
| 533 // |
| 534 // A string of the form "user:<email>". |
| 535 // |
| 536 // Required. |
| 537 ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=s
erviceAccount" json:"service_account,omitempty"` |
| 538 // How long the generated grant should be considered valid (in seconds). |
| 539 // |
| 540 // Default is 3600 sec. |
| 541 ValidityDuration int64 `protobuf:"varint,2,opt,name=validity_duration,js
on=validityDuration" json:"validity_duration,omitempty"` |
| 542 // An end user that wants to act as the service account (perhaps indirec
tly). |
| 543 // |
| 544 // A string of the form "user:<email>". On Swarming, this is an identity
of |
| 545 // a user that posted the task. |
| 546 // |
| 547 // TODO(vadimsh): Verify that this user is present during MintOAuthToken
Grant |
| 548 // RPC by requiring the end user's credentials, e.g make Swarming forwar
d |
| 549 // user's OAuth token to the token server, where it can be validated. |
| 550 // |
| 551 // Required. |
| 552 EndUserIdentity string `protobuf:"bytes,3,opt,name=end_user_identity,jso
n=endUserIdentity" json:"end_user_identity,omitempty"` |
| 553 // Optional reason why the grant is created. |
| 554 // |
| 555 // Used only for logging and auditing purposes. Doesn't become part of t
he |
| 556 // grant. |
| 557 Intent string `protobuf:"bytes,4,opt,name=intent" json:"intent,omitempty
"` |
| 558 } |
| 559 |
| 560 func (m *MintOAuthTokenGrantRequest) Reset() { *m = MintOAuth
TokenGrantRequest{} } |
| 561 func (m *MintOAuthTokenGrantRequest) String() string { return proto.C
ompactTextString(m) } |
| 562 func (*MintOAuthTokenGrantRequest) ProtoMessage() {} |
| 563 func (*MintOAuthTokenGrantRequest) Descriptor() ([]byte, []int) { return fileDes
criptor0, []int{7} } |
| 564 |
| 565 func (m *MintOAuthTokenGrantRequest) GetServiceAccount() string { |
| 566 if m != nil { |
| 567 return m.ServiceAccount |
| 568 } |
| 569 return "" |
| 570 } |
| 571 |
| 572 func (m *MintOAuthTokenGrantRequest) GetValidityDuration() int64 { |
| 573 if m != nil { |
| 574 return m.ValidityDuration |
| 575 } |
| 576 return 0 |
| 577 } |
| 578 |
| 579 func (m *MintOAuthTokenGrantRequest) GetEndUserIdentity() string { |
| 580 if m != nil { |
| 581 return m.EndUserIdentity |
| 582 } |
| 583 return "" |
| 584 } |
| 585 |
| 586 func (m *MintOAuthTokenGrantRequest) GetIntent() string { |
| 587 if m != nil { |
| 588 return m.Intent |
| 589 } |
| 590 return "" |
| 591 } |
| 592 |
| 593 // MintOAuthTokenGrantResponse is returned by MintOAuthTokenGrant. |
| 594 type MintOAuthTokenGrantResponse struct { |
| 595 GrantToken string `protobuf:"bytes,1,opt,name=grant_
token,json=grantToken" json:"grant_token,omitempty"` |
| 596 Expiry *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=expiry
" json:"expiry,omitempty"` |
| 597 // Identifier of the service and its version that produced the token. |
| 598 // |
| 599 // Has the form "<app-id>/<module-version>". This is _not_ part of the t
oken. |
| 600 // Used only for logging and monitoring. |
| 601 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` |
| 602 } |
| 603 |
| 604 func (m *MintOAuthTokenGrantResponse) Reset() { *m = MintOAut
hTokenGrantResponse{} } |
| 605 func (m *MintOAuthTokenGrantResponse) String() string { return proto.
CompactTextString(m) } |
| 606 func (*MintOAuthTokenGrantResponse) ProtoMessage() {} |
| 607 func (*MintOAuthTokenGrantResponse) Descriptor() ([]byte, []int) { return fileDe
scriptor0, []int{8} } |
| 608 |
| 609 func (m *MintOAuthTokenGrantResponse) GetGrantToken() string { |
| 610 if m != nil { |
| 611 return m.GrantToken |
| 612 } |
| 613 return "" |
| 614 } |
| 615 |
| 616 func (m *MintOAuthTokenGrantResponse) GetExpiry() *google_protobuf.Timestamp { |
| 617 if m != nil { |
| 618 return m.Expiry |
| 619 } |
| 620 return nil |
| 621 } |
| 622 |
| 623 func (m *MintOAuthTokenGrantResponse) GetServiceVersion() string { |
| 624 if m != nil { |
| 625 return m.ServiceVersion |
| 626 } |
| 627 return "" |
| 628 } |
| 629 |
| 630 // MintOAuthTokenViaGrantRequest is passed to MintOAuthTokenViaGrant. |
| 631 // |
| 632 // Additional implicit field is the identity of whoever makes this call. It is |
| 633 // compared against 'wielder_identity' inside the token. |
| 634 type MintOAuthTokenViaGrantRequest struct { |
| 635 // A previously generated grant, as returned by MintOAuthTokenGrant. |
| 636 GrantToken string `protobuf:"bytes,1,opt,name=grant_token,json=grantToke
n" json:"grant_token,omitempty"` |
| 637 // The list of OAuth scopes the access token should have. |
| 638 // |
| 639 // The server may reject the request if some scopes are not allowed. |
| 640 OauthScopes []string `protobuf:"bytes,2,rep,name=oauth_scopes,json=oauth
Scopes" json:"oauth_scopes,omitempty"` |
| 641 // Minimally accepted validity duration of the returned OAuth token (sec
onds). |
| 642 // |
| 643 // The server may return a token that lives longer than this. The maximu
m is |
| 644 // 1h. An attempt to get a token that lives longer than 1h will result i
n |
| 645 // an error. |
| 646 // |
| 647 // The returned token validity duration doesn't depend on the lifetime o
f |
| 648 // the grant: it's possible to use a grant that expires in 1 sec to get
an |
| 649 // access token that lives for 1h. |
| 650 // |
| 651 // Default is 300 sec. |
| 652 MinValidityDuration int64 `protobuf:"varint,3,opt,name=min_validity_dura
tion,json=minValidityDuration" json:"min_validity_duration,omitempty"` |
| 653 } |
| 654 |
| 655 func (m *MintOAuthTokenViaGrantRequest) Reset() { *m = MintOA
uthTokenViaGrantRequest{} } |
| 656 func (m *MintOAuthTokenViaGrantRequest) String() string { return prot
o.CompactTextString(m) } |
| 657 func (*MintOAuthTokenViaGrantRequest) ProtoMessage() {} |
| 658 func (*MintOAuthTokenViaGrantRequest) Descriptor() ([]byte, []int) { return file
Descriptor0, []int{9} } |
| 659 |
| 660 func (m *MintOAuthTokenViaGrantRequest) GetGrantToken() string { |
| 661 if m != nil { |
| 662 return m.GrantToken |
| 663 } |
| 664 return "" |
| 665 } |
| 666 |
| 667 func (m *MintOAuthTokenViaGrantRequest) GetOauthScopes() []string { |
| 668 if m != nil { |
| 669 return m.OauthScopes |
| 670 } |
| 671 return nil |
| 672 } |
| 673 |
| 674 func (m *MintOAuthTokenViaGrantRequest) GetMinValidityDuration() int64 { |
| 675 if m != nil { |
| 676 return m.MinValidityDuration |
| 677 } |
| 678 return 0 |
| 679 } |
| 680 |
| 681 // MintOAuthTokenViaGrantResponse is returned by MintOAuthTokenViaGrant. |
| 682 type MintOAuthTokenViaGrantResponse struct { |
| 683 AccessToken string `protobuf:"bytes,1,opt,name=acces
s_token,json=accessToken" json:"access_token,omitempty"` |
| 684 Expiry *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=expir
y" json:"expiry,omitempty"` |
| 685 // Identifier of the service and its version that produced the token. |
| 686 // |
| 687 // Has the form "<app-id>/<module-version>". Used only for logging and |
| 688 // monitoring. |
| 689 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` |
| 690 } |
| 691 |
| 692 func (m *MintOAuthTokenViaGrantResponse) Reset() { *m = MintO
AuthTokenViaGrantResponse{} } |
| 693 func (m *MintOAuthTokenViaGrantResponse) String() string { return pro
to.CompactTextString(m) } |
| 694 func (*MintOAuthTokenViaGrantResponse) ProtoMessage() {} |
| 695 func (*MintOAuthTokenViaGrantResponse) Descriptor() ([]byte, []int) { return fil
eDescriptor0, []int{10} } |
| 696 |
| 697 func (m *MintOAuthTokenViaGrantResponse) GetAccessToken() string { |
| 698 if m != nil { |
| 699 return m.AccessToken |
| 700 } |
| 701 return "" |
| 702 } |
| 703 |
| 704 func (m *MintOAuthTokenViaGrantResponse) GetExpiry() *google_protobuf.Timestamp
{ |
| 705 if m != nil { |
| 706 return m.Expiry |
| 707 } |
| 708 return nil |
| 709 } |
| 710 |
| 711 func (m *MintOAuthTokenViaGrantResponse) GetServiceVersion() string { |
| 712 if m != nil { |
| 713 return m.ServiceVersion |
| 714 } |
| 715 return "" |
| 716 } |
| 717 |
| 522 func init() { | 718 func init() { |
| 523 proto.RegisterType((*MintMachineTokenRequest)(nil), "tokenserver.minter.
MintMachineTokenRequest") | 719 proto.RegisterType((*MintMachineTokenRequest)(nil), "tokenserver.minter.
MintMachineTokenRequest") |
| 524 proto.RegisterType((*MachineTokenRequest)(nil), "tokenserver.minter.Mach
ineTokenRequest") | 720 proto.RegisterType((*MachineTokenRequest)(nil), "tokenserver.minter.Mach
ineTokenRequest") |
| 525 proto.RegisterType((*MintMachineTokenResponse)(nil), "tokenserver.minter
.MintMachineTokenResponse") | 721 proto.RegisterType((*MintMachineTokenResponse)(nil), "tokenserver.minter
.MintMachineTokenResponse") |
| 526 proto.RegisterType((*MachineTokenResponse)(nil), "tokenserver.minter.Mac
hineTokenResponse") | 722 proto.RegisterType((*MachineTokenResponse)(nil), "tokenserver.minter.Mac
hineTokenResponse") |
| 527 proto.RegisterType((*LuciMachineToken)(nil), "tokenserver.minter.LuciMac
hineToken") | 723 proto.RegisterType((*LuciMachineToken)(nil), "tokenserver.minter.LuciMac
hineToken") |
| 528 proto.RegisterType((*MintDelegationTokenRequest)(nil), "tokenserver.mint
er.MintDelegationTokenRequest") | 724 proto.RegisterType((*MintDelegationTokenRequest)(nil), "tokenserver.mint
er.MintDelegationTokenRequest") |
| 529 proto.RegisterType((*MintDelegationTokenResponse)(nil), "tokenserver.min
ter.MintDelegationTokenResponse") | 725 proto.RegisterType((*MintDelegationTokenResponse)(nil), "tokenserver.min
ter.MintDelegationTokenResponse") |
| 726 proto.RegisterType((*MintOAuthTokenGrantRequest)(nil), "tokenserver.mint
er.MintOAuthTokenGrantRequest") |
| 727 proto.RegisterType((*MintOAuthTokenGrantResponse)(nil), "tokenserver.min
ter.MintOAuthTokenGrantResponse") |
| 728 proto.RegisterType((*MintOAuthTokenViaGrantRequest)(nil), "tokenserver.m
inter.MintOAuthTokenViaGrantRequest") |
| 729 proto.RegisterType((*MintOAuthTokenViaGrantResponse)(nil), "tokenserver.
minter.MintOAuthTokenViaGrantResponse") |
| 530 proto.RegisterEnum("tokenserver.minter.SignatureAlgorithm", SignatureAlg
orithm_name, SignatureAlgorithm_value) | 730 proto.RegisterEnum("tokenserver.minter.SignatureAlgorithm", SignatureAlg
orithm_name, SignatureAlgorithm_value) |
| 531 proto.RegisterEnum("tokenserver.minter.ErrorCode", ErrorCode_name, Error
Code_value) | 731 proto.RegisterEnum("tokenserver.minter.ErrorCode", ErrorCode_name, Error
Code_value) |
| 532 } | 732 } |
| 533 | 733 |
| 534 // Reference imports to suppress errors if they are not otherwise used. | 734 // Reference imports to suppress errors if they are not otherwise used. |
| 535 var _ context.Context | 735 var _ context.Context |
| 536 var _ grpc.ClientConn | 736 var _ grpc.ClientConn |
| 537 | 737 |
| 538 // This is a compile-time assertion to ensure that this generated file | 738 // This is a compile-time assertion to ensure that this generated file |
| 539 // is compatible with the grpc package it is being compiled against. | 739 // is compatible with the grpc package it is being compiled against. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 565 // the token): | 765 // the token): |
| 566 // * They have expiration time. | 766 // * They have expiration time. |
| 567 // * They are usable only if presented with a credential of someone fr
om | 767 // * They are usable only if presented with a credential of someone fr
om |
| 568 // the 'audience' list. | 768 // the 'audience' list. |
| 569 // * They are usable only on services specified in the 'services' list
. | 769 // * They are usable only on services specified in the 'services' list
. |
| 570 // | 770 // |
| 571 // The token server must be configured in advance with all expected | 771 // The token server must be configured in advance with all expected |
| 572 // combinations of (caller identity, delegated identity, audience, servi
ce) | 772 // combinations of (caller identity, delegated identity, audience, servi
ce) |
| 573 // tuples. See DelegationRule in config.proto. | 773 // tuples. See DelegationRule in config.proto. |
| 574 MintDelegationToken(ctx context.Context, in *MintDelegationTokenRequest,
opts ...grpc.CallOption) (*MintDelegationTokenResponse, error) | 774 MintDelegationToken(ctx context.Context, in *MintDelegationTokenRequest,
opts ...grpc.CallOption) (*MintDelegationTokenResponse, error) |
| 775 // MintOAuthTokenGrant generates a new grant for getting an OAuth2 token
. |
| 776 // |
| 777 // This is a special (opaque for clients) token that asserts that the ca
ller |
| 778 // at the time of the call was allowed to act as a particular service ac
count |
| 779 // to perform a task authorized by an end-user. |
| 780 // |
| 781 // The returned grant can be used later (when the end-user is no longer |
| 782 // present) to get a real OAuth2 access token via MintOAuthTokenViaGrant
call. |
| 783 // |
| 784 // This pair of RPCs is used to "delay" generation of service account OA
uth |
| 785 // token until some later time, when it is actually needed. This is used
by |
| 786 // Swarming: |
| 787 // 1. When the task is posted, Swarming calls MintOAuthTokenGrant to v
erify |
| 788 // that the end-user is allowed to act as the requested service acc
ount |
| 789 // on Swarming. On success, Swarming stores the grant in the task |
| 790 // metadata. |
| 791 // 2. At a later time, when the task is executing and it needs an acce
ss |
| 792 // token, Swarming calls MintOAuthTokenViaGrant to convert the gran
t into |
| 793 // a real OAuth2 token. |
| 794 // |
| 795 // The returned grant can be used multiple times (as long as its validit
y |
| 796 // duration and the token server policy allows). |
| 797 // |
| 798 // The token server must be configured in advance with all expected |
| 799 // combinations of (caller identity, service account name, end users) tu
ples. |
| 800 // See ServiceAccountRule in config.proto. |
| 801 // |
| 802 // MintOAuthTokenGrant will check that the requested usage is allowed by
the |
| 803 // rules. Later, MintOAuthTokenViaGrant will recheck this too. |
| 804 MintOAuthTokenGrant(ctx context.Context, in *MintOAuthTokenGrantRequest,
opts ...grpc.CallOption) (*MintOAuthTokenGrantResponse, error) |
| 805 // MintOAuthTokenViaGrant converts an OAuth2 token grant into an access
token. |
| 806 // |
| 807 // The grant must be previously generated by MintOAuthTokenGrant functio
n, see |
| 808 // its docs for more details. |
| 809 MintOAuthTokenViaGrant(ctx context.Context, in *MintOAuthTokenViaGrantRe
quest, opts ...grpc.CallOption) (*MintOAuthTokenViaGrantResponse, error) |
| 575 } | 810 } |
| 576 type tokenMinterPRPCClient struct { | 811 type tokenMinterPRPCClient struct { |
| 577 client *prpc.Client | 812 client *prpc.Client |
| 578 } | 813 } |
| 579 | 814 |
| 580 func NewTokenMinterPRPCClient(client *prpc.Client) TokenMinterClient { | 815 func NewTokenMinterPRPCClient(client *prpc.Client) TokenMinterClient { |
| 581 return &tokenMinterPRPCClient{client} | 816 return &tokenMinterPRPCClient{client} |
| 582 } | 817 } |
| 583 | 818 |
| 584 func (c *tokenMinterPRPCClient) MintMachineToken(ctx context.Context, in *MintMa
chineTokenRequest, opts ...grpc.CallOption) (*MintMachineTokenResponse, error) { | 819 func (c *tokenMinterPRPCClient) MintMachineToken(ctx context.Context, in *MintMa
chineTokenRequest, opts ...grpc.CallOption) (*MintMachineTokenResponse, error) { |
| 585 out := new(MintMachineTokenResponse) | 820 out := new(MintMachineTokenResponse) |
| 586 err := c.client.Call(ctx, "tokenserver.minter.TokenMinter", "MintMachine
Token", in, out, opts...) | 821 err := c.client.Call(ctx, "tokenserver.minter.TokenMinter", "MintMachine
Token", in, out, opts...) |
| 587 if err != nil { | 822 if err != nil { |
| 588 return nil, err | 823 return nil, err |
| 589 } | 824 } |
| 590 return out, nil | 825 return out, nil |
| 591 } | 826 } |
| 592 | 827 |
| 593 func (c *tokenMinterPRPCClient) MintDelegationToken(ctx context.Context, in *Min
tDelegationTokenRequest, opts ...grpc.CallOption) (*MintDelegationTokenResponse,
error) { | 828 func (c *tokenMinterPRPCClient) MintDelegationToken(ctx context.Context, in *Min
tDelegationTokenRequest, opts ...grpc.CallOption) (*MintDelegationTokenResponse,
error) { |
| 594 out := new(MintDelegationTokenResponse) | 829 out := new(MintDelegationTokenResponse) |
| 595 err := c.client.Call(ctx, "tokenserver.minter.TokenMinter", "MintDelegat
ionToken", in, out, opts...) | 830 err := c.client.Call(ctx, "tokenserver.minter.TokenMinter", "MintDelegat
ionToken", in, out, opts...) |
| 596 if err != nil { | 831 if err != nil { |
| 597 return nil, err | 832 return nil, err |
| 598 } | 833 } |
| 599 return out, nil | 834 return out, nil |
| 600 } | 835 } |
| 601 | 836 |
| 837 func (c *tokenMinterPRPCClient) MintOAuthTokenGrant(ctx context.Context, in *Min
tOAuthTokenGrantRequest, opts ...grpc.CallOption) (*MintOAuthTokenGrantResponse,
error) { |
| 838 out := new(MintOAuthTokenGrantResponse) |
| 839 err := c.client.Call(ctx, "tokenserver.minter.TokenMinter", "MintOAuthTo
kenGrant", in, out, opts...) |
| 840 if err != nil { |
| 841 return nil, err |
| 842 } |
| 843 return out, nil |
| 844 } |
| 845 |
| 846 func (c *tokenMinterPRPCClient) MintOAuthTokenViaGrant(ctx context.Context, in *
MintOAuthTokenViaGrantRequest, opts ...grpc.CallOption) (*MintOAuthTokenViaGrant
Response, error) { |
| 847 out := new(MintOAuthTokenViaGrantResponse) |
| 848 err := c.client.Call(ctx, "tokenserver.minter.TokenMinter", "MintOAuthTo
kenViaGrant", in, out, opts...) |
| 849 if err != nil { |
| 850 return nil, err |
| 851 } |
| 852 return out, nil |
| 853 } |
| 854 |
| 602 type tokenMinterClient struct { | 855 type tokenMinterClient struct { |
| 603 cc *grpc.ClientConn | 856 cc *grpc.ClientConn |
| 604 } | 857 } |
| 605 | 858 |
| 606 func NewTokenMinterClient(cc *grpc.ClientConn) TokenMinterClient { | 859 func NewTokenMinterClient(cc *grpc.ClientConn) TokenMinterClient { |
| 607 return &tokenMinterClient{cc} | 860 return &tokenMinterClient{cc} |
| 608 } | 861 } |
| 609 | 862 |
| 610 func (c *tokenMinterClient) MintMachineToken(ctx context.Context, in *MintMachin
eTokenRequest, opts ...grpc.CallOption) (*MintMachineTokenResponse, error) { | 863 func (c *tokenMinterClient) MintMachineToken(ctx context.Context, in *MintMachin
eTokenRequest, opts ...grpc.CallOption) (*MintMachineTokenResponse, error) { |
| 611 out := new(MintMachineTokenResponse) | 864 out := new(MintMachineTokenResponse) |
| 612 err := grpc.Invoke(ctx, "/tokenserver.minter.TokenMinter/MintMachineToke
n", in, out, c.cc, opts...) | 865 err := grpc.Invoke(ctx, "/tokenserver.minter.TokenMinter/MintMachineToke
n", in, out, c.cc, opts...) |
| 613 if err != nil { | 866 if err != nil { |
| 614 return nil, err | 867 return nil, err |
| 615 } | 868 } |
| 616 return out, nil | 869 return out, nil |
| 617 } | 870 } |
| 618 | 871 |
| 619 func (c *tokenMinterClient) MintDelegationToken(ctx context.Context, in *MintDel
egationTokenRequest, opts ...grpc.CallOption) (*MintDelegationTokenResponse, err
or) { | 872 func (c *tokenMinterClient) MintDelegationToken(ctx context.Context, in *MintDel
egationTokenRequest, opts ...grpc.CallOption) (*MintDelegationTokenResponse, err
or) { |
| 620 out := new(MintDelegationTokenResponse) | 873 out := new(MintDelegationTokenResponse) |
| 621 err := grpc.Invoke(ctx, "/tokenserver.minter.TokenMinter/MintDelegationT
oken", in, out, c.cc, opts...) | 874 err := grpc.Invoke(ctx, "/tokenserver.minter.TokenMinter/MintDelegationT
oken", in, out, c.cc, opts...) |
| 622 if err != nil { | 875 if err != nil { |
| 623 return nil, err | 876 return nil, err |
| 624 } | 877 } |
| 625 return out, nil | 878 return out, nil |
| 626 } | 879 } |
| 627 | 880 |
| 881 func (c *tokenMinterClient) MintOAuthTokenGrant(ctx context.Context, in *MintOAu
thTokenGrantRequest, opts ...grpc.CallOption) (*MintOAuthTokenGrantResponse, err
or) { |
| 882 out := new(MintOAuthTokenGrantResponse) |
| 883 err := grpc.Invoke(ctx, "/tokenserver.minter.TokenMinter/MintOAuthTokenG
rant", in, out, c.cc, opts...) |
| 884 if err != nil { |
| 885 return nil, err |
| 886 } |
| 887 return out, nil |
| 888 } |
| 889 |
| 890 func (c *tokenMinterClient) MintOAuthTokenViaGrant(ctx context.Context, in *Mint
OAuthTokenViaGrantRequest, opts ...grpc.CallOption) (*MintOAuthTokenViaGrantResp
onse, error) { |
| 891 out := new(MintOAuthTokenViaGrantResponse) |
| 892 err := grpc.Invoke(ctx, "/tokenserver.minter.TokenMinter/MintOAuthTokenV
iaGrant", in, out, c.cc, opts...) |
| 893 if err != nil { |
| 894 return nil, err |
| 895 } |
| 896 return out, nil |
| 897 } |
| 898 |
| 628 // Server API for TokenMinter service | 899 // Server API for TokenMinter service |
| 629 | 900 |
| 630 type TokenMinterServer interface { | 901 type TokenMinterServer interface { |
| 631 // MintMachineToken generates a new token for an authenticated machine. | 902 // MintMachineToken generates a new token for an authenticated machine. |
| 632 // | 903 // |
| 633 // It checks that provided certificate was signed by some trusted CA, an
d it | 904 // It checks that provided certificate was signed by some trusted CA, an
d it |
| 634 // is still valid (non-expired and hasn't been revoked). It then checks
that | 905 // is still valid (non-expired and hasn't been revoked). It then checks
that |
| 635 // the request was signed by the corresponding private key. Finally it c
hecks | 906 // the request was signed by the corresponding private key. Finally it c
hecks |
| 636 // that the caller is authorized to generate requested kind of token. | 907 // that the caller is authorized to generate requested kind of token. |
| 637 // | 908 // |
| (...skipping 13 matching lines...) Expand all Loading... |
| 651 // the token): | 922 // the token): |
| 652 // * They have expiration time. | 923 // * They have expiration time. |
| 653 // * They are usable only if presented with a credential of someone fr
om | 924 // * They are usable only if presented with a credential of someone fr
om |
| 654 // the 'audience' list. | 925 // the 'audience' list. |
| 655 // * They are usable only on services specified in the 'services' list
. | 926 // * They are usable only on services specified in the 'services' list
. |
| 656 // | 927 // |
| 657 // The token server must be configured in advance with all expected | 928 // The token server must be configured in advance with all expected |
| 658 // combinations of (caller identity, delegated identity, audience, servi
ce) | 929 // combinations of (caller identity, delegated identity, audience, servi
ce) |
| 659 // tuples. See DelegationRule in config.proto. | 930 // tuples. See DelegationRule in config.proto. |
| 660 MintDelegationToken(context.Context, *MintDelegationTokenRequest) (*Mint
DelegationTokenResponse, error) | 931 MintDelegationToken(context.Context, *MintDelegationTokenRequest) (*Mint
DelegationTokenResponse, error) |
| 932 // MintOAuthTokenGrant generates a new grant for getting an OAuth2 token
. |
| 933 // |
| 934 // This is a special (opaque for clients) token that asserts that the ca
ller |
| 935 // at the time of the call was allowed to act as a particular service ac
count |
| 936 // to perform a task authorized by an end-user. |
| 937 // |
| 938 // The returned grant can be used later (when the end-user is no longer |
| 939 // present) to get a real OAuth2 access token via MintOAuthTokenViaGrant
call. |
| 940 // |
| 941 // This pair of RPCs is used to "delay" generation of service account OA
uth |
| 942 // token until some later time, when it is actually needed. This is used
by |
| 943 // Swarming: |
| 944 // 1. When the task is posted, Swarming calls MintOAuthTokenGrant to v
erify |
| 945 // that the end-user is allowed to act as the requested service acc
ount |
| 946 // on Swarming. On success, Swarming stores the grant in the task |
| 947 // metadata. |
| 948 // 2. At a later time, when the task is executing and it needs an acce
ss |
| 949 // token, Swarming calls MintOAuthTokenViaGrant to convert the gran
t into |
| 950 // a real OAuth2 token. |
| 951 // |
| 952 // The returned grant can be used multiple times (as long as its validit
y |
| 953 // duration and the token server policy allows). |
| 954 // |
| 955 // The token server must be configured in advance with all expected |
| 956 // combinations of (caller identity, service account name, end users) tu
ples. |
| 957 // See ServiceAccountRule in config.proto. |
| 958 // |
| 959 // MintOAuthTokenGrant will check that the requested usage is allowed by
the |
| 960 // rules. Later, MintOAuthTokenViaGrant will recheck this too. |
| 961 MintOAuthTokenGrant(context.Context, *MintOAuthTokenGrantRequest) (*Mint
OAuthTokenGrantResponse, error) |
| 962 // MintOAuthTokenViaGrant converts an OAuth2 token grant into an access
token. |
| 963 // |
| 964 // The grant must be previously generated by MintOAuthTokenGrant functio
n, see |
| 965 // its docs for more details. |
| 966 MintOAuthTokenViaGrant(context.Context, *MintOAuthTokenViaGrantRequest)
(*MintOAuthTokenViaGrantResponse, error) |
| 661 } | 967 } |
| 662 | 968 |
| 663 func RegisterTokenMinterServer(s prpc.Registrar, srv TokenMinterServer) { | 969 func RegisterTokenMinterServer(s prpc.Registrar, srv TokenMinterServer) { |
| 664 s.RegisterService(&_TokenMinter_serviceDesc, srv) | 970 s.RegisterService(&_TokenMinter_serviceDesc, srv) |
| 665 } | 971 } |
| 666 | 972 |
| 667 func _TokenMinter_MintMachineToken_Handler(srv interface{}, ctx context.Context,
dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interfac
e{}, error) { | 973 func _TokenMinter_MintMachineToken_Handler(srv interface{}, ctx context.Context,
dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interfac
e{}, error) { |
| 668 in := new(MintMachineTokenRequest) | 974 in := new(MintMachineTokenRequest) |
| 669 if err := dec(in); err != nil { | 975 if err := dec(in); err != nil { |
| 670 return nil, err | 976 return nil, err |
| (...skipping 22 matching lines...) Expand all Loading... |
| 693 info := &grpc.UnaryServerInfo{ | 999 info := &grpc.UnaryServerInfo{ |
| 694 Server: srv, | 1000 Server: srv, |
| 695 FullMethod: "/tokenserver.minter.TokenMinter/MintDelegationToken
", | 1001 FullMethod: "/tokenserver.minter.TokenMinter/MintDelegationToken
", |
| 696 } | 1002 } |
| 697 handler := func(ctx context.Context, req interface{}) (interface{}, erro
r) { | 1003 handler := func(ctx context.Context, req interface{}) (interface{}, erro
r) { |
| 698 return srv.(TokenMinterServer).MintDelegationToken(ctx, req.(*Mi
ntDelegationTokenRequest)) | 1004 return srv.(TokenMinterServer).MintDelegationToken(ctx, req.(*Mi
ntDelegationTokenRequest)) |
| 699 } | 1005 } |
| 700 return interceptor(ctx, in, info, handler) | 1006 return interceptor(ctx, in, info, handler) |
| 701 } | 1007 } |
| 702 | 1008 |
| 1009 func _TokenMinter_MintOAuthTokenGrant_Handler(srv interface{}, ctx context.Conte
xt, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (inter
face{}, error) { |
| 1010 in := new(MintOAuthTokenGrantRequest) |
| 1011 if err := dec(in); err != nil { |
| 1012 return nil, err |
| 1013 } |
| 1014 if interceptor == nil { |
| 1015 return srv.(TokenMinterServer).MintOAuthTokenGrant(ctx, in) |
| 1016 } |
| 1017 info := &grpc.UnaryServerInfo{ |
| 1018 Server: srv, |
| 1019 FullMethod: "/tokenserver.minter.TokenMinter/MintOAuthTokenGrant
", |
| 1020 } |
| 1021 handler := func(ctx context.Context, req interface{}) (interface{}, erro
r) { |
| 1022 return srv.(TokenMinterServer).MintOAuthTokenGrant(ctx, req.(*Mi
ntOAuthTokenGrantRequest)) |
| 1023 } |
| 1024 return interceptor(ctx, in, info, handler) |
| 1025 } |
| 1026 |
| 1027 func _TokenMinter_MintOAuthTokenViaGrant_Handler(srv interface{}, ctx context.Co
ntext, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (in
terface{}, error) { |
| 1028 in := new(MintOAuthTokenViaGrantRequest) |
| 1029 if err := dec(in); err != nil { |
| 1030 return nil, err |
| 1031 } |
| 1032 if interceptor == nil { |
| 1033 return srv.(TokenMinterServer).MintOAuthTokenViaGrant(ctx, in) |
| 1034 } |
| 1035 info := &grpc.UnaryServerInfo{ |
| 1036 Server: srv, |
| 1037 FullMethod: "/tokenserver.minter.TokenMinter/MintOAuthTokenViaGr
ant", |
| 1038 } |
| 1039 handler := func(ctx context.Context, req interface{}) (interface{}, erro
r) { |
| 1040 return srv.(TokenMinterServer).MintOAuthTokenViaGrant(ctx, req.(
*MintOAuthTokenViaGrantRequest)) |
| 1041 } |
| 1042 return interceptor(ctx, in, info, handler) |
| 1043 } |
| 1044 |
| 703 var _TokenMinter_serviceDesc = grpc.ServiceDesc{ | 1045 var _TokenMinter_serviceDesc = grpc.ServiceDesc{ |
| 704 ServiceName: "tokenserver.minter.TokenMinter", | 1046 ServiceName: "tokenserver.minter.TokenMinter", |
| 705 HandlerType: (*TokenMinterServer)(nil), | 1047 HandlerType: (*TokenMinterServer)(nil), |
| 706 Methods: []grpc.MethodDesc{ | 1048 Methods: []grpc.MethodDesc{ |
| 707 { | 1049 { |
| 708 MethodName: "MintMachineToken", | 1050 MethodName: "MintMachineToken", |
| 709 Handler: _TokenMinter_MintMachineToken_Handler, | 1051 Handler: _TokenMinter_MintMachineToken_Handler, |
| 710 }, | 1052 }, |
| 711 { | 1053 { |
| 712 MethodName: "MintDelegationToken", | 1054 MethodName: "MintDelegationToken", |
| 713 Handler: _TokenMinter_MintDelegationToken_Handler, | 1055 Handler: _TokenMinter_MintDelegationToken_Handler, |
| 714 }, | 1056 }, |
| 1057 { |
| 1058 MethodName: "MintOAuthTokenGrant", |
| 1059 Handler: _TokenMinter_MintOAuthTokenGrant_Handler, |
| 1060 }, |
| 1061 { |
| 1062 MethodName: "MintOAuthTokenViaGrant", |
| 1063 Handler: _TokenMinter_MintOAuthTokenViaGrant_Handler, |
| 1064 }, |
| 715 }, | 1065 }, |
| 716 Streams: []grpc.StreamDesc{}, | 1066 Streams: []grpc.StreamDesc{}, |
| 717 Metadata: "github.com/luci/luci-go/tokenserver/api/minter/v1/token_minte
r.proto", | 1067 Metadata: "github.com/luci/luci-go/tokenserver/api/minter/v1/token_minte
r.proto", |
| 718 } | 1068 } |
| 719 | 1069 |
| 720 func init() { | 1070 func init() { |
| 721 proto.RegisterFile("github.com/luci/luci-go/tokenserver/api/minter/v1/to
ken_minter.proto", fileDescriptor0) | 1071 proto.RegisterFile("github.com/luci/luci-go/tokenserver/api/minter/v1/to
ken_minter.proto", fileDescriptor0) |
| 722 } | 1072 } |
| 723 | 1073 |
| 724 var fileDescriptor0 = []byte{ | 1074 var fileDescriptor0 = []byte{ |
| 725 // 919 bytes of a gzipped FileDescriptorProto | 1075 // 1117 bytes of a gzipped FileDescriptorProto |
| 726 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55,
0xdd, 0x6e, 0xdb, 0x36, | 1076 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56,
0xcd, 0x6e, 0xdb, 0x46, |
| 727 0x14, 0x8e, 0x62, 0xc7, 0xb5, 0x4f, 0x7e, 0xaa, 0xd0, 0x49, 0xea, 0xb9,
0x1b, 0x1a, 0x78, 0xc3, | 1077 0x17, 0x0d, 0x25, 0xd9, 0x91, 0xae, 0x64, 0x9b, 0x1e, 0xd9, 0x8e, 0x3e,
0xe5, 0x4b, 0xed, 0xa8, |
| 728 0x16, 0xb4, 0xab, 0x84, 0x79, 0xd8, 0x0f, 0xd0, 0xdd, 0xa8, 0xb6, 0x9a,
0x38, 0xad, 0xe4, 0x80, | 1078 0x45, 0x6b, 0x38, 0x8d, 0x84, 0xa8, 0xe8, 0x0f, 0x90, 0x6e, 0x18, 0x99,
0xb1, 0xe5, 0x44, 0x92, |
| 729 0x92, 0x57, 0xec, 0x8a, 0x50, 0x2c, 0xd6, 0x21, 0x6a, 0x4b, 0xae, 0x44,
0x19, 0xf3, 0xde, 0x61, | 1079 0x31, 0xa4, 0x1c, 0x74, 0x45, 0xd0, 0xe4, 0x44, 0x1e, 0x44, 0x22, 0x15,
0x72, 0x68, 0xd4, 0xdd, |
| 730 0x0f, 0xb1, 0x27, 0xd8, 0x6b, 0xec, 0x49, 0xf6, 0x04, 0x03, 0x76, 0x3b,
0x88, 0x94, 0x6c, 0x39, | 1080 0xf4, 0x09, 0xba, 0xee, 0xa2, 0x9b, 0xf6, 0x09, 0xba, 0xeb, 0x33, 0xf4,
0x49, 0xba, 0xeb, 0xba, |
| 731 0x51, 0x87, 0xdc, 0x18, 0xe2, 0xf7, 0x7d, 0x3c, 0xdf, 0xe1, 0x39, 0x87,
0x34, 0xf4, 0x27, 0x8c, | 1081 0xdb, 0x82, 0x33, 0xa4, 0x44, 0x4a, 0x54, 0xe3, 0x14, 0xe8, 0xc6, 0x10,
0xcf, 0xbd, 0x73, 0xcf, |
| 732 0xdf, 0x24, 0xd7, 0xda, 0x38, 0x9c, 0xe9, 0xd3, 0x64, 0xcc, 0xc4, 0xcf,
0xf3, 0x49, 0xa8, 0xf3, | 1082 0x99, 0x73, 0xef, 0xcc, 0x18, 0x8e, 0x47, 0x94, 0x5d, 0x05, 0x97, 0x4d,
0xcb, 0x9d, 0xb4, 0xc6, |
| 733 0xf0, 0x3d, 0x0d, 0x62, 0x1a, 0x2d, 0x68, 0xa4, 0x7b, 0x73, 0xa6, 0xcf,
0x58, 0xc0, 0x69, 0xa4, | 1083 0x81, 0x45, 0xf9, 0x9f, 0xc7, 0x23, 0xb7, 0xc5, 0xdc, 0x37, 0xc4, 0xf1,
0x89, 0x77, 0x4d, 0xbc, |
| 734 0x2f, 0xbe, 0x91, 0x0c, 0x91, 0x6b, 0x6d, 0x1e, 0x85, 0x3c, 0x44, 0xa8,
0xa0, 0xd6, 0x24, 0xd3, | 1084 0x96, 0x39, 0xa5, 0xad, 0x09, 0x75, 0x18, 0xf1, 0x5a, 0xd7, 0x4f, 0x44,
0xc4, 0x10, 0xdf, 0xcd, |
| 735 0x7e, 0x32, 0x09, 0xc3, 0xc9, 0x94, 0xea, 0x42, 0x71, 0x9d, 0xbc, 0xd3,
0x39, 0x9b, 0xd1, 0x98, | 1085 0xa9, 0xe7, 0x32, 0x17, 0xa1, 0x44, 0x76, 0x53, 0x44, 0xea, 0xfb, 0x23,
0xd7, 0x1d, 0x8d, 0x49, |
| 736 0x7b, 0xb3, 0xb9, 0xdc, 0xd4, 0xbe, 0xf8, 0x98, 0x75, 0xee, 0x9a, 0xf0,
0x1b, 0xdd, 0xa7, 0x53, | 1086 0x8b, 0x67, 0x5c, 0x06, 0xaf, 0x5b, 0x8c, 0x4e, 0x88, 0xcf, 0xcc, 0xc9,
0x54, 0x2c, 0xaa, 0x9f, |
| 737 0x3a, 0xf1, 0x38, 0x0b, 0x03, 0x7d, 0x46, 0xe3, 0xd8, 0x9b, 0xd0, 0xb8,
0x80, 0x65, 0x91, 0x5e, | 1087 0xae, 0xa2, 0x8e, 0x59, 0x03, 0x76, 0xd5, 0xb2, 0xc9, 0x98, 0x8c, 0x4c,
0x46, 0x5d, 0xa7, 0x35, |
| 738 0xdc, 0xfb, 0x10, 0xde, 0xf8, 0x86, 0x05, 0x94, 0x08, 0x5c, 0x6e, 0xee,
0x7c, 0x80, 0x47, 0x16, | 1088 0x21, 0xbe, 0x6f, 0x8e, 0x88, 0x9f, 0xc0, 0xa2, 0x4a, 0x4f, 0x6f, 0xbd,
0x09, 0xd3, 0xba, 0xa2, |
| 739 0x0b, 0xb8, 0x25, 0x29, 0x37, 0x65, 0x30, 0xfd, 0x90, 0xd0, 0x98, 0xa3,
0x1f, 0xa1, 0x15, 0xd3, | 1089 0x0e, 0x31, 0x38, 0x2e, 0x16, 0x37, 0xde, 0xc2, 0xbd, 0x1e, 0x75, 0x58,
0x4f, 0x84, 0xf4, 0x30, |
| 740 0x88, 0x79, 0x53, 0xf6, 0x1b, 0xf5, 0xe5, 0x26, 0x12, 0x49, 0xae, 0xa5,
0x9c, 0x2a, 0x67, 0x7b, | 1090 0x82, 0xc9, 0xdb, 0x80, 0xf8, 0x0c, 0x7d, 0x05, 0x35, 0x9f, 0x78, 0xd4,
0x1c, 0xd3, 0xef, 0x88, |
| 741 0xf8, 0x64, 0xcd, 0x6f, 0xec, 0xfc, 0x14, 0x1a, 0x31, 0x9b, 0x04, 0x1e,
0x4f, 0x22, 0xda, 0xda, | 1091 0x2d, 0x16, 0x19, 0x9e, 0x88, 0xd5, 0xa4, 0x03, 0xe9, 0xb0, 0x82, 0xf7,
0xe6, 0xf1, 0xd4, 0xca, |
| 742 0x16, 0xd2, 0x35, 0xd0, 0xf9, 0x7d, 0x1b, 0x9a, 0x65, 0x7e, 0xa7, 0xb0,
0x3b, 0xa6, 0x11, 0x67, | 1092 0xff, 0x43, 0xc9, 0xa7, 0x23, 0xc7, 0x64, 0x81, 0x47, 0x6a, 0x39, 0x9e,
0x3a, 0x07, 0x1a, 0x3f, |
| 743 0xef, 0xd8, 0xd8, 0xe3, 0x34, 0xb3, 0x28, 0x42, 0xe8, 0x2d, 0x34, 0x57,
0x61, 0x88, 0x37, 0x9d, | 1093 0xe4, 0xa0, 0x9a, 0xc5, 0x77, 0x00, 0x65, 0x8b, 0x78, 0x8c, 0xbe, 0xa6,
0x96, 0xc9, 0x48, 0x44, |
| 744 0x84, 0x11, 0xe3, 0x37, 0x33, 0xe1, 0x70, 0xd0, 0xfd, 0x52, 0xbb, 0xdb,
0x06, 0xcd, 0xc9, 0xe5, | 1094 0x91, 0x84, 0xd0, 0x2b, 0xa8, 0xce, 0xca, 0x18, 0xe6, 0x78, 0xe4, 0x7a,
0x94, 0x5d, 0x4d, 0x38, |
| 745 0x46, 0xae, 0xc6, 0x28, 0xbe, 0x83, 0xa1, 0x1f, 0xa0, 0xc1, 0xe2, 0x38,
0xa1, 0x3e, 0xf1, 0x78, | 1095 0xc3, 0x66, 0xfb, 0xe3, 0xe6, 0x72, 0x1b, 0x9a, 0x5a, 0x9c, 0xae, 0xc4,
0xd9, 0x18, 0xf9, 0x4b, |
| 746 0xab, 0x72, 0xaa, 0x9c, 0xed, 0x76, 0xdb, 0x9a, 0xec, 0xa0, 0x96, 0x77,
0x50, 0x73, 0xf3, 0x0e, | 1096 0x18, 0xfa, 0x12, 0x4a, 0xd4, 0xf7, 0x03, 0x62, 0x1b, 0x26, 0xab, 0xe5,
0x0f, 0xa4, 0xc3, 0x72, |
| 747 0xe2, 0xba, 0x14, 0x1b, 0x1c, 0xfd, 0x04, 0x20, 0x0b, 0xc3, 0x97, 0x73,
0xda, 0xaa, 0x8a, 0x44, | 1097 0xbb, 0xde, 0x14, 0x1d, 0x6c, 0xc6, 0x1d, 0x6c, 0xea, 0x71, 0x07, 0x71,
0x51, 0x24, 0x2b, 0x0c, |
| 748 0x3e, 0xdb, 0x48, 0xa4, 0x78, 0x52, 0x77, 0x39, 0xa7, 0xb8, 0xc1, 0xf3,
0xcf, 0xcb, 0x6a, 0x7d, | 1098 0x7d, 0x0d, 0x20, 0x8c, 0x61, 0x37, 0x53, 0x52, 0x2b, 0x70, 0x21, 0x0f,
0x52, 0x42, 0x92, 0x3b, |
| 749 0x47, 0xad, 0x75, 0xfe, 0x55, 0xa0, 0x75, 0xb7, 0x07, 0xf1, 0x3c, 0x0c,
0x62, 0x9a, 0x1a, 0xd0, | 1099 0xd5, 0x6f, 0xa6, 0x04, 0x97, 0x58, 0xfc, 0xf3, 0xac, 0x50, 0x5c, 0x93,
0xd7, 0x1b, 0x7f, 0x49, |
| 750 0x28, 0x0a, 0x23, 0x32, 0x0e, 0x7d, 0x59, 0x93, 0xdb, 0x06, 0xd9, 0x49,
0xcd, 0x54, 0xd5, 0x0b, | 1100 0x50, 0x5b, 0xee, 0x81, 0x3f, 0x75, 0x1d, 0x9f, 0x84, 0x04, 0xc4, 0xf3,
0x5c, 0xcf, 0xb0, 0x5c, |
| 751 0x7d, 0x8a, 0x1b, 0x34, 0xff, 0x44, 0x9f, 0xc3, 0xbe, 0xdc, 0x9d, 0x4d,
0x8f, 0x28, 0x55, 0x03, | 1101 0x5b, 0x78, 0xb2, 0x48, 0x10, 0xed, 0x54, 0x0d, 0xb3, 0x3a, 0xae, 0x4d,
0x70, 0x89, 0xc4, 0x3f, |
| 752 0xef, 0x09, 0xd0, 0x92, 0x18, 0x1a, 0xc2, 0x41, 0xde, 0x5c, 0x69, 0x9a,
0x55, 0xe0, 0xac, 0xcc, | 1102 0xd1, 0x87, 0xb0, 0x21, 0x56, 0x47, 0xd3, 0xc3, 0xad, 0x2a, 0xe1, 0x0a,
0x07, 0x7b, 0x02, 0x43, |
| 753 0xa6, 0x2c, 0x49, 0xbc, 0xcf, 0x37, 0x72, 0xfe, 0x0a, 0x1e, 0xa6, 0x9b,
0xd8, 0x98, 0x92, 0x05, | 1103 0x03, 0xd8, 0x8c, 0x9b, 0x2b, 0x48, 0x23, 0x07, 0x0e, 0xb3, 0x68, 0xb2,
0x44, 0xe2, 0x0d, 0x96, |
| 754 0x8d, 0x62, 0x16, 0x06, 0xa2, 0x32, 0x0d, 0x7c, 0x90, 0xc1, 0x3f, 0x4b,
0xb4, 0xf3, 0xa7, 0x02, | 1104 0xd2, 0xfc, 0x09, 0x6c, 0x85, 0x8b, 0xa8, 0x45, 0x8c, 0x6b, 0xe2, 0xf9,
0xd4, 0x75, 0xb8, 0x33, |
| 755 0x47, 0xa5, 0xa7, 0x2e, 0x89, 0xb0, 0x5d, 0x16, 0x01, 0xb9, 0x80, 0xd2,
0x69, 0x27, 0x1b, 0xa3, | 1105 0x25, 0xbc, 0x19, 0xc1, 0x17, 0x02, 0x6d, 0xfc, 0x2a, 0xc1, 0x4e, 0xe6,
0xae, 0x33, 0x2a, 0xe4, |
| 756 0xdd, 0x3a, 0x16, 0xf9, 0x7f, 0x51, 0x96, 0xff, 0x9b, 0x64, 0xcc, 0x8a,
0x96, 0x17, 0x5b, 0x58, | 1106 0xb2, 0x2a, 0x20, 0x1d, 0x50, 0x38, 0xed, 0x46, 0x6a, 0xb4, 0x6b, 0xbb,
0x5c, 0xff, 0x47, 0x59, |
| 757 0x9d, 0xde, 0xc2, 0x5e, 0xee, 0x15, 0xbb, 0x7a, 0x59, 0xad, 0x2b, 0xea,
0xf6, 0x65, 0xb5, 0x7e, | 1107 0xfa, 0x5f, 0x06, 0x16, 0x4d, 0x52, 0x9e, 0xde, 0xc1, 0xf2, 0x78, 0x01,
0x7b, 0x56, 0x49, 0x76, |
| 758 0xa4, 0x1e, 0x77, 0xde, 0x83, 0x7a, 0x3b, 0x42, 0x5a, 0xe4, 0x4d, 0x7b,
0x45, 0x16, 0x79, 0x56, | 1108 0xf5, 0xac, 0x50, 0x94, 0xe4, 0xdc, 0x59, 0xa1, 0xb8, 0x23, 0xef, 0x36,
0xde, 0x80, 0xbc, 0x58, |
| 759 0x14, 0x75, 0xa1, 0x46, 0x7f, 0x9d, 0xb3, 0x68, 0x29, 0x0e, 0xf2, 0xff,
0xe3, 0x95, 0x29, 0x3b, | 1109 0x21, 0x34, 0x39, 0x4d, 0x2f, 0x09, 0x93, 0x27, 0xc9, 0xa4, 0x36, 0xac,
0x93, 0x6f, 0xa7, 0xd4, |
| 760 0x7f, 0x29, 0xd0, 0x4e, 0x07, 0xa3, 0xbf, 0xba, 0xf1, 0x1b, 0xf7, 0xe5,
0x39, 0xa0, 0xec, 0x2d, | 1110 0xbb, 0xe1, 0x1b, 0xf9, 0xe7, 0xf1, 0x8a, 0x32, 0x1b, 0xbf, 0x4b, 0x50,
0x0f, 0x07, 0xe3, 0x78, |
| 761 0xa0, 0x3e, 0x61, 0x3e, 0x0d, 0x38, 0xe3, 0xcb, 0xcc, 0xfc, 0x70, 0xc5,
0x0c, 0x32, 0x02, 0x3d, | 1111 0x76, 0xe2, 0x53, 0xe7, 0xe5, 0x31, 0xa0, 0xe8, 0x2e, 0x20, 0xb6, 0x41,
0x6d, 0xe2, 0x30, 0xca, |
| 762 0x83, 0xc3, 0x85, 0x37, 0x65, 0x3e, 0xe3, 0x4b, 0xe2, 0x27, 0x91, 0x88,
0x27, 0x92, 0xa9, 0x60, | 1112 0x6e, 0x22, 0xf2, 0xed, 0x59, 0xa4, 0x1b, 0x05, 0xd0, 0x23, 0xd8, 0xbe,
0x36, 0xc7, 0xd4, 0xa6, |
| 763 0x35, 0x27, 0xfa, 0x19, 0x8e, 0xda, 0x50, 0xf7, 0x12, 0x9f, 0xd1, 0x60,
0x9c, 0x4e, 0x43, 0xe5, | 1113 0xec, 0xc6, 0xb0, 0x03, 0x8f, 0xd7, 0xe3, 0x62, 0xf2, 0x58, 0x8e, 0x03,
0xc7, 0x11, 0x8e, 0xea, |
| 764 0xac, 0x81, 0x57, 0xeb, 0x94, 0xcb, 0xba, 0x10, 0xb7, 0xaa, 0x92, 0xcb,
0xd7, 0xe8, 0x04, 0x6a, | 1114 0x50, 0x34, 0x03, 0x9b, 0x12, 0xc7, 0x0a, 0xa7, 0x21, 0x7f, 0x58, 0xc2,
0xb3, 0xef, 0x30, 0x16, |
| 765 0x69, 0x9d, 0x03, 0xde, 0xda, 0x11, 0x79, 0x64, 0xab, 0xce, 0x1f, 0x0a,
0x3c, 0x2e, 0x3d, 0x4a, | 1115 0x75, 0xc1, 0xaf, 0x15, 0x44, 0x2c, 0xfe, 0x46, 0x7b, 0xb0, 0x1e, 0xfa,
0xec, 0xb0, 0xda, 0x1a, |
| 766 0xd6, 0xf0, 0x23, 0xd8, 0x29, 0xd6, 0x4e, 0x2e, 0x50, 0x0f, 0x9a, 0xeb,
0xd7, 0x8e, 0xc4, 0xc9, | 1116 0xd7, 0x11, 0x7d, 0x35, 0x7e, 0x91, 0xe0, 0x7e, 0xe6, 0x56, 0xa2, 0x86,
0xef, 0xc0, 0x5a, 0xd2, |
| 767 0xb5, 0xd4, 0xc8, 0x0a, 0x22, 0x2d, 0x7f, 0x12, 0x35, 0x27, 0x63, 0x30,
0x5a, 0xcb, 0x73, 0xac, | 1117 0x3b, 0xf1, 0x81, 0x3a, 0x50, 0x9d, 0xdf, 0x76, 0x86, 0x1f, 0x5c, 0x8a,
0x1c, 0xe1, 0x20, 0x6a, |
| 768 0x6c, 0x96, 0x2a, 0x65, 0xb3, 0xf4, 0xf4, 0x05, 0xa0, 0xbb, 0xcf, 0x05,
0x52, 0x61, 0x6f, 0x64, | 1118 0xc6, 0x57, 0x62, 0x53, 0x8b, 0x22, 0x18, 0xcd, 0xd3, 0x63, 0x2c, 0x6b,
0x96, 0xf2, 0x99, 0xd3, |
| 769 0xbf, 0xb6, 0x87, 0x6f, 0x6d, 0x62, 0xbc, 0x39, 0x1f, 0xaa, 0x5b, 0xa8,
0x09, 0x0f, 0x9d, 0x0b, | 1119 0xf8, 0x5b, 0x64, 0xf7, 0x40, 0x09, 0xd8, 0x15, 0x97, 0x77, 0xe2, 0x99,
0x0e, 0x8b, 0xed, 0x4e, |
| 770 0xa3, 0xfb, 0xdd, 0xf7, 0x04, 0x3b, 0x86, 0x04, 0x95, 0xa7, 0x7f, 0x2b,
0xd0, 0x58, 0x5d, 0x41, | 1120 0xd4, 0x31, 0x2d, 0xcb, 0x0d, 0x1c, 0x16, 0x89, 0x8d, 0xeb, 0x28, 0x02,
0x7d, 0x3f, 0xa3, 0x8f, |
| 771 0xb4, 0x0b, 0x0f, 0x9c, 0x51, 0xaf, 0x67, 0x3a, 0x8e, 0xba, 0x85, 0x3e,
0x81, 0xe3, 0x91, 0xed, | 1121 0x60, 0x9b, 0x38, 0xb6, 0x11, 0xf8, 0xc4, 0x9b, 0xf7, 0x50, 0xe8, 0xdb,
0x22, 0x8e, 0x3d, 0xf4, |
| 772 0x8c, 0xae, 0xae, 0x86, 0xd8, 0x35, 0xfb, 0xc4, 0x19, 0x9c, 0xdb, 0x86,
0x3b, 0xc2, 0xa6, 0xaa, | 1122 0x89, 0x37, 0xeb, 0xe0, 0xdc, 0xdc, 0x42, 0xca, 0xdc, 0x9f, 0x22, 0x73,
0x97, 0x84, 0x47, 0xe6, |
| 773 0xa0, 0x36, 0x9c, 0x14, 0x29, 0x77, 0xf8, 0xda, 0xb4, 0x89, 0xfb, 0xcb,
0x95, 0xa9, 0x6e, 0xa3, | 1123 0xee, 0x43, 0x79, 0x14, 0x02, 0xa9, 0xf1, 0x04, 0x0e, 0xfd, 0xeb, 0xe1,
0xbc, 0xbd, 0xad, 0x3f, |
| 774 0x43, 0xd8, 0x7f, 0x69, 0xf4, 0x89, 0x3b, 0xb0, 0x4c, 0xc7, 0x35, 0xac,
0x2b, 0xb5, 0x92, 0xca, | 1124 0x4a, 0xf0, 0x20, 0xad, 0xee, 0x82, 0x9a, 0x29, 0x67, 0xdf, 0xa9, 0xef,
0x21, 0x54, 0xdc, 0xf0, |
| 775 0x53, 0xa8, 0x67, 0x62, 0x77, 0xf0, 0x6a, 0xd0, 0x33, 0x5c, 0x93, 0xbc,
0x1a, 0x62, 0xcb, 0x70, | 1125 0x3d, 0x34, 0x7c, 0xcb, 0x9d, 0x12, 0xbf, 0x96, 0xe3, 0x53, 0x57, 0xe6,
0x98, 0xc6, 0x21, 0xd4, |
| 776 0xd5, 0x6a, 0x2e, 0x5f, 0x47, 0xdf, 0x91, 0xc6, 0x2e, 0x1e, 0x39, 0x69,
0xec, 0xc2, 0x26, 0xb5, | 1126 0x86, 0xdd, 0x09, 0x75, 0x8c, 0x65, 0xe3, 0xf3, 0xdc, 0xf8, 0xea, 0x84,
0x3a, 0x17, 0x0b, 0xde, |
| 777 0x86, 0x1e, 0x41, 0x53, 0x04, 0x17, 0x86, 0x06, 0x3e, 0x1f, 0x59, 0xa6,
0xed, 0x3a, 0xea, 0x03, | 1127 0x37, 0x7e, 0x96, 0xe0, 0x83, 0x55, 0xca, 0x22, 0xeb, 0x1e, 0x42, 0xc5,
0xb4, 0x2c, 0xe2, 0xfb, |
| 778 0xf4, 0x04, 0x1e, 0x5b, 0x46, 0xef, 0x62, 0x60, 0x9b, 0x19, 0x69, 0x0d,
0x6c, 0x77, 0x60, 0x9f, | 1128 0x29, 0x6d, 0x65, 0x81, 0xfd, 0xf7, 0xe6, 0x1d, 0x3d, 0x05, 0xb4, 0xfc,
0x84, 0x21, 0x19, 0x2a, |
| 779 0x13, 0x13, 0xe3, 0x21, 0x56, 0xeb, 0xdd, 0x7f, 0x14, 0xd8, 0x15, 0xbd,
0xb3, 0xc4, 0x85, 0x42, | 1129 0xc3, 0xfe, 0x8b, 0xfe, 0xe0, 0x55, 0xdf, 0x50, 0x5e, 0x9e, 0x0c, 0xe4,
0x3b, 0xa8, 0x0a, 0x5b, |
| 780 0x33, 0x50, 0x6f, 0x3f, 0x5e, 0xe8, 0x59, 0xe9, 0xcb, 0x51, 0xfe, 0x37,
0xd3, 0xfe, 0xfa, 0x7e, | 1130 0xda, 0xa9, 0xd2, 0xfe, 0xfc, 0x0b, 0x03, 0x6b, 0x8a, 0x00, 0xa5, 0xa3,
0x3f, 0x24, 0x28, 0xcd, |
| 781 0xe2, 0x6c, 0x50, 0x16, 0xd0, 0x2c, 0x99, 0x23, 0xa4, 0x7d, 0x2c, 0x48,
0xf9, 0xdd, 0x69, 0xeb, | 1131 0x9e, 0x05, 0x54, 0x86, 0xbb, 0xda, 0xb0, 0xd3, 0x51, 0x35, 0x4d, 0xbe,
0x83, 0xfe, 0x07, 0xbb, |
| 782 0xf7, 0xd6, 0x4b, 0xdf, 0xeb, 0x9a, 0xb8, 0xa7, 0xdf, 0xfe, 0x17, 0x00,
0x00, 0xff, 0xff, 0x24, | 1132 0xc3, 0xbe, 0x36, 0x3c, 0x3f, 0x1f, 0x60, 0x5d, 0x3d, 0x36, 0xb4, 0xee,
0x49, 0x5f, 0xd1, 0x87, |
| 783 0xdc, 0xe5, 0x43, 0x32, 0x08, 0x00, 0x00, | 1133 0x58, 0x95, 0x25, 0x54, 0x87, 0xbd, 0x64, 0x48, 0x1f, 0xbc, 0x50, 0xfb,
0x86, 0xfe, 0xcd, 0xb9, |
| 1134 0x2a, 0xe7, 0xd0, 0x36, 0x6c, 0x3c, 0x53, 0x8e, 0x0d, 0xbd, 0xdb, 0x53,
0x35, 0x5d, 0xe9, 0x9d, |
| 1135 0xcb, 0xf9, 0x30, 0x3d, 0x84, 0x3a, 0x2a, 0xd6, 0xbb, 0xcf, 0xbb, 0x1d,
0x45, 0x57, 0x8d, 0xe7, |
| 1136 0x03, 0xdc, 0x53, 0x74, 0xb9, 0x10, 0xa7, 0xcf, 0xab, 0xaf, 0x09, 0x62,
0x1d, 0x0f, 0xb5, 0xb0, |
| 1137 0x76, 0x62, 0x91, 0xbc, 0x8e, 0xee, 0x41, 0x95, 0x17, 0xe7, 0x84, 0x0a,
0x3e, 0x19, 0xf6, 0xd4, |
| 1138 0xbe, 0xae, 0xc9, 0x77, 0xd1, 0x3e, 0xdc, 0xef, 0x29, 0x9d, 0xd3, 0x6e,
0x5f, 0x8d, 0x82, 0xbd, |
| 1139 0x6e, 0x5f, 0xef, 0xf6, 0x4f, 0x0c, 0x15, 0xe3, 0x01, 0x96, 0x8b, 0xed,
0x3f, 0xf3, 0x50, 0xe6, |
| 1140 0xcd, 0xe8, 0xf1, 0x4b, 0x1e, 0x4d, 0x40, 0x5e, 0x7c, 0x50, 0xd1, 0xa3,
0xcc, 0xd7, 0x2c, 0xfb, |
| 1141 0x5f, 0x9f, 0xfa, 0xa7, 0xb7, 0x4b, 0x8e, 0x86, 0xe4, 0x1a, 0xaa, 0x19,
0x77, 0x1b, 0x6a, 0xae, |
| 1142 0x2a, 0x92, 0x7d, 0x9f, 0xd7, 0x5b, 0xb7, 0xce, 0x4f, 0xf3, 0x2e, 0x1c,
0xfb, 0xd5, 0xbc, 0xd9, |
| 1143 0x17, 0xdb, 0x6a, 0xde, 0x55, 0xf7, 0xc9, 0xf7, 0xb0, 0x97, 0x7d, 0x6c,
0xd0, 0x93, 0x77, 0x97, |
| 1144 0x5a, 0x38, 0xfc, 0xf5, 0xf6, 0xfb, 0x2c, 0x11, 0x02, 0x2e, 0xd7, 0xf9,
0xd1, 0xfa, 0xec, 0xef, |
| 1145 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x07, 0xeb, 0xf4, 0xbf, 0x0b, 0x00,
0x00, |
| 784 } | 1146 } |
| OLD | NEW |