Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / child / webcrypto / shared_crypto.h
index 50ce592..d2eaa91 100644 (file)
@@ -5,10 +5,12 @@
 #ifndef CONTENT_CHILD_WEBCRYPTO_SHARED_CRYPTO_H_
 #define CONTENT_CHILD_WEBCRYPTO_SHARED_CRYPTO_H_
 
+#include <vector>
+
 #include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
 #include "content/common/content_export.h"
-#include "third_party/WebKit/public/platform/WebArrayBuffer.h"
 #include "third_party/WebKit/public/platform/WebCrypto.h"
 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
 
@@ -36,7 +38,9 @@ CONTENT_EXPORT void Init();
 //                |
 //                v
 //          WebCryptoImpl     (Implements the blink::WebCrypto interface for
-//                |            asynchronous completions)
+//                |            asynchronous completions; posts tasks to
+//                |            the webcrypto worker pool to fulfill the request
+//                             using the synchronous methods of shared_crypto.h)
 //                |
 //                |      [shared_crypto_unittest.cc]
 //                |           /
@@ -66,7 +70,7 @@ CONTENT_EXPORT void Init();
 //  * Inferring default parameters when not specified
 //  * Validating key exportability
 //  * Validating algorithm with key.algorithm
-//  * Converting the blink key to a more specific platform::{PublicKey,
+//  * Converting the Blink key to a more specific platform::{PublicKey,
 //    PrivateKey, SymKey} and making sure it was the right type.
 //  * Validating alogorithm specific parameters (for instance, was the iv for
 //    AES-CBC 16 bytes).
@@ -75,16 +79,19 @@ CONTENT_EXPORT void Init();
 CONTENT_EXPORT Status Encrypt(const blink::WebCryptoAlgorithm& algorithm,
                               const blink::WebCryptoKey& key,
                               const CryptoData& data,
-                              blink::WebArrayBuffer* buffer);
+                              std::vector<uint8>* buffer);
 
 CONTENT_EXPORT Status Decrypt(const blink::WebCryptoAlgorithm& algorithm,
                               const blink::WebCryptoKey& key,
                               const CryptoData& data,
-                              blink::WebArrayBuffer* buffer);
+                              std::vector<uint8>* buffer);
 
 CONTENT_EXPORT Status Digest(const blink::WebCryptoAlgorithm& algorithm,
                              const CryptoData& data,
-                             blink::WebArrayBuffer* buffer);
+                             std::vector<uint8>* buffer);
+
+CONTENT_EXPORT scoped_ptr<blink::WebCryptoDigestor> CreateDigestor(
+    blink::WebCryptoAlgorithmId algorithm);
 
 CONTENT_EXPORT Status
     GenerateSecretKey(const blink::WebCryptoAlgorithm& algorithm,
@@ -108,12 +115,12 @@ CONTENT_EXPORT Status ImportKey(blink::WebCryptoKeyFormat format,
 
 CONTENT_EXPORT Status ExportKey(blink::WebCryptoKeyFormat format,
                                 const blink::WebCryptoKey& key,
-                                blink::WebArrayBuffer* buffer);
+                                std::vector<uint8>* buffer);
 
 CONTENT_EXPORT Status Sign(const blink::WebCryptoAlgorithm& algorithm,
                            const blink::WebCryptoKey& key,
                            const CryptoData& data,
-                           blink::WebArrayBuffer* buffer);
+                           std::vector<uint8>* buffer);
 
 CONTENT_EXPORT Status
     VerifySignature(const blink::WebCryptoAlgorithm& algorithm,
@@ -127,7 +134,7 @@ CONTENT_EXPORT Status
             const blink::WebCryptoKey& wrapping_key,
             const blink::WebCryptoKey& key_to_wrap,
             const blink::WebCryptoAlgorithm& wrapping_algorithm,
-            blink::WebArrayBuffer* buffer);
+            std::vector<uint8>* buffer);
 
 CONTENT_EXPORT Status
     UnwrapKey(blink::WebCryptoKeyFormat format,
@@ -139,17 +146,18 @@ CONTENT_EXPORT Status
               blink::WebCryptoKeyUsageMask usage_mask,
               blink::WebCryptoKey* key);
 
-CONTENT_EXPORT Status
-    SerializeKeyForClone(const blink::WebCryptoKey& key,
-                         blink::WebVector<unsigned char>* data);
-
-CONTENT_EXPORT Status
-    DeserializeKeyForClone(const blink::WebCryptoKeyAlgorithm& algorithm,
-                           blink::WebCryptoKeyType type,
-                           bool extractable,
-                           blink::WebCryptoKeyUsageMask usage_mask,
-                           const CryptoData& key_data,
-                           blink::WebCryptoKey* key);
+// Called on the target Blink thread.
+CONTENT_EXPORT bool SerializeKeyForClone(const blink::WebCryptoKey& key,
+                                         blink::WebVector<uint8>* key_data);
+
+// Called on the target Blink thread.
+CONTENT_EXPORT bool DeserializeKeyForClone(
+    const blink::WebCryptoKeyAlgorithm& algorithm,
+    blink::WebCryptoKeyType type,
+    bool extractable,
+    blink::WebCryptoKeyUsageMask usage_mask,
+    const CryptoData& key_data,
+    blink::WebCryptoKey* key);
 
 }  // namespace webcrypto