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"
22 static const size_t kMaxDigestSize
= 64;
23 typedef Vector
<uint8_t, kMaxDigestSize
> DigestValue
;
25 const size_t sha1HashSize
= 20;
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
);
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
)
50 static const bool safeToCompareToEmptyOrDeleted
= true;
53 struct DefaultHash
<blink::DigestValue
> {
54 typedef DigestValueHash Hash
;
58 struct DefaultHash
<blink::HashAlgorithm
> {
59 typedef IntHash
<blink::HashAlgorithm
> Hash
;
62 struct HashTraits
<blink::HashAlgorithm
> : UnsignedWithZeroKeyHashTraits
<blink::HashAlgorithm
> {
66 #endif // SOURCE_PLATFORM_CRYPTO_H_