Index: Source/platform/Crypto.h |
diff --git a/Source/platform/Crypto.h b/Source/platform/Crypto.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d5556befa24f7c2e8b6b51bf2b80f62a4b29d253 |
--- /dev/null |
+++ b/Source/platform/Crypto.h |
@@ -0,0 +1,67 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// TODO(jww) The original Blink-style header guard for this file conflicts with |
+// the header guard in Source/modules/crypto/Crypto.h, so this is a |
+// Chromium-style header guard instead. There is now a bug |
+// (https://crbug.com/360121) to track a proposal to change all header guards |
+// to a similar style. Thus, whenever that is resolved, this header guard |
+// should be changed to whatever style is agreed upon. |
+#ifndef SOURCE_PLATFORM_CRYPTO_H_ |
+#define SOURCE_PLATFORM_CRYPTO_H_ |
+ |
+#include "platform/PlatformExport.h" |
+#include "public/platform/WebCrypto.h" |
+#include "wtf/HashSet.h" |
+#include "wtf/StringHasher.h" |
+#include "wtf/Vector.h" |
+#include "wtf/text/CString.h" |
+ |
+namespace WebCore { |
+ |
+static const size_t kMaxDigestSize = 64; |
+typedef Vector<uint8_t, kMaxDigestSize> DigestValue; |
+ |
+const size_t sha1HashSize = 20; |
+enum HashAlgorithm { |
+ HashAlgorithmSha1, |
+ HashAlgorithmSha256, |
+ HashAlgorithmSha384, |
+ HashAlgorithmSha512 |
+}; |
+ |
+PLATFORM_EXPORT void computeDigest(HashAlgorithm, const char* digestable, size_t length, DigestValue& digestResult); |
+PLATFORM_EXPORT PassOwnPtr<blink::WebCryptoDigestor> createDigestor(HashAlgorithm); |
+PLATFORM_EXPORT void finishDigestor(blink::WebCryptoDigestor*, DigestValue& digestResult); |
+ |
+} // namespace WebCore |
+ |
+namespace WTF { |
+ |
+struct DigestValueHash { |
+ static unsigned hash(const WebCore::DigestValue& v) |
+ { |
+ return StringHasher::computeHash(v.data(), v.size()); |
+ } |
+ static bool equal(const WebCore::DigestValue& a, const WebCore::DigestValue& b) |
+ { |
+ return a == b; |
+ }; |
+ static const bool safeToCompareToEmptyOrDeleted = true; |
+}; |
+template <> |
+struct DefaultHash<WebCore::DigestValue> { |
+ typedef DigestValueHash Hash; |
+}; |
+ |
+template <> |
+struct DefaultHash<WebCore::HashAlgorithm> { |
+ typedef IntHash<WebCore::HashAlgorithm> Hash; |
+}; |
+template <> |
+struct HashTraits<WebCore::HashAlgorithm> : UnsignedWithZeroKeyHashTraits<WebCore::HashAlgorithm> { |
+}; |
+ |
+} // namespace WTF |
+#endif // SOURCE_PLATFORM_CRYPTO_H_ |