OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 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/renderer/extensions/enterprise_certificates_natives.h" | |
6 | |
7 #include <string> | |
8 | |
9 #include "third_party/WebKit/public/platform/Platform.h" | |
10 #include "third_party/WebKit/public/platform/WebCrypto.h" | |
11 #include "third_party/WebKit/public/platform/WebCryptoKey.h" | |
12 #include "third_party/WebKit/public/web/WebScriptBindings.h" | |
13 #include "v8/include/v8.h" | |
14 | |
15 namespace extensions { | |
16 | |
17 EnterpriseCertificatesNatives::EnterpriseCertificatesNatives( | |
18 ChromeV8Context* context) | |
19 : ObjectBackedNativeHandler(context) { | |
20 RouteFunction("GetPrivateKey", | |
21 base::Bind(&EnterpriseCertificatesNatives::GetPrivateKey, | |
22 base::Unretained(this))); | |
eroman
2014/04/10 18:45:46
I haven't read through the rest of this, change, b
pneubeck (no reviews)
2014/04/11 14:13:59
This seems to be the way how ObjectBackedNativeHan
| |
23 } | |
24 | |
25 void EnterpriseCertificatesNatives::GetPrivateKey( | |
26 const v8::FunctionCallbackInfo<v8::Value>& call_info) { | |
27 const blink::WebCryptoKey* key = | |
28 blink::WebScriptBindings::toWebCryptoKey(call_info[0].As<v8::Object>()); | |
eroman
2014/04/10 18:45:46
This function doesn't exist, so presumably depends
pneubeck (no reviews)
2014/04/11 14:13:59
Added a link to the blink change to the commit mes
| |
29 if (!key) | |
eroman
2014/04/10 18:45:46
IMPORTANT: You should also check the key type. Sin
pneubeck (no reviews)
2014/04/11 14:13:59
Done.
| |
30 return; | |
31 | |
32 blink::WebVector<unsigned char> keyData; | |
eroman
2014/04/10 18:45:46
style: keyData --> key_data
pneubeck (no reviews)
2014/04/11 14:13:59
Done.
| |
33 blink::Platform::current()->crypto()->serializeKeyForClone(*key, keyData); | |
eroman
2014/04/10 18:45:46
IMPORTANT: serializeKeyForClone() returns a boolea
pneubeck (no reviews)
2014/04/11 14:13:59
Done.
| |
34 | |
35 v8::Handle<v8::Array> result = | |
36 v8::Array::New(call_info.GetIsolate(), keyData.size()); | |
eroman
2014/04/10 18:45:46
IMPORTANT: Please explain this. Why is the key bei
pneubeck (no reviews)
2014/04/11 14:13:59
kalman@ mentioned that the javascript side of the
| |
37 for (size_t i = 0; i < keyData.size(); ++i) { | |
38 result->Set( | |
39 i, v8::Integer::NewFromUnsigned(call_info.GetIsolate(), keyData[i])); | |
40 } | |
41 | |
42 call_info.GetReturnValue().Set(result); | |
43 } | |
44 | |
45 } // namespace extensions | |
OLD | NEW |