Index: content/renderer/webcrypto_impl.cc |
diff --git a/content/renderer/webcrypto_impl.cc b/content/renderer/webcrypto_impl.cc |
index 73c832927f19c505cec73bc2dc768b45feed67ae..313bfb296c71f276e5d64f3606f55274ee8f1b2d 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 { |
@@ -25,4 +28,47 @@ void WebCryptoImpl::digest( |
} |
} |
+void WebCryptoImpl::importKey( |
+ WebKit::WebCryptoKeyFormat format, |
+ const unsigned char* key_data, |
+ unsigned 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, |
+ unsigned data_size, |
+ WebKit::WebCryptoResult result) { |
+ WebKit::WebArrayBuffer buffer; |
+ if (!SignInternal(algorithm, key.handle(), data, data_size, &buffer)) { |
+ result.completeWithError(); |
+ } else { |
+ result.completeWithBuffer(buffer); |
+ } |
+} |
+ |
} // namespace content |