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

Side by Side Diff: Source/bindings/v8/custom/V8SubtleCryptoCustom.cpp

Issue 331373002: Split bindings/v8/custom into core and modules. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Patch for landing Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 "config.h"
6 #include "bindings/modules/v8/V8SubtleCrypto.h"
7
8 #include "bindings/modules/v8/V8CryptoKey.h"
9 #include "bindings/v8/Dictionary.h"
10 #include "bindings/v8/custom/V8ArrayBufferCustom.h"
11 #include "bindings/v8/custom/V8ArrayBufferViewCustom.h"
12
13 namespace WebCore {
14
15 ////////////////////////////////////////////////////////////////////////////////
16 // Overload resolution for verify()
17 // FIXME: needs support for union types http://crbug.com/240176
18 ////////////////////////////////////////////////////////////////////////////////
19
20 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBuffer signature, Ar rayBuffer data);
21 void verify1Method(const v8::FunctionCallbackInfo<v8::Value>& info)
22 {
23 SubtleCrypto* impl = V8SubtleCrypto::toNative(info.Holder());
24 TONATIVE_VOID(Dictionary, algorithm, Dictionary(info[0], info.GetIsolate())) ;
25 if (!algorithm.isUndefinedOrNull() && !algorithm.isObject()) {
26 throwTypeError(ExceptionMessages::failedToExecute("verify", "SubtleCrypt o", "parameter 1 ('algorithm') is not an object."), info.GetIsolate());
27 return;
28 }
29 TONATIVE_VOID(CryptoKey*, key, V8CryptoKey::toNativeWithTypeCheck(info.GetIs olate(), info[1]));
30 TONATIVE_VOID(ArrayBuffer*, signature, info[2]->IsArrayBuffer() ? V8ArrayBuf fer::toNative(v8::Handle<v8::ArrayBuffer>::Cast(info[2])) : 0);
31 TONATIVE_VOID(ArrayBuffer*, data, info[3]->IsArrayBuffer() ? V8ArrayBuffer:: toNative(v8::Handle<v8::ArrayBuffer>::Cast(info[3])) : 0);
32 v8SetReturnValue(info, impl->verifySignature(ScriptState::current(info.GetIs olate()), algorithm, key, signature, data).v8Value());
33 }
34
35 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBuffer signature, Ar rayBufferView data);
36 void verify2Method(const v8::FunctionCallbackInfo<v8::Value>& info)
37 {
38 SubtleCrypto* impl = V8SubtleCrypto::toNative(info.Holder());
39 TONATIVE_VOID(Dictionary, algorithm, Dictionary(info[0], info.GetIsolate())) ;
40 if (!algorithm.isUndefinedOrNull() && !algorithm.isObject()) {
41 throwTypeError(ExceptionMessages::failedToExecute("verify", "SubtleCrypt o", "parameter 1 ('algorithm') is not an object."), info.GetIsolate());
42 return;
43 }
44 TONATIVE_VOID(CryptoKey*, key, V8CryptoKey::toNativeWithTypeCheck(info.GetIs olate(), info[1]));
45 TONATIVE_VOID(ArrayBuffer*, signature, info[2]->IsArrayBuffer() ? V8ArrayBuf fer::toNative(v8::Handle<v8::ArrayBuffer>::Cast(info[2])) : 0);
46 TONATIVE_VOID(ArrayBufferView*, data, info[3]->IsArrayBufferView() ? V8Array BufferView::toNative(v8::Handle<v8::ArrayBufferView>::Cast(info[3])) : 0);
47 v8SetReturnValue(info, impl->verifySignature(ScriptState::current(info.GetIs olate()), algorithm, key, signature, data).v8Value());
48 }
49
50 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBufferView signature , ArrayBuffer data);
51 void verify3Method(const v8::FunctionCallbackInfo<v8::Value>& info)
52 {
53 SubtleCrypto* impl = V8SubtleCrypto::toNative(info.Holder());
54 TONATIVE_VOID(Dictionary, algorithm, Dictionary(info[0], info.GetIsolate())) ;
55 if (!algorithm.isUndefinedOrNull() && !algorithm.isObject()) {
56 throwTypeError(ExceptionMessages::failedToExecute("verify", "SubtleCrypt o", "parameter 1 ('algorithm') is not an object."), info.GetIsolate());
57 return;
58 }
59 TONATIVE_VOID(CryptoKey*, key, V8CryptoKey::toNativeWithTypeCheck(info.GetIs olate(), info[1]));
60 TONATIVE_VOID(ArrayBufferView*, signature, info[2]->IsArrayBufferView() ? V8 ArrayBufferView::toNative(v8::Handle<v8::ArrayBufferView>::Cast(info[2])) : 0);
61 TONATIVE_VOID(ArrayBuffer*, data, info[3]->IsArrayBuffer() ? V8ArrayBuffer:: toNative(v8::Handle<v8::ArrayBuffer>::Cast(info[3])) : 0);
62 v8SetReturnValue(info, impl->verifySignature(ScriptState::current(info.GetIs olate()), algorithm, key, signature, data).v8Value());
63 }
64
65 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBufferView signature , ArrayBufferView data);
66 void verify4Method(const v8::FunctionCallbackInfo<v8::Value>& info)
67 {
68 SubtleCrypto* impl = V8SubtleCrypto::toNative(info.Holder());
69 TONATIVE_VOID(Dictionary, algorithm, Dictionary(info[0], info.GetIsolate())) ;
70 if (!algorithm.isUndefinedOrNull() && !algorithm.isObject()) {
71 throwTypeError(ExceptionMessages::failedToExecute("verify", "SubtleCrypt o", "parameter 1 ('algorithm') is not an object."), info.GetIsolate());
72 return;
73 }
74 TONATIVE_VOID(CryptoKey*, key, V8CryptoKey::toNativeWithTypeCheck(info.GetIs olate(), info[1]));
75 TONATIVE_VOID(ArrayBufferView*, signature, info[2]->IsArrayBufferView() ? V8 ArrayBufferView::toNative(v8::Handle<v8::ArrayBufferView>::Cast(info[2])) : 0);
76 TONATIVE_VOID(ArrayBufferView*, data, info[3]->IsArrayBufferView() ? V8Array BufferView::toNative(v8::Handle<v8::ArrayBufferView>::Cast(info[3])) : 0);
77 v8SetReturnValue(info, impl->verifySignature(ScriptState::current(info.GetIs olate()), algorithm, key, signature, data).v8Value());
78 }
79
80 void V8SubtleCrypto::verifyMethodCustom(const v8::FunctionCallbackInfo<v8::Value >& info)
81 {
82 v8::Isolate* isolate = info.GetIsolate();
83 ExceptionState exceptionState(ExceptionState::ExecutionContext, "verify", "S ubtleCrypto", info.Holder(), isolate);
84 // typedef (ArrayBuffer or ArrayBufferView) CryptoOperationData;
85 //
86 // Promise verify(Dictionary algorithm, CryptoKey key,
87 // CryptoOperationData signature,
88 // CryptoOperationData data);
89 switch (info.Length()) {
90 case 4:
91 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBuffer signa ture, ArrayBuffer data);
92 if (V8ArrayBuffer::hasInstance(info[2], isolate)
93 && V8ArrayBuffer::hasInstance(info[3], isolate)) {
94 verify1Method(info);
95 return;
96 }
97 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBuffer signa ture, ArrayBufferView data);
98 if (V8ArrayBuffer::hasInstance(info[2], isolate)
99 && V8ArrayBufferView::hasInstance(info[3], isolate)) {
100 verify2Method(info);
101 return;
102 }
103 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBufferView s ignature, ArrayBuffer data);
104 if (V8ArrayBufferView::hasInstance(info[2], isolate)
105 && V8ArrayBuffer::hasInstance(info[3], isolate)) {
106 verify3Method(info);
107 return;
108 }
109 // Promise verify(Dictionary algorithm, CryptoKey key, ArrayBufferView s ignature, ArrayBufferView data);
110 if (V8ArrayBufferView::hasInstance(info[2], isolate)
111 && V8ArrayBufferView::hasInstance(info[3], isolate)) {
112 verify4Method(info);
113 return;
114 }
115 break;
116 default:
117 throwArityTypeError(exceptionState, "[4]", info.Length());
118 return;
119 break;
120 }
121 exceptionState.throwTypeError("No function was found that matched the signat ure provided.");
122 exceptionState.throwIfNeeded();
123 }
124
125 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/bindings/v8/custom/V8StyleSheetCustom.cpp ('k') | Source/bindings/v8/custom/V8TextCustom.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698