Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(703)

Unified Diff: services/vanadium/security/principal_service.go

Issue 1261403003: Initial skeletal implementation of the PrincipalService. Also, use the Login()/GetUserBlessing() (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Add a new example for user authorization Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/vanadium/security/principal_service.go
diff --git a/services/vanadium/security/principal_service.go b/services/vanadium/security/principal_service.go
new file mode 100644
index 0000000000000000000000000000000000000000..b2012a4bb12c84b7b9d55d247e8243cf858dfc45
--- /dev/null
+++ b/services/vanadium/security/principal_service.go
@@ -0,0 +1,85 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package main
+
+import (
+ "log"
+
+ "golang.org/x/mobile/app"
+
+ "mojo/public/go/application"
+ "mojo/public/go/bindings"
+ "mojo/public/go/system"
+ "mojo/services/vanadium/security/public/interfaces/principal"
+)
+
+//#include "mojo/public/c/system/types.h"
+import "C"
+
+type PrincipalServiceImpl struct {
+ defaultBlessing *principal.Blessing
+}
+
+func (p *PrincipalServiceImpl) Login() (b *principal.Blessing, err error) {
+ return p.defaultBlessing, nil
+}
+
+func (p *PrincipalServiceImpl) Logout() (err error) {
+ return nil
+}
+
+func (p *PrincipalServiceImpl) Sign(msg []byte) (s *principal.Signature, err error) {
+ return nil, nil
+}
+
+func (p *PrincipalServiceImpl) GetUserBlessing(app principal.AppInstanceName) (b *principal.Blessing, err error) {
+ return p.defaultBlessing, nil
+}
+
+type PrincipalServiceDelegate struct {
+ psImpl *PrincipalServiceImpl
+ stubs []*bindings.Stub
+}
+
+func (d *PrincipalServiceDelegate) Initialize(context application.Context) {
+ defaultCertChain := []principal.Certificate{principal.Certificate{Extension:"default"}}
+ d.psImpl = &PrincipalServiceImpl{&principal.Blessing{defaultCertChain}}
+}
+
+func (d *PrincipalServiceDelegate) Create(r principal.PrincipalService_Request) {
+ stub := principal.NewPrincipalServiceStub(r, d.psImpl, bindings.GetAsyncWaiter())
+ d.stubs = append(d.stubs, stub)
+ go func() {
+ for {
+ if err := stub.ServeRequest(); err != nil {
+ connectionError, ok := err.(*bindings.ConnectionError)
+ if !ok || !connectionError.Closed() {
+ log.Println(err)
+ }
+ break
+ }
+ }
+ }()
+}
+
+func (d *PrincipalServiceDelegate) AcceptConnection(connection *application.Connection) {
+ connection.ProvideServices(&principal.PrincipalService_ServiceFactory{d})
+}
+
+func (d *PrincipalServiceDelegate) Quit() {
+ for _, stub := range d.stubs {
+ stub.Close()
+ }
+}
+
+//export MojoMain
+func MojoMain(handle C.MojoHandle) C.MojoResult {
+ application.Run(&PrincipalServiceDelegate{}, system.MojoHandle(handle))
+ return C.MOJO_RESULT_OK
+}
+
+func main() {
+ app.Run(app.Callbacks{})
+}

Powered by Google App Engine
This is Rietveld 408576698