| OLD | NEW |
| 1 // Code generated by protoc-gen-go. | 1 // Code generated by protoc-gen-go. |
| 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 // DO NOT EDIT! | 3 // DO NOT EDIT! |
| 4 | 4 |
| 5 /* | 5 /* |
| 6 Package minter is a generated protocol buffer package. | 6 Package minter is a generated protocol buffer package. |
| 7 | 7 |
| 8 It is generated from these files: | 8 It is generated from these files: |
| 9 github.com/luci/luci-go/tokenserver/api/minter/v1/token_minter.proto | 9 github.com/luci/luci-go/tokenserver/api/minter/v1/token_minter.proto |
| 10 | 10 |
| 11 It has these top-level messages: | 11 It has these top-level messages: |
| 12 MintMachineTokenRequest | 12 MintMachineTokenRequest |
| 13 MachineTokenRequest | 13 MachineTokenRequest |
| 14 MintMachineTokenResponse | 14 MintMachineTokenResponse |
| 15 MachineTokenResponse | 15 MachineTokenResponse |
| 16 LuciMachineToken | 16 LuciMachineToken |
| 17 MintDelegationTokenRequest | 17 MintDelegationTokenRequest |
| 18 MintDelegationTokenResponse | 18 MintDelegationTokenResponse |
| 19 MintOAuthTokenGrantRequest |
| 20 MintOAuthTokenGrantResponse |
| 21 MintOAuthTokenViaGrantRequest |
| 22 MintOAuthTokenViaGrantResponse |
| 19 */ | 23 */ |
| 20 package minter | 24 package minter |
| 21 | 25 |
| 22 import prpc "github.com/luci/luci-go/grpc/prpc" | 26 import prpc "github.com/luci/luci-go/grpc/prpc" |
| 23 | 27 |
| 24 import proto "github.com/golang/protobuf/proto" | 28 import proto "github.com/golang/protobuf/proto" |
| 25 import fmt "fmt" | 29 import fmt "fmt" |
| 26 import math "math" | 30 import math "math" |
| 27 import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" | 31 import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" |
| 28 import messages "github.com/luci/luci-go/server/auth/delegation/messages" | 32 import messages "github.com/luci/luci-go/server/auth/delegation/messages" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 return nil | 194 return nil |
| 191 } | 195 } |
| 192 | 196 |
| 193 func (m *MachineTokenRequest) GetTokenType() tokenserver.MachineTokenType { | 197 func (m *MachineTokenRequest) GetTokenType() tokenserver.MachineTokenType { |
| 194 if m != nil { | 198 if m != nil { |
| 195 return m.TokenType | 199 return m.TokenType |
| 196 } | 200 } |
| 197 return tokenserver.MachineTokenType_UNKNOWN_TYPE | 201 return tokenserver.MachineTokenType_UNKNOWN_TYPE |
| 198 } | 202 } |
| 199 | 203 |
| 200 // MintMachineTokenResponse is returned by 'MintMachineToken' if the server | 204 // MintMachineTokenResponse is returned by MintMachineToken if the server |
| 201 // processed the request. | 205 // processed the request. |
| 202 // | 206 // |
| 203 // It's returned even if server refuses to mint a token. It contains the error | 207 // It's returned even if server refuses to mint a token. It contains the error |
| 204 // details in that case. | 208 // details in that case. |
| 205 type MintMachineTokenResponse struct { | 209 type MintMachineTokenResponse struct { |
| 206 // Possible kinds of fatal errors. | 210 // Possible kinds of fatal errors. |
| 207 // | 211 // |
| 208 // Non fatal errors are returned as grpc.Internal errors instead. | 212 // Non fatal errors are returned as grpc.Internal errors instead. |
| 209 ErrorCode ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCo
de,enum=tokenserver.minter.ErrorCode" json:"error_code,omitempty"` | 213 ErrorCode ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCo
de,enum=tokenserver.minter.ErrorCode" json:"error_code,omitempty"` |
| 210 // Optional detailed error message. | 214 // Optional detailed error message. |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 return nil | 474 return nil |
| 471 } | 475 } |
| 472 | 476 |
| 473 func (m *MintDelegationTokenRequest) GetIntent() string { | 477 func (m *MintDelegationTokenRequest) GetIntent() string { |
| 474 if m != nil { | 478 if m != nil { |
| 475 return m.Intent | 479 return m.Intent |
| 476 } | 480 } |
| 477 return "" | 481 return "" |
| 478 } | 482 } |
| 479 | 483 |
| 480 // MintDelegationTokenResponse is returned by 'MintDelegationToken' on success. | 484 // MintDelegationTokenResponse is returned by MintDelegationToken on success. |
| 481 // | 485 // |
| 482 // Errors are returned via standard gRPC codes. | 486 // Errors are returned via standard gRPC codes. |
| 483 type MintDelegationTokenResponse struct { | 487 type MintDelegationTokenResponse struct { |
| 484 // The actual base64-encoded signed token. | 488 // The actual base64-encoded signed token. |
| 485 Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` | 489 Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` |
| 486 // Same data as in 'token' in deserialized form, just for convenience. | 490 // Same data as in 'token' in deserialized form, just for convenience. |
| 487 // | 491 // |
| 488 // Mostly for JSON encoding users, since they may not understand proto-e
ncoded | 492 // Mostly for JSON encoding users, since they may not understand proto-e
ncoded |
| 489 // tokens. | 493 // tokens. |
| 490 DelegationSubtoken *messages.Subtoken `protobuf:"bytes,2,opt,name=delega
tion_subtoken,json=delegationSubtoken" json:"delegation_subtoken,omitempty"` | 494 DelegationSubtoken *messages.Subtoken `protobuf:"bytes,2,opt,name=delega
tion_subtoken,json=delegationSubtoken" json:"delegation_subtoken,omitempty"` |
| 491 // Identifier of the service and its version that produced the token. | 495 // Identifier of the service and its version that produced the token. |
| 492 // | 496 // |
| 493 // Has the form "<app-id>/<module-version>". This is _not_ part of the t
oken. | 497 // Has the form "<app-id>/<module-version>". This is _not_ part of the t
oken. |
| 498 // Used only for logging and monitoring. |
| 494 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` | 499 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` |
| 495 } | 500 } |
| 496 | 501 |
| 497 func (m *MintDelegationTokenResponse) Reset() { *m = MintDele
gationTokenResponse{} } | 502 func (m *MintDelegationTokenResponse) Reset() { *m = MintDele
gationTokenResponse{} } |
| 498 func (m *MintDelegationTokenResponse) String() string { return proto.
CompactTextString(m) } | 503 func (m *MintDelegationTokenResponse) String() string { return proto.
CompactTextString(m) } |
| 499 func (*MintDelegationTokenResponse) ProtoMessage() {} | 504 func (*MintDelegationTokenResponse) ProtoMessage() {} |
| 500 func (*MintDelegationTokenResponse) Descriptor() ([]byte, []int) { return fileDe
scriptor0, []int{6} } | 505 func (*MintDelegationTokenResponse) Descriptor() ([]byte, []int) { return fileDe
scriptor0, []int{6} } |
| 501 | 506 |
| 502 func (m *MintDelegationTokenResponse) GetToken() string { | 507 func (m *MintDelegationTokenResponse) GetToken() string { |
| 503 if m != nil { | 508 if m != nil { |
| 504 return m.Token | 509 return m.Token |
| 505 } | 510 } |
| 506 return "" | 511 return "" |
| 507 } | 512 } |
| 508 | 513 |
| 509 func (m *MintDelegationTokenResponse) GetDelegationSubtoken() *messages.Subtoken
{ | 514 func (m *MintDelegationTokenResponse) GetDelegationSubtoken() *messages.Subtoken
{ |
| 510 if m != nil { | 515 if m != nil { |
| 511 return m.DelegationSubtoken | 516 return m.DelegationSubtoken |
| 512 } | 517 } |
| 513 return nil | 518 return nil |
| 514 } | 519 } |
| 515 | 520 |
| 516 func (m *MintDelegationTokenResponse) GetServiceVersion() string { | 521 func (m *MintDelegationTokenResponse) GetServiceVersion() string { |
| 517 if m != nil { | 522 if m != nil { |
| 518 return m.ServiceVersion | 523 return m.ServiceVersion |
| 519 } | 524 } |
| 520 return "" | 525 return "" |
| 521 } | 526 } |
| 522 | 527 |
| 528 // MintOAuthTokenGrantRequest is passed to MintOAuthTokenGrant. |
| 529 // |
| 530 // Additional implicit field is the identity of whoever makes this call. It |
| 531 // becomes 'wielder_identity' of the generated token. |
| 532 type MintOAuthTokenGrantRequest struct { |
| 533 // Service account identity the end user wants to act as. |
| 534 // |
| 535 // A string of the form "user:<email>". |
| 536 // |
| 537 // Required. |
| 538 ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=s
erviceAccount" json:"service_account,omitempty"` |
| 539 // How long the generated grant should be considered valid (in seconds). |
| 540 // |
| 541 // Default is 3600 sec. |
| 542 ValidityDuration int64 `protobuf:"varint,2,opt,name=validity_duration,js
on=validityDuration" json:"validity_duration,omitempty"` |
| 543 // An end user that wants to act as the service account (perhaps indirec
tly). |
| 544 // |
| 545 // A string of the form "user:<email>". On Swarming, this is an identity
of |
| 546 // a user that posted the task. |
| 547 // |
| 548 // TODO(vadimsh): Verify that this user is present during MintOAuthToken
Grant |
| 549 // RPC by requiring the end user's credentials, e.g make Swarming forwar
d |
| 550 // user's OAuth token to the token server, where it can be validated. |
| 551 // |
| 552 // Required. |
| 553 EndUserIdentity string `protobuf:"bytes,3,opt,name=end_user_identity,jso
n=endUserIdentity" json:"end_user_identity,omitempty"` |
| 554 // Optional reason why the grant is created. |
| 555 // |
| 556 // Used only for logging and auditing purposes. Doesn't become part of t
he |
| 557 // grant. |
| 558 Intent string `protobuf:"bytes,4,opt,name=intent" json:"intent,omitempty
"` |
| 559 } |
| 560 |
| 561 func (m *MintOAuthTokenGrantRequest) Reset() { *m = MintOAuth
TokenGrantRequest{} } |
| 562 func (m *MintOAuthTokenGrantRequest) String() string { return proto.C
ompactTextString(m) } |
| 563 func (*MintOAuthTokenGrantRequest) ProtoMessage() {} |
| 564 func (*MintOAuthTokenGrantRequest) Descriptor() ([]byte, []int) { return fileDes
criptor0, []int{7} } |
| 565 |
| 566 func (m *MintOAuthTokenGrantRequest) GetServiceAccount() string { |
| 567 if m != nil { |
| 568 return m.ServiceAccount |
| 569 } |
| 570 return "" |
| 571 } |
| 572 |
| 573 func (m *MintOAuthTokenGrantRequest) GetValidityDuration() int64 { |
| 574 if m != nil { |
| 575 return m.ValidityDuration |
| 576 } |
| 577 return 0 |
| 578 } |
| 579 |
| 580 func (m *MintOAuthTokenGrantRequest) GetEndUserIdentity() string { |
| 581 if m != nil { |
| 582 return m.EndUserIdentity |
| 583 } |
| 584 return "" |
| 585 } |
| 586 |
| 587 func (m *MintOAuthTokenGrantRequest) GetIntent() string { |
| 588 if m != nil { |
| 589 return m.Intent |
| 590 } |
| 591 return "" |
| 592 } |
| 593 |
| 594 // MintOAuthTokenGrantResponse is returned by MintOAuthTokenGrant. |
| 595 type MintOAuthTokenGrantResponse struct { |
| 596 GrantToken string `protobuf:"bytes,1,opt,name=grant_
token,json=grantToken" json:"grant_token,omitempty"` |
| 597 Expiry *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=expiry
" json:"expiry,omitempty"` |
| 598 // Identifier of the service and its version that produced the token. |
| 599 // |
| 600 // Has the form "<app-id>/<module-version>". This is _not_ part of the t
oken. |
| 601 // Used only for logging and monitoring. |
| 602 ServiceVersion string `protobuf:"bytes,3,opt,name=service_version,json=s
erviceVersion" json:"service_version,omitempty"` |
| 603 } |
| 604 |
| 605 func (m *MintOAuthTokenGrantResponse) Reset() { *m = MintOAut
hTokenGrantResponse{} } |
| 606 func (m *MintOAuthTokenGrantResponse) String() string { return proto.
CompactTextString(m) } |
| 607 func (*MintOAuthTokenGrantResponse) ProtoMessage() {} |
| 608 func (*MintOAuthTokenGrantResponse) Descriptor() ([]byte, []int) { return fileDe
scriptor0, []int{8} } |
| 609 |
| 610 func (m *MintOAuthTokenGrantResponse) GetGrantToken() string { |
| 611 if m != nil { |
| 612 return m.GrantToken |
| 613 } |
| 614 return "" |
| 615 } |
| 616 |
| 617 func (m *MintOAuthTokenGrantResponse) GetExpiry() *google_protobuf.Timestamp { |
| 618 if m != nil { |
| 619 return m.Expiry |
| 620 } |
| 621 return nil |
| 622 } |
| 623 |
| 624 func (m *MintOAuthTokenGrantResponse) GetServiceVersion() string { |
| 625 if m != nil { |
| 626 return m.ServiceVersion |
| 627 } |
| 628 return "" |
| 629 } |
| 630 |
| 631 // MintOAuthTokenViaGrantRequest is passed to MintOAuthTokenViaGrant. |
| 632 // |
| 633 // Additional implicit field is the identity of whoever makes this call. It is |
| 634 // compared against 'wielder_identity' inside the token. |
| 635 type MintOAuthTokenViaGrantRequest struct { |
| 636 // A previously generated grant, as returned by MintOAuthTokenGrant. |
| 637 GrantToken string `protobuf:"bytes,1,opt,name=grant_token,json=grantToke
n" json:"grant_token,omitempty"` |
| 638 // The list of OAuth scopes the access token should have. |
| 639 // |
| 640 // The server may reject the request if some scopes are not allowed. |
| 641 OauthScopes []string `protobuf:"bytes,2,rep,name=oauth_scopes,json=oauth
Scopes" json:"oauth_scopes,omitempty"` |
| 642 // Minimally accepted validity duration of the returned OAuth token (sec
onds). |
| 643 // |
| 644 // The server may return a token that lives longer than this. The maximu
m is |
| 645 // 1h. An attempt to get a token that lives longer will result in a erro
r. |
| 646 // |
| 647 // The returned token validity duration doesn't not depend on the lifeti
me of |
| 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 3600 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 |
| 523 func init() { | 718 func init() { |
| 524 proto.RegisterType((*MintMachineTokenRequest)(nil), "tokenserver.minter.
MintMachineTokenRequest") | 719 proto.RegisterType((*MintMachineTokenRequest)(nil), "tokenserver.minter.
MintMachineTokenRequest") |
| 525 proto.RegisterType((*MachineTokenRequest)(nil), "tokenserver.minter.Mach
ineTokenRequest") | 720 proto.RegisterType((*MachineTokenRequest)(nil), "tokenserver.minter.Mach
ineTokenRequest") |
| 526 proto.RegisterType((*MintMachineTokenResponse)(nil), "tokenserver.minter
.MintMachineTokenResponse") | 721 proto.RegisterType((*MintMachineTokenResponse)(nil), "tokenserver.minter
.MintMachineTokenResponse") |
| 527 proto.RegisterType((*MachineTokenResponse)(nil), "tokenserver.minter.Mac
hineTokenResponse") | 722 proto.RegisterType((*MachineTokenResponse)(nil), "tokenserver.minter.Mac
hineTokenResponse") |
| 528 proto.RegisterType((*LuciMachineToken)(nil), "tokenserver.minter.LuciMac
hineToken") | 723 proto.RegisterType((*LuciMachineToken)(nil), "tokenserver.minter.LuciMac
hineToken") |
| 529 proto.RegisterType((*MintDelegationTokenRequest)(nil), "tokenserver.mint
er.MintDelegationTokenRequest") | 724 proto.RegisterType((*MintDelegationTokenRequest)(nil), "tokenserver.mint
er.MintDelegationTokenRequest") |
| 530 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") |
| 531 proto.RegisterEnum("tokenserver.minter.SignatureAlgorithm", SignatureAlg
orithm_name, SignatureAlgorithm_value) | 730 proto.RegisterEnum("tokenserver.minter.SignatureAlgorithm", SignatureAlg
orithm_name, SignatureAlgorithm_value) |
| 532 proto.RegisterEnum("tokenserver.minter.ErrorCode", ErrorCode_name, Error
Code_value) | 731 proto.RegisterEnum("tokenserver.minter.ErrorCode", ErrorCode_name, Error
Code_value) |
| 533 } | 732 } |
| 534 | 733 |
| 535 // Reference imports to suppress errors if they are not otherwise used. | 734 // Reference imports to suppress errors if they are not otherwise used. |
| 536 var _ context.Context | 735 var _ context.Context |
| 537 var _ grpc.ClientConn | 736 var _ grpc.ClientConn |
| 538 | 737 |
| 539 // 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 |
| 540 // 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... |
| 566 // the token): | 765 // the token): |
| 567 // * They have expiration time. | 766 // * They have expiration time. |
| 568 // * 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 |
| 569 // the 'audience' list. | 768 // the 'audience' list. |
| 570 // * They are usable only on services specified in the 'services' list
. | 769 // * They are usable only on services specified in the 'services' list
. |
| 571 // | 770 // |
| 572 // The token server must be configured in advance with all expected | 771 // The token server must be configured in advance with all expected |
| 573 // combinations of (caller identity, delegated identity, audience, servi
ce) | 772 // combinations of (caller identity, delegated identity, audience, servi
ce) |
| 574 // tuples. See DelegationRule in config.proto. | 773 // tuples. See DelegationRule in config.proto. |
| 575 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) |
| 576 } | 810 } |
| 577 type tokenMinterPRPCClient struct { | 811 type tokenMinterPRPCClient struct { |
| 578 client *prpc.Client | 812 client *prpc.Client |
| 579 } | 813 } |
| 580 | 814 |
| 581 func NewTokenMinterPRPCClient(client *prpc.Client) TokenMinterClient { | 815 func NewTokenMinterPRPCClient(client *prpc.Client) TokenMinterClient { |
| 582 return &tokenMinterPRPCClient{client} | 816 return &tokenMinterPRPCClient{client} |
| 583 } | 817 } |
| 584 | 818 |
| 585 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) { |
| 586 out := new(MintMachineTokenResponse) | 820 out := new(MintMachineTokenResponse) |
| 587 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...) |
| 588 if err != nil { | 822 if err != nil { |
| 589 return nil, err | 823 return nil, err |
| 590 } | 824 } |
| 591 return out, nil | 825 return out, nil |
| 592 } | 826 } |
| 593 | 827 |
| 594 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) { |
| 595 out := new(MintDelegationTokenResponse) | 829 out := new(MintDelegationTokenResponse) |
| 596 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...) |
| 597 if err != nil { | 831 if err != nil { |
| 598 return nil, err | 832 return nil, err |
| 599 } | 833 } |
| 600 return out, nil | 834 return out, nil |
| 601 } | 835 } |
| 602 | 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 |
| 603 type tokenMinterClient struct { | 855 type tokenMinterClient struct { |
| 604 cc *grpc.ClientConn | 856 cc *grpc.ClientConn |
| 605 } | 857 } |
| 606 | 858 |
| 607 func NewTokenMinterClient(cc *grpc.ClientConn) TokenMinterClient { | 859 func NewTokenMinterClient(cc *grpc.ClientConn) TokenMinterClient { |
| 608 return &tokenMinterClient{cc} | 860 return &tokenMinterClient{cc} |
| 609 } | 861 } |
| 610 | 862 |
| 611 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) { |
| 612 out := new(MintMachineTokenResponse) | 864 out := new(MintMachineTokenResponse) |
| 613 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...) |
| 614 if err != nil { | 866 if err != nil { |
| 615 return nil, err | 867 return nil, err |
| 616 } | 868 } |
| 617 return out, nil | 869 return out, nil |
| 618 } | 870 } |
| 619 | 871 |
| 620 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) { |
| 621 out := new(MintDelegationTokenResponse) | 873 out := new(MintDelegationTokenResponse) |
| 622 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...) |
| 623 if err != nil { | 875 if err != nil { |
| 624 return nil, err | 876 return nil, err |
| 625 } | 877 } |
| 626 return out, nil | 878 return out, nil |
| 627 } | 879 } |
| 628 | 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 |
| 629 // Server API for TokenMinter service | 899 // Server API for TokenMinter service |
| 630 | 900 |
| 631 type TokenMinterServer interface { | 901 type TokenMinterServer interface { |
| 632 // MintMachineToken generates a new token for an authenticated machine. | 902 // MintMachineToken generates a new token for an authenticated machine. |
| 633 // | 903 // |
| 634 // 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 |
| 635 // 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 |
| 636 // 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 |
| 637 // that the caller is authorized to generate requested kind of token. | 907 // that the caller is authorized to generate requested kind of token. |
| 638 // | 908 // |
| (...skipping 13 matching lines...) Expand all Loading... |
| 652 // the token): | 922 // the token): |
| 653 // * They have expiration time. | 923 // * They have expiration time. |
| 654 // * 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 |
| 655 // the 'audience' list. | 925 // the 'audience' list. |
| 656 // * They are usable only on services specified in the 'services' list
. | 926 // * They are usable only on services specified in the 'services' list
. |
| 657 // | 927 // |
| 658 // The token server must be configured in advance with all expected | 928 // The token server must be configured in advance with all expected |
| 659 // combinations of (caller identity, delegated identity, audience, servi
ce) | 929 // combinations of (caller identity, delegated identity, audience, servi
ce) |
| 660 // tuples. See DelegationRule in config.proto. | 930 // tuples. See DelegationRule in config.proto. |
| 661 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) |
| 662 } | 967 } |
| 663 | 968 |
| 664 func RegisterTokenMinterServer(s prpc.Registrar, srv TokenMinterServer) { | 969 func RegisterTokenMinterServer(s prpc.Registrar, srv TokenMinterServer) { |
| 665 s.RegisterService(&_TokenMinter_serviceDesc, srv) | 970 s.RegisterService(&_TokenMinter_serviceDesc, srv) |
| 666 } | 971 } |
| 667 | 972 |
| 668 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) { |
| 669 in := new(MintMachineTokenRequest) | 974 in := new(MintMachineTokenRequest) |
| 670 if err := dec(in); err != nil { | 975 if err := dec(in); err != nil { |
| 671 return nil, err | 976 return nil, err |
| (...skipping 22 matching lines...) Expand all Loading... |
| 694 info := &grpc.UnaryServerInfo{ | 999 info := &grpc.UnaryServerInfo{ |
| 695 Server: srv, | 1000 Server: srv, |
| 696 FullMethod: "/tokenserver.minter.TokenMinter/MintDelegationToken
", | 1001 FullMethod: "/tokenserver.minter.TokenMinter/MintDelegationToken
", |
| 697 } | 1002 } |
| 698 handler := func(ctx context.Context, req interface{}) (interface{}, erro
r) { | 1003 handler := func(ctx context.Context, req interface{}) (interface{}, erro
r) { |
| 699 return srv.(TokenMinterServer).MintDelegationToken(ctx, req.(*Mi
ntDelegationTokenRequest)) | 1004 return srv.(TokenMinterServer).MintDelegationToken(ctx, req.(*Mi
ntDelegationTokenRequest)) |
| 700 } | 1005 } |
| 701 return interceptor(ctx, in, info, handler) | 1006 return interceptor(ctx, in, info, handler) |
| 702 } | 1007 } |
| 703 | 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 |
| 704 var _TokenMinter_serviceDesc = grpc.ServiceDesc{ | 1045 var _TokenMinter_serviceDesc = grpc.ServiceDesc{ |
| 705 ServiceName: "tokenserver.minter.TokenMinter", | 1046 ServiceName: "tokenserver.minter.TokenMinter", |
| 706 HandlerType: (*TokenMinterServer)(nil), | 1047 HandlerType: (*TokenMinterServer)(nil), |
| 707 Methods: []grpc.MethodDesc{ | 1048 Methods: []grpc.MethodDesc{ |
| 708 { | 1049 { |
| 709 MethodName: "MintMachineToken", | 1050 MethodName: "MintMachineToken", |
| 710 Handler: _TokenMinter_MintMachineToken_Handler, | 1051 Handler: _TokenMinter_MintMachineToken_Handler, |
| 711 }, | 1052 }, |
| 712 { | 1053 { |
| 713 MethodName: "MintDelegationToken", | 1054 MethodName: "MintDelegationToken", |
| 714 Handler: _TokenMinter_MintDelegationToken_Handler, | 1055 Handler: _TokenMinter_MintDelegationToken_Handler, |
| 715 }, | 1056 }, |
| 1057 { |
| 1058 MethodName: "MintOAuthTokenGrant", |
| 1059 Handler: _TokenMinter_MintOAuthTokenGrant_Handler, |
| 1060 }, |
| 1061 { |
| 1062 MethodName: "MintOAuthTokenViaGrant", |
| 1063 Handler: _TokenMinter_MintOAuthTokenViaGrant_Handler, |
| 1064 }, |
| 716 }, | 1065 }, |
| 717 Streams: []grpc.StreamDesc{}, | 1066 Streams: []grpc.StreamDesc{}, |
| 718 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", |
| 719 } | 1068 } |
| 720 | 1069 |
| 721 func init() { | 1070 func init() { |
| 722 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) |
| 723 } | 1072 } |
| 724 | 1073 |
| 725 var fileDescriptor0 = []byte{ | 1074 var fileDescriptor0 = []byte{ |
| 726 // 919 bytes of a gzipped FileDescriptorProto | 1075 // 1117 bytes of a gzipped FileDescriptorProto |
| 727 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, |
| 728 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, |
| 729 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, |
| 730 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, |
| 731 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, |
| 732 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, |
| 733 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, |
| 734 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, |
| 735 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, |
| 736 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, |
| 737 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, |
| 738 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, |
| 739 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, |
| 740 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, |
| 741 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, |
| 742 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, |
| 743 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, |
| 744 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, |
| 745 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, |
| 746 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, |
| 747 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, |
| 748 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, |
| 749 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, |
| 750 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, |
| 751 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, |
| 752 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, |
| 753 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, |
| 754 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, |
| 755 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, |
| 756 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, |
| 757 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, |
| 758 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, |
| 759 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, |
| 760 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, |
| 761 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, |
| 762 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, |
| 763 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, |
| 764 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, |
| 765 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, |
| 766 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, |
| 767 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, |
| 768 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, |
| 769 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, |
| 770 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, |
| 771 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, |
| 772 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, |
| 773 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, |
| 774 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, |
| 775 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, |
| 776 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, |
| 777 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, |
| 778 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, |
| 779 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, |
| 780 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, |
| 781 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, |
| 782 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, |
| 783 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, |
| 784 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, |
| 785 } | 1146 } |
| OLD | NEW |