Merge "veyron2/security: Make ThirdPartyRequirements a VDL type."
diff --git a/runtimes/google/ipc/discharges.go b/runtimes/google/ipc/discharges.go
index eac483e..469af65 100644
--- a/runtimes/google/ipc/discharges.go
+++ b/runtimes/google/ipc/discharges.go
@@ -162,7 +162,11 @@
func impetus(r security.ThirdPartyRequirements, server security.PublicID, method string, args []interface{}) (impetus security.DischargeImpetus) {
if r.ReportServer {
- impetus.Server = server
+ names := server.Names()
+ impetus.Server = make([]security.BlessingPattern, len(names))
+ for i, n := range names {
+ impetus.Server[i] = security.BlessingPattern(n)
+ }
}
if r.ReportMethod {
impetus.Method = method
diff --git a/runtimes/google/ipc/full_test.go b/runtimes/google/ipc/full_test.go
index 05e94ea..8440189 100644
--- a/runtimes/google/ipc/full_test.go
+++ b/runtimes/google/ipc/full_test.go
@@ -592,6 +592,14 @@
return nil, fmt.Errorf("discharges not issued")
}
+func names2patterns(names []string) []security.BlessingPattern {
+ ret := make([]security.BlessingPattern, len(names))
+ for idx, n := range names {
+ ret[idx] = security.BlessingPattern(n)
+ }
+ return ret
+}
+
func TestDischargeImpetus(t *testing.T) {
var (
// The Discharge service can be run by anyone, but in these tests it is the same as the server.
@@ -632,7 +640,7 @@
},
{ // Require everything
Requirements: security.ThirdPartyRequirements{ReportServer: true, ReportMethod: true, ReportArguments: true},
- Impetus: security.DischargeImpetus{Server: vdlutil.Any(serverID.PublicID()), Method: "Method", Arguments: []vdlutil.Any{vdlutil.Any("argument")}},
+ Impetus: security.DischargeImpetus{Server: names2patterns(serverID.PublicID().Names()), Method: "Method", Arguments: []vdlutil.Any{vdlutil.Any("argument")}},
},
{ // Require only the method name
Requirements: security.ThirdPartyRequirements{ReportMethod: true},