Index: content/renderer/webcrypto_impl.cc |
diff --git a/content/renderer/webcrypto_impl.cc b/content/renderer/webcrypto_impl.cc |
index ad37457ece6a474927f71c578d8daa5c864a89d5..e49b1d8d2004af93e6c141641aba5e8e54ee699e 100644 |
--- a/content/renderer/webcrypto_impl.cc |
+++ b/content/renderer/webcrypto_impl.cc |
@@ -4,7 +4,10 @@ |
#include "content/renderer/webcrypto_impl.h" |
+#include "base/memory/scoped_ptr.h" |
#include "third_party/WebKit/public/platform/WebArrayBuffer.h" |
+#include "third_party/WebKit/public/platform/WebCryptoAlgorithm.h" |
+#include "third_party/WebKit/public/platform/WebCryptoKey.h" |
namespace content { |
@@ -14,7 +17,50 @@ void WebCryptoImpl::digest( |
size_t data_size, |
WebKit::WebCryptoResult result) { |
WebKit::WebArrayBuffer buffer; |
- if (!digestInternal(algorithm, data, data_size, &buffer)) { |
+ if (!DigestInternal(algorithm, data, data_size, &buffer)) { |
+ result.completeWithError(); |
+ } else { |
+ result.completeWithBuffer(buffer); |
+ } |
+} |
+ |
+void WebCryptoImpl::importKey( |
+ WebKit::WebCryptoKeyFormat format, |
+ const unsigned char* key_data, |
+ size_t key_data_size, |
+ const WebKit::WebCryptoAlgorithm& algorithm, |
+ bool extractable, |
+ WebKit::WebCryptoKeyUsageMask usage_mask, |
+ WebKit::WebCryptoResult result) { |
+ WebKit::WebCryptoKeyType type; |
+ scoped_ptr<WebKit::WebCryptoKeyHandle> handle; |
+ |
+ if (!ImportKeyInternal(format, |
+ key_data, |
+ key_data_size, |
+ algorithm, |
+ usage_mask, |
+ &handle, |
+ &type)) { |
+ result.completeWithError(); |
+ return; |
+ } |
+ |
+ WebKit::WebCryptoKey key( |
+ WebKit::WebCryptoKey::create( |
+ handle.release(), type, extractable, algorithm, usage_mask)); |
+ |
+ result.completeWithKey(key); |
+} |
+ |
+void WebCryptoImpl::sign( |
+ const WebKit::WebCryptoAlgorithm& algorithm, |
+ const WebKit::WebCryptoKey& key, |
+ const unsigned char* data, |
+ size_t data_size, |
+ WebKit::WebCryptoResult result) { |
+ WebKit::WebArrayBuffer buffer; |
+ if (!SignInternal(algorithm, key.handle(), data, data_size, &buffer)) { |
result.completeWithError(); |
} else { |
result.completeWithBuffer(buffer); |