WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 124673
Use std::function callbacks in CryptoAlgorithm instead of JS promises
https://bugs.webkit.org/show_bug.cgi?id=124673
Summary
Use std::function callbacks in CryptoAlgorithm instead of JS promises
Alexey Proskuryakov
Reported
2013-11-20 12:02:46 PST
To implement key wrapping/unwrapping, we'll need to chain existing operations. It's much easier to do with C++ callbacks than with functions fulfilling JS promises directly. Also, this will decouple CryptoAlgorithm from JS, which is nice.
Attachments
proposed patch
(56.19 KB, patch)
2013-11-20 12:19 PST
,
Alexey Proskuryakov
andersca
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Alexey Proskuryakov
Comment 1
2013-11-20 12:19:16 PST
Created
attachment 217463
[details]
proposed patch
WebKit Commit Bot
Comment 2
2013-11-20 12:20:47 PST
Attachment 217463
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCore/bindings/js/JSDOMPromise.cpp', u'Source/WebCore/bindings/js/JSDOMPromise.h', u'Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp', u'Source/WebCore/crypto/CryptoAlgorithm.cpp', u'Source/WebCore/crypto/CryptoAlgorithm.h', u'Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.h', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp', u'Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.h', u'Source/WebCore/crypto/keys/CryptoKeyRSA.h', u'Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp', u'Source/WebCore/crypto/mac/CryptoAlgorithmHMACMac.cpp', u'Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp']" exit_code: 1 Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:45: The parameter name "data" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:58: CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:71: CryptoAlgorithmAES_CBC::importKey is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:58: CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:62: Place brace on its own line for function definitions. [whitespace/braces] [4] Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:69: CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h:45: The parameter name "data" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:91: CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:130: CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:38: transformAES_CBC is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:85: CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:98: CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Source/WebCore/crypto/CryptoAlgorithm.h:65: The parameter name "data" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 13 in 27 files If any of these errors are false positives, please file a bug against check-webkit-style.
Anders Carlsson
Comment 3
2013-11-20 12:23:16 PST
Comment on
attachment 217463
[details]
proposed patch View in context:
https://bugs.webkit.org/attachment.cgi?id=217463&action=review
> Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:68 > + callback(result.get(), 0);
nullptr?
> Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:63 > + callback(0, &pair);
nullptr?
> Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:222 > + KeyPairCallback* localCallback = new KeyPairCallback(callback);
Can std::move callback here to avoid a copy.
> Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:223 > + VoidCallback* localFailureCallback = new VoidCallback(failureCallback);
Ditto for failureCallback.
Alexey Proskuryakov
Comment 4
2013-11-20 13:16:16 PST
Committed <
http://trac.webkit.org/r159578
>.
Darin Adler
Comment 5
2013-11-20 15:20:42 PST
Comment on
attachment 217463
[details]
proposed patch View in context:
https://bugs.webkit.org/attachment.cgi?id=217463&action=review
> Source/WebCore/bindings/js/JSDOMPromise.h:44 > + PromiseWrapper(const PromiseWrapper&); > + PromiseWrapper& operator=(const PromiseWrapper&);
Why don’t we just let the compiler generate these? The hand-written functions look the same as what the compiler would generate if we didn’t say anything.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug