Index: public/platform/WebCryptoAlgorithm.h |
diff --git a/public/platform/WebCryptoAlgorithm.h b/public/platform/WebCryptoAlgorithm.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..431e8e202137b1e893a70488b36ce6cc4f5c2c8b |
--- /dev/null |
+++ b/public/platform/WebCryptoAlgorithm.h |
@@ -0,0 +1,104 @@ |
+/* |
+ * Copyright (C) 2013 Google Inc. All rights reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions are |
+ * met: |
+ * |
+ * * Redistributions of source code must retain the above copyright |
+ * notice, this list of conditions and the following disclaimer. |
+ * * Redistributions in binary form must reproduce the above |
+ * copyright notice, this list of conditions and the following disclaimer |
+ * in the documentation and/or other materials provided with the |
+ * distribution. |
+ * * Neither the name of Google Inc. nor the names of its |
+ * contributors may be used to endorse or promote products derived from |
+ * this software without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ */ |
+ |
+#ifndef WebCryptoAlgorithm_h |
+#define WebCryptoAlgorithm_h |
+ |
+#include "WebCommon.h" |
+#include "WebPrivatePtr.h" |
+ |
+#if WEBKIT_IMPLEMENTATION |
+#include "wtf/PassOwnPtr.h" |
+#endif |
+ |
+namespace WebKit { |
+ |
+// The possible algorithm names. |
abarth-chromium
2013/07/02 06:46:36
These aren't algorithm names. They're algorithm I
eroman
2013/07/02 08:12:27
Done.
|
+enum WebCryptoAlgorithmId { |
eroman
2013/07/02 06:06:53
Note: I only included a few algorithms and paramet
|
+ AesCbc, |
abarth-chromium
2013/07/02 06:46:36
The pattern we use for these API enums is to repea
|
+ Sha1, |
+ Sha224, |
+ Sha256, |
+ Sha384, |
+ Sha512, |
+#if WEBKIT_IMPLEMENTATION |
+ NumAlgorithmId, |
+#endif |
+}; |
+ |
+// The possible algorithm-specific parameters. |
abarth-chromium
2013/07/02 06:46:36
Please omit this redundant comment.
eroman
2013/07/02 08:12:27
Done.
|
+enum WebCryptoAlgorithmParamsType { |
+ NoParams, |
+ AesCbcParams, |
+ AesKeyGenParams, |
+}; |
+ |
+// Forward declaration for the algorithm parameters types. |
abarth-chromium
2013/07/02 06:46:36
Please omit this comment that just says what the c
eroman
2013/07/02 08:12:27
Done.
|
+class WebCryptoAesCbcParams; |
+class WebCryptoAesKeyGenParams; |
+ |
+class WebCryptoAlgorithmParams; |
+class WebCryptoAlgorithmPrivate; |
+ |
+// The WebCryptoAlgorithm represents a normalized algorithm and its parameters. |
+// * Immutable |
+// * Threadsafe |
+// * Copiable (cheaply) |
abarth-chromium
2013/07/02 06:46:36
By contrast, this is a very helpful comment!
|
+class WebCryptoAlgorithm { |
+public: |
+#if WEBKIT_IMPLEMENTATION |
+ WebCryptoAlgorithm() { } |
+ WebCryptoAlgorithm(WebCryptoAlgorithmId, const char*, PassOwnPtr<WebCryptoAlgorithmParams>); |
+#endif |
+ |
+ WEBKIT_EXPORT ~WebCryptoAlgorithm(); |
abarth-chromium
2013/07/02 06:46:36
We generally don't export destructors. Instead, w
eroman
2013/07/02 08:12:27
Done.
|
+ |
+ WEBKIT_EXPORT WebCryptoAlgorithm(const WebCryptoAlgorithm&); |
+ WEBKIT_EXPORT WebCryptoAlgorithm& operator=(const WebCryptoAlgorithm&); |
abarth-chromium
2013/07/02 06:46:36
Similarly, we don't export constructors or operato
eroman
2013/07/02 08:12:27
Done.
|
+ |
+ // Returns a unique identifier for the algorithm. |
abarth-chromium
2013/07/02 06:46:36
Unique in what sense? They're just identifiers fo
eroman
2013/07/02 08:12:27
Removed comment.
|
+ WEBKIT_EXPORT WebCryptoAlgorithmId algorithmId() const; |
+ WEBKIT_EXPORT const char* algorithmName() const; |
+ |
+ // Returns the specific type of parameters. |
+ WEBKIT_EXPORT WebCryptoAlgorithmParamsType paramsType() const; |
+ |
+ // Retrieves the type-specific parameters. The algorithm contains at most 1 |
+ // type of parameters. Retrieving an invalid parameter will return 0. |
+ WebCryptoAesCbcParams* getAesCbcParams() const; |
abarth-chromium
2013/07/02 06:46:36
getAesCbcParams -> aesCbcParams
eroman
2013/07/02 08:12:27
Done.
|
+ WebCryptoAesKeyGenParams* getAesKeyGenParams() const; |
abarth-chromium
2013/07/02 06:46:36
getAesKeyGenParams -> aesKeyGenParams
eroman
2013/07/02 08:12:27
Done.
|
+ |
+private: |
+ WebPrivatePtr<WebCryptoAlgorithmPrivate> m_private; |
+}; |
+ |
+} // namespace WebKit |
+ |
+#endif |