Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/chromeos/attestation/platform_verification_impl.h" | |
| 6 #include "content/public/browser/browser_thread.h" | |
| 7 #include "content/public/browser/web_contents.h" | |
| 8 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_impl.h" | |
| 9 | |
| 10 namespace chromeos { | |
| 11 namespace attestation { | |
| 12 | |
| 13 // static | |
| 14 void PlatformVerificationImpl::Create( | |
| 15 content::RenderFrameHost* render_frame_host, | |
| 16 mojo::InterfaceRequest<media::interfaces::PlatformVerification> request) { | |
| 17 DVLOG(2) << __FUNCTION__; | |
| 18 DCHECK(render_frame_host); | |
| 19 | |
| 20 mojo::BindToRequest(new PlatformVerificationImpl(render_frame_host), | |
| 21 &request); | |
| 22 } | |
| 23 | |
| 24 PlatformVerificationImpl::PlatformVerificationImpl( | |
| 25 content::RenderFrameHost* render_frame_host) | |
| 26 : render_frame_host_(render_frame_host), weak_factory_(this) { | |
| 27 DCHECK(render_frame_host); | |
| 28 } | |
| 29 | |
| 30 PlatformVerificationImpl::~PlatformVerificationImpl() { | |
| 31 } | |
| 32 | |
| 33 void PlatformVerificationImpl::ChallengePlatform( | |
| 34 const mojo::String& service_id, | |
| 35 const mojo::String& challenge, | |
| 36 const ChallengePlatformCallback& callback) { | |
| 37 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | |
| 38 | |
| 39 if (!platform_verification_flow_.get()) | |
| 40 platform_verification_flow_ = new PlatformVerificationFlow(); | |
| 41 | |
| 42 platform_verification_flow_->ChallengePlatformKey( | |
| 43 content::WebContents::FromRenderFrameHost(render_frame_host_), service_id, | |
|
Darren Krahn
2015/05/06 19:02:40
Side note: PlatformVerification takes a WebContent
xhwang
2015/05/07 00:27:36
This is fine for now. Agreed we can probably simpl
| |
| 44 challenge, base::Bind(&PlatformVerificationImpl::OnPlatformChallenged, | |
| 45 weak_factory_.GetWeakPtr(), callback)); | |
| 46 } | |
| 47 | |
| 48 void PlatformVerificationImpl::OnPlatformChallenged( | |
| 49 const ChallengePlatformCallback& callback, | |
| 50 Result result, | |
| 51 const std::string& signed_data, | |
| 52 const std::string& signature, | |
| 53 const std::string& platform_key_certificate) { | |
| 54 if (result != PlatformVerificationFlow::SUCCESS) { | |
| 55 DCHECK(signed_data.empty()); | |
| 56 DCHECK(signature.empty()); | |
| 57 DCHECK(platform_key_certificate.empty()); | |
| 58 LOG(ERROR) << "Platform verification failed."; | |
|
Darren Krahn
2015/05/06 19:02:40
We don't need to bubble the failure status up to t
xhwang
2015/05/07 00:27:37
Done.
| |
| 59 } | |
| 60 | |
| 61 callback.Run(signed_data, signature, platform_key_certificate); | |
| 62 } | |
| 63 | |
| 64 } // namespace attestation | |
| 65 } // namespace chromeos | |
| OLD | NEW |