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

Unified Diff: content/renderer/webcrypto_impl.cc

Issue 23569007: WebCrypto: Implement importKey() and sign() for HMAC in NSS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-submit with fixed external dependencies. Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/webcrypto_impl.cc
diff --git a/content/renderer/webcrypto_impl.cc b/content/renderer/webcrypto_impl.cc
index 2905f3b111fa128237cba858750c13bab41f5589..b0fc14f5f8731d40220a3a0ae1b98fd5e95e000e 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, data, data_size, &buffer)) {
+ result.completeWithError();
+ } else {
+ result.completeWithBuffer(buffer);
+ }
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698