Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / Source / platform / Crypto.h
bloba6b4ff8e086741c76d3ca22cdd646e817fecfe34
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // TODO(jww) The original Blink-style header guard for this file conflicts with
6 // the header guard in Source/modules/crypto/Crypto.h, so this is a
7 // Chromium-style header guard instead. There is now a bug
8 // (https://crbug.com/360121) to track a proposal to change all header guards
9 // to a similar style. Thus, whenever that is resolved, this header guard
10 // should be changed to whatever style is agreed upon.
11 #ifndef SOURCE_PLATFORM_CRYPTO_H_
12 #define SOURCE_PLATFORM_CRYPTO_H_
14 #include "platform/PlatformExport.h"
15 #include "public/platform/WebCrypto.h"
16 #include "wtf/HashSet.h"
17 #include "wtf/StringHasher.h"
18 #include "wtf/Vector.h"
20 namespace blink {
22 static const size_t kMaxDigestSize = 64;
23 typedef Vector<uint8_t, kMaxDigestSize> DigestValue;
25 const size_t sha1HashSize = 20;
26 enum HashAlgorithm {
27 HashAlgorithmSha1,
28 HashAlgorithmSha256,
29 HashAlgorithmSha384,
30 HashAlgorithmSha512
33 PLATFORM_EXPORT bool computeDigest(HashAlgorithm, const char* digestable, size_t length, DigestValue& digestResult);
34 PLATFORM_EXPORT PassOwnPtr<WebCryptoDigestor> createDigestor(HashAlgorithm);
35 PLATFORM_EXPORT void finishDigestor(WebCryptoDigestor*, DigestValue& digestResult);
37 } // namespace blink
39 namespace WTF {
41 struct DigestValueHash {
42 static unsigned hash(const blink::DigestValue& v)
44 return StringHasher::computeHash(v.data(), v.size());
46 static bool equal(const blink::DigestValue& a, const blink::DigestValue& b)
48 return a == b;
50 static const bool safeToCompareToEmptyOrDeleted = true;
52 template <>
53 struct DefaultHash<blink::DigestValue> {
54 typedef DigestValueHash Hash;
57 template <>
58 struct DefaultHash<blink::HashAlgorithm> {
59 typedef IntHash<blink::HashAlgorithm> Hash;
61 template <>
62 struct HashTraits<blink::HashAlgorithm> : UnsignedWithZeroKeyHashTraits<blink::HashAlgorithm> {
65 } // namespace WTF
66 #endif // SOURCE_PLATFORM_CRYPTO_H_