blob: ce2745f558d8f059afefeea4304cd88ed0426da3 [file] [log] [blame]
Jiri Simsa67b8a262015-03-24 21:14:07 -07001// 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 Sivakumara4ac50a2015-03-13 16:13:50 -07005// This file was auto-generated by the vanadium vdl tool.
Andres Erbsen975c8832014-06-18 12:06:07 -07006// Source: discharger.vdl
7
Todd Wang8c4e5cc2015-04-09 11:30:52 -07008// Package discharger defines an interface for obtaining discharges for
9// third-party caveats.
Todd Wang5bcf1c12015-04-03 18:49:40 -070010package discharger
Andres Erbsen975c8832014-06-18 12:06:07 -070011
12import (
Todd Wangb0d5dce2015-02-05 14:07:55 -080013 // VDL system imports
Jiri Simsa6ac95222015-02-23 16:11:49 -080014 "v.io/v23"
15 "v.io/v23/context"
Robin Thellend83cd6122015-03-30 10:09:13 -070016 "v.io/v23/i18n"
Matt Rosencrantz94502cf2015-03-18 09:43:44 -070017 "v.io/v23/rpc"
Robin Thellend83cd6122015-03-30 10:09:13 -070018 "v.io/v23/verror"
Andres Erbsen975c8832014-06-18 12:06:07 -070019
Todd Wangb0d5dce2015-02-05 14:07:55 -080020 // VDL user imports
Jiri Simsa6ac95222015-02-23 16:11:49 -080021 "v.io/v23/security"
Andres Erbsen975c8832014-06-18 12:06:07 -070022)
23
Robin Thellend83cd6122015-03-30 10:09:13 -070024var (
25 // Indicates that the Caveat does not require a discharge
Todd Wang5bcf1c12015-04-03 18:49:40 -070026 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 Thellend83cd6122015-03-30 10:09:13 -070027)
28
29func 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.
34func NewErrNotAThirdPartyCaveat(ctx *context.T, c security.Caveat) error {
35 return verror.New(ErrNotAThirdPartyCaveat, ctx, c)
36}
37
Todd Wang702385a2014-11-07 01:54:08 -080038// DischargerClientMethods is the client interface
39// containing Discharger methods.
40//
Asim Shankara94e5072014-08-19 18:18:36 -070041// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.
Todd Wang702385a2014-11-07 01:54:08 -080042type DischargerClientMethods interface {
Andres Erbsen975c8832014-06-18 12:06:07 -070043 // 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 Rosencrantz94502cf2015-03-18 09:43:44 -070046 Discharge(ctx *context.T, Caveat security.Caveat, Impetus security.DischargeImpetus, opts ...rpc.CallOpt) (Discharge security.Discharge, err error)
Andres Erbsen975c8832014-06-18 12:06:07 -070047}
48
Todd Wang702385a2014-11-07 01:54:08 -080049// DischargerClientStub adds universal methods to DischargerClientMethods.
50type DischargerClientStub interface {
51 DischargerClientMethods
Matt Rosencrantz94502cf2015-03-18 09:43:44 -070052 rpc.UniversalServiceMethods
Andres Erbsen975c8832014-06-18 12:06:07 -070053}
54
Todd Wang702385a2014-11-07 01:54:08 -080055// DischargerClient returns a client stub for Discharger.
Asim Shankar69fa69f2015-04-01 11:34:32 -070056func DischargerClient(name string) DischargerClientStub {
57 return implDischargerClientStub{name}
Andres Erbsen975c8832014-06-18 12:06:07 -070058}
59
Todd Wang702385a2014-11-07 01:54:08 -080060type implDischargerClientStub struct {
Asim Shankar69fa69f2015-04-01 11:34:32 -070061 name string
Todd Wang702385a2014-11-07 01:54:08 -080062}
63
Matt Rosencrantz94502cf2015-03-18 09:43:44 -070064func (c implDischargerClientStub) Discharge(ctx *context.T, i0 security.Caveat, i1 security.DischargeImpetus, opts ...rpc.CallOpt) (o0 security.Discharge, err error) {
Suharsh Sivakumardf2672a2015-04-09 19:26:43 -070065 err = v23.GetClient(ctx).Call(ctx, c.name, "Discharge", []interface{}{i0, i1}, []interface{}{&o0}, opts...)
Todd Wang702385a2014-11-07 01:54:08 -080066 return
67}
68
Todd Wang702385a2014-11-07 01:54:08 -080069// DischargerServerMethods is the interface a server writer
70// implements for Discharger.
Andres Erbsen975c8832014-06-18 12:06:07 -070071//
Todd Wang702385a2014-11-07 01:54:08 -080072// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.
73type 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 Wang54feabe2015-04-15 23:38:26 -070077 Discharge(ctx *context.T, call rpc.ServerCall, Caveat security.Caveat, Impetus security.DischargeImpetus) (Discharge security.Discharge, err error)
Todd Wang702385a2014-11-07 01:54:08 -080078}
79
80// DischargerServerStubMethods is the server interface containing
Matt Rosencrantz94502cf2015-03-18 09:43:44 -070081// Discharger methods, as expected by rpc.Server.
Todd Wang1fe7cdd2014-11-12 12:51:49 -080082// There is no difference between this interface and DischargerServerMethods
83// since there are no streaming methods.
84type DischargerServerStubMethods DischargerServerMethods
Todd Wang702385a2014-11-07 01:54:08 -080085
86// DischargerServerStub adds universal methods to DischargerServerStubMethods.
87type DischargerServerStub interface {
88 DischargerServerStubMethods
Todd Wang5739dda2014-11-16 22:44:02 -080089 // Describe the Discharger interfaces.
Matt Rosencrantz94502cf2015-03-18 09:43:44 -070090 Describe__() []rpc.InterfaceDesc
Todd Wang702385a2014-11-07 01:54:08 -080091}
92
93// DischargerServer returns a server stub for Discharger.
94// It converts an implementation of DischargerServerMethods into
Matt Rosencrantz94502cf2015-03-18 09:43:44 -070095// an object that may be used by rpc.Server.
Todd Wang702385a2014-11-07 01:54:08 -080096func DischargerServer(impl DischargerServerMethods) DischargerServerStub {
97 stub := implDischargerServerStub{
98 impl: impl,
Andres Erbsen975c8832014-06-18 12:06:07 -070099 }
Todd Wang702385a2014-11-07 01:54:08 -0800100 // 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 Rosencrantz94502cf2015-03-18 09:43:44 -0700102 if gs := rpc.NewGlobState(stub); gs != nil {
Todd Wang702385a2014-11-07 01:54:08 -0800103 stub.gs = gs
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700104 } else if gs := rpc.NewGlobState(impl); gs != nil {
Todd Wang702385a2014-11-07 01:54:08 -0800105 stub.gs = gs
Robin Thellend94bc4642014-11-05 18:05:08 -0800106 }
Robin Thellend94bc4642014-11-05 18:05:08 -0800107 return stub
Andres Erbsen975c8832014-06-18 12:06:07 -0700108}
109
Todd Wang702385a2014-11-07 01:54:08 -0800110type implDischargerServerStub struct {
111 impl DischargerServerMethods
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700112 gs *rpc.GlobState
Matt Rosencrantzbf85d542014-08-22 13:31:14 -0700113}
114
Todd Wang54feabe2015-04-15 23:38:26 -0700115func (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 Erbsen975c8832014-06-18 12:06:07 -0700117}
118
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700119func (s implDischargerServerStub) Globber() *rpc.GlobState {
Todd Wang702385a2014-11-07 01:54:08 -0800120 return s.gs
Andres Erbsen975c8832014-06-18 12:06:07 -0700121}
122
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700123func (s implDischargerServerStub) Describe__() []rpc.InterfaceDesc {
124 return []rpc.InterfaceDesc{DischargerDesc}
Todd Wang5739dda2014-11-16 22:44:02 -0800125}
126
127// DischargerDesc describes the Discharger interface.
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700128var DischargerDesc rpc.InterfaceDesc = descDischarger
Todd Wang5739dda2014-11-16 22:44:02 -0800129
130// descDischarger hides the desc to keep godoc clean.
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700131var descDischarger = rpc.InterfaceDesc{
Todd Wang5739dda2014-11-16 22:44:02 -0800132 Name: "Discharger",
Todd Wang5bcf1c12015-04-03 18:49:40 -0700133 PkgPath: "v.io/x/ref/services/discharger",
Todd Wang5739dda2014-11-16 22:44:02 -0800134 Doc: "// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.",
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700135 Methods: []rpc.MethodDesc{
Todd Wang5739dda2014-11-16 22:44:02 -0800136 {
137 Name: "Discharge",
Asim Shankaref951492015-02-11 11:41:03 -0800138 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 Rosencrantz94502cf2015-03-18 09:43:44 -0700139 InArgs: []rpc.ArgDesc{
Asim Shankar0471ef02015-02-09 16:30:17 -0800140 {"Caveat", ``}, // security.Caveat
Todd Wang5739dda2014-11-16 22:44:02 -0800141 {"Impetus", ``}, // security.DischargeImpetus
142 },
Matt Rosencrantz94502cf2015-03-18 09:43:44 -0700143 OutArgs: []rpc.ArgDesc{
Asim Shankar08642822015-03-02 21:21:09 -0800144 {"Discharge", ``}, // security.Discharge
Todd Wang5739dda2014-11-16 22:44:02 -0800145 },
Todd Wang5739dda2014-11-16 22:44:02 -0800146 },
147 },
Andres Erbsen975c8832014-06-18 12:06:07 -0700148}