Index: services/vanadium/security/principal_service.cc |
diff --git a/services/vanadium/security/principal_service.cc b/services/vanadium/security/principal_service.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..815a8780381fa26f20ed23bafabaa9f8c3be9e84 |
--- /dev/null |
+++ b/services/vanadium/security/principal_service.cc |
@@ -0,0 +1,75 @@ |
+// 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. |
+ |
+#include <cstdlib> |
jamesr
2015/08/17 21:38:22
we generally use the <blahblah.h> headers instead
gautham
2015/08/18 01:54:22
Removed file.
|
+ |
+#include "mojo/common/binding_set.h" |
+#include "mojo/public/c/system/main.h" |
+#include "mojo/public/cpp/application/application_connection.h" |
+#include "mojo/public/cpp/application/application_delegate.h" |
+#include "mojo/public/cpp/application/application_runner.h" |
+#include "mojo/public/cpp/application/interface_factory.h" |
+#include "mojo/services/vanadium/security/public/interfaces/principal.mojom.h" |
+ |
+namespace mojo { |
jamesr
2015/08/17 21:38:22
no "mojo". namespace should match directory struct
gautham
2015/08/18 01:54:22
Removed file.
|
+namespace services { |
+namespace vanadium { |
+namespace security { |
+ |
+// This is a native Mojo application which implements |PrincipalService| |
+// interface for Linux. |
jamesr
2015/08/17 21:38:22
what about this is Linux-specific?
gautham
2015/08/18 01:54:22
Removed file.
|
+class PrincipalServiceImpl : public ApplicationDelegate, |
+ public PrincipalService, |
+ public InterfaceFactory<PrincipalService> { |
+ public: |
+ PrincipalServiceImpl() { |
+ CertificatePtr cert(Certificate::New()); |
+ cert->extension = "default"; |
+ default_blessing_.chain.push_back(cert.Pass()); |
+ } |
+ |
+ void Login(const LoginCallback& callback) override { |
+ callback.Run(default_blessing_.Clone()); |
+ } |
+ |
+ void Logout() override { |
+ } |
+ |
+ void Sign(mojo::Array<uint8_t> message, |
+ const SignCallback& callback) override { |
+ } |
+ |
+ void GetUserBlessing(AppInstanceNamePtr app, |
+ const GetUserBlessingCallback& callback) override { |
+ callback.Run(default_blessing_.Clone()); |
+ } |
+ |
+ // |ApplicationDelegate| override. |
+ bool ConfigureIncomingConnection( |
+ mojo::ApplicationConnection* connection) override { |
+ connection->AddService<mojo::PrincipalService>(this); |
jamesr
2015/08/17 21:38:22
you don't need to spell out the template parameter
gautham
2015/08/18 01:54:22
Removed file.
|
+ return true; |
+ } |
+ |
+ // |InterfaceFactory<PrincipalService>| implementation. |
+ void Create(mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<mojo::PrincipalService> request) override { |
+ binding_.AddBinding(this, request.Pass()); |
+ } |
+ |
+ private: |
+ mojo::BindingSet<mojo::PrincipalService> binding_; |
jamesr
2015/08/17 21:38:22
this means every connection to the PrincipalServic
gautham
2015/08/18 01:54:22
Removed file.
|
+ mojo::Blessing default_blessing_; |
+}; |
+ |
+} // namespace security |
+} // namespace vanadium |
+} // namespace services |
+} // namespace mojo |
+ |
+MojoResult MojoMain(MojoHandle application_request) { |
+ mojo::ApplicationRunner runner( |
+ new mojo::services::vanadium::security::PrincipalServiceImpl()); |
+ return runner.Run(application_request); |
+} |