Jiri Simsa | 67b8a26 | 2015-03-24 21:14:07 -0700 | [diff] [blame] | 1 | // Copyright 2015 The Vanadium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
Suharsh Sivakumar | a4ac50a | 2015-03-13 16:13:50 -0700 | [diff] [blame] | 5 | // This file was auto-generated by the vanadium vdl tool. |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 6 | // Source: discharger.vdl |
| 7 | |
Todd Wang | 8c4e5cc | 2015-04-09 11:30:52 -0700 | [diff] [blame] | 8 | // Package discharger defines an interface for obtaining discharges for |
| 9 | // third-party caveats. |
Todd Wang | 5bcf1c1 | 2015-04-03 18:49:40 -0700 | [diff] [blame] | 10 | package discharger |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 11 | |
| 12 | import ( |
Todd Wang | b0d5dce | 2015-02-05 14:07:55 -0800 | [diff] [blame] | 13 | // VDL system imports |
Jiri Simsa | 6ac9522 | 2015-02-23 16:11:49 -0800 | [diff] [blame] | 14 | "v.io/v23" |
| 15 | "v.io/v23/context" |
Robin Thellend | 83cd612 | 2015-03-30 10:09:13 -0700 | [diff] [blame] | 16 | "v.io/v23/i18n" |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 17 | "v.io/v23/rpc" |
Robin Thellend | 83cd612 | 2015-03-30 10:09:13 -0700 | [diff] [blame] | 18 | "v.io/v23/verror" |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 19 | |
Todd Wang | b0d5dce | 2015-02-05 14:07:55 -0800 | [diff] [blame] | 20 | // VDL user imports |
Jiri Simsa | 6ac9522 | 2015-02-23 16:11:49 -0800 | [diff] [blame] | 21 | "v.io/v23/security" |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 22 | ) |
| 23 | |
Robin Thellend | 83cd612 | 2015-03-30 10:09:13 -0700 | [diff] [blame] | 24 | var ( |
| 25 | // Indicates that the Caveat does not require a discharge |
Todd Wang | 5bcf1c1 | 2015-04-03 18:49:40 -0700 | [diff] [blame] | 26 | ErrNotAThirdPartyCaveat = verror.Register("v.io/x/ref/services/discharger.NotAThirdPartyCaveat", verror.NoRetry, "{1:}{2:} discharges are not required for non-third-party caveats (id: {c.id})") |
Robin Thellend | 83cd612 | 2015-03-30 10:09:13 -0700 | [diff] [blame] | 27 | ) |
| 28 | |
| 29 | func init() { |
| 30 | i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrNotAThirdPartyCaveat.ID), "{1:}{2:} discharges are not required for non-third-party caveats (id: {c.id})") |
| 31 | } |
| 32 | |
| 33 | // NewErrNotAThirdPartyCaveat returns an error with the ErrNotAThirdPartyCaveat ID. |
| 34 | func NewErrNotAThirdPartyCaveat(ctx *context.T, c security.Caveat) error { |
| 35 | return verror.New(ErrNotAThirdPartyCaveat, ctx, c) |
| 36 | } |
| 37 | |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 38 | // DischargerClientMethods is the client interface |
| 39 | // containing Discharger methods. |
| 40 | // |
Asim Shankar | a94e507 | 2014-08-19 18:18:36 -0700 | [diff] [blame] | 41 | // Discharger is the interface for obtaining discharges for ThirdPartyCaveats. |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 42 | type DischargerClientMethods interface { |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 43 | // Discharge is called by a principal that holds a blessing with a third |
| 44 | // party caveat and seeks to get a discharge that proves the fulfillment of |
| 45 | // this caveat. |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 46 | Discharge(ctx *context.T, Caveat security.Caveat, Impetus security.DischargeImpetus, opts ...rpc.CallOpt) (Discharge security.Discharge, err error) |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 47 | } |
| 48 | |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 49 | // DischargerClientStub adds universal methods to DischargerClientMethods. |
| 50 | type DischargerClientStub interface { |
| 51 | DischargerClientMethods |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 52 | rpc.UniversalServiceMethods |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 53 | } |
| 54 | |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 55 | // DischargerClient returns a client stub for Discharger. |
Asim Shankar | 69fa69f | 2015-04-01 11:34:32 -0700 | [diff] [blame] | 56 | func DischargerClient(name string) DischargerClientStub { |
| 57 | return implDischargerClientStub{name} |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 58 | } |
| 59 | |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 60 | type implDischargerClientStub struct { |
Asim Shankar | 69fa69f | 2015-04-01 11:34:32 -0700 | [diff] [blame] | 61 | name string |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 62 | } |
| 63 | |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 64 | func (c implDischargerClientStub) Discharge(ctx *context.T, i0 security.Caveat, i1 security.DischargeImpetus, opts ...rpc.CallOpt) (o0 security.Discharge, err error) { |
Suharsh Sivakumar | df2672a | 2015-04-09 19:26:43 -0700 | [diff] [blame] | 65 | err = v23.GetClient(ctx).Call(ctx, c.name, "Discharge", []interface{}{i0, i1}, []interface{}{&o0}, opts...) |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 66 | return |
| 67 | } |
| 68 | |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 69 | // DischargerServerMethods is the interface a server writer |
| 70 | // implements for Discharger. |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 71 | // |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 72 | // Discharger is the interface for obtaining discharges for ThirdPartyCaveats. |
| 73 | type DischargerServerMethods interface { |
| 74 | // Discharge is called by a principal that holds a blessing with a third |
| 75 | // party caveat and seeks to get a discharge that proves the fulfillment of |
| 76 | // this caveat. |
Todd Wang | 54feabe | 2015-04-15 23:38:26 -0700 | [diff] [blame] | 77 | Discharge(ctx *context.T, call rpc.ServerCall, Caveat security.Caveat, Impetus security.DischargeImpetus) (Discharge security.Discharge, err error) |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 78 | } |
| 79 | |
| 80 | // DischargerServerStubMethods is the server interface containing |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 81 | // Discharger methods, as expected by rpc.Server. |
Todd Wang | 1fe7cdd | 2014-11-12 12:51:49 -0800 | [diff] [blame] | 82 | // There is no difference between this interface and DischargerServerMethods |
| 83 | // since there are no streaming methods. |
| 84 | type DischargerServerStubMethods DischargerServerMethods |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 85 | |
| 86 | // DischargerServerStub adds universal methods to DischargerServerStubMethods. |
| 87 | type DischargerServerStub interface { |
| 88 | DischargerServerStubMethods |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 89 | // Describe the Discharger interfaces. |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 90 | Describe__() []rpc.InterfaceDesc |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 91 | } |
| 92 | |
| 93 | // DischargerServer returns a server stub for Discharger. |
| 94 | // It converts an implementation of DischargerServerMethods into |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 95 | // an object that may be used by rpc.Server. |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 96 | func DischargerServer(impl DischargerServerMethods) DischargerServerStub { |
| 97 | stub := implDischargerServerStub{ |
| 98 | impl: impl, |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 99 | } |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 100 | // Initialize GlobState; always check the stub itself first, to handle the |
| 101 | // case where the user has the Glob method defined in their VDL source. |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 102 | if gs := rpc.NewGlobState(stub); gs != nil { |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 103 | stub.gs = gs |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 104 | } else if gs := rpc.NewGlobState(impl); gs != nil { |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 105 | stub.gs = gs |
Robin Thellend | 94bc464 | 2014-11-05 18:05:08 -0800 | [diff] [blame] | 106 | } |
Robin Thellend | 94bc464 | 2014-11-05 18:05:08 -0800 | [diff] [blame] | 107 | return stub |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 108 | } |
| 109 | |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 110 | type implDischargerServerStub struct { |
| 111 | impl DischargerServerMethods |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 112 | gs *rpc.GlobState |
Matt Rosencrantz | bf85d54 | 2014-08-22 13:31:14 -0700 | [diff] [blame] | 113 | } |
| 114 | |
Todd Wang | 54feabe | 2015-04-15 23:38:26 -0700 | [diff] [blame] | 115 | func (s implDischargerServerStub) Discharge(ctx *context.T, call rpc.ServerCall, i0 security.Caveat, i1 security.DischargeImpetus) (security.Discharge, error) { |
| 116 | return s.impl.Discharge(ctx, call, i0, i1) |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 117 | } |
| 118 | |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 119 | func (s implDischargerServerStub) Globber() *rpc.GlobState { |
Todd Wang | 702385a | 2014-11-07 01:54:08 -0800 | [diff] [blame] | 120 | return s.gs |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 121 | } |
| 122 | |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 123 | func (s implDischargerServerStub) Describe__() []rpc.InterfaceDesc { |
| 124 | return []rpc.InterfaceDesc{DischargerDesc} |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 125 | } |
| 126 | |
| 127 | // DischargerDesc describes the Discharger interface. |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 128 | var DischargerDesc rpc.InterfaceDesc = descDischarger |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 129 | |
| 130 | // descDischarger hides the desc to keep godoc clean. |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 131 | var descDischarger = rpc.InterfaceDesc{ |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 132 | Name: "Discharger", |
Todd Wang | 5bcf1c1 | 2015-04-03 18:49:40 -0700 | [diff] [blame] | 133 | PkgPath: "v.io/x/ref/services/discharger", |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 134 | Doc: "// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.", |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 135 | Methods: []rpc.MethodDesc{ |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 136 | { |
| 137 | Name: "Discharge", |
Asim Shankar | ef95149 | 2015-02-11 11:41:03 -0800 | [diff] [blame] | 138 | Doc: "// Discharge is called by a principal that holds a blessing with a third\n// party caveat and seeks to get a discharge that proves the fulfillment of\n// this caveat.", |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 139 | InArgs: []rpc.ArgDesc{ |
Asim Shankar | 0471ef0 | 2015-02-09 16:30:17 -0800 | [diff] [blame] | 140 | {"Caveat", ``}, // security.Caveat |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 141 | {"Impetus", ``}, // security.DischargeImpetus |
| 142 | }, |
Matt Rosencrantz | 94502cf | 2015-03-18 09:43:44 -0700 | [diff] [blame] | 143 | OutArgs: []rpc.ArgDesc{ |
Asim Shankar | 0864282 | 2015-03-02 21:21:09 -0800 | [diff] [blame] | 144 | {"Discharge", ``}, // security.Discharge |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 145 | }, |
Todd Wang | 5739dda | 2014-11-16 22:44:02 -0800 | [diff] [blame] | 146 | }, |
| 147 | }, |
Andres Erbsen | 975c883 | 2014-06-18 12:06:07 -0700 | [diff] [blame] | 148 | } |