gfx/skia/trunk/src/utils/SkSHA1.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /*
     2  * Copyright 2013 Google Inc.
     3  *
     4  * Use of this source code is governed by a BSD-style license that can be
     5  * found in the LICENSE file.
     6  */
     8 #ifndef SkSHA1_DEFINED
     9 #define SkSHA1_DEFINED
    11 #include "SkTypes.h"
    12 #include "SkEndian.h"
    13 #include "SkStream.h"
    15 //The following macros can be defined to affect the SHA1 code generated.
    16 //SK_SHA1_CLEAR_DATA causes all intermediate state to be overwritten with 0's.
    17 //SK_CPU_BENDIAN allows 32 bit <=> 8 bit conversions without copies (if alligned).
    18 //SK_CPU_FAST_UNALIGNED_ACCESS allows 32 bit <=> 8 bit conversions without copies if SK_CPU_BENDIAN.
    20 class SkSHA1 : public SkWStream {
    21 public:
    22     SkSHA1();
    24     /** Processes input, adding it to the digest.
    25      *  Note that this treats the buffer as a series of uint8_t values.
    26      */
    27     virtual bool write(const void* buffer, size_t size) SK_OVERRIDE {
    28         update(reinterpret_cast<const uint8_t*>(buffer), size);
    29         return true;
    30     }
    32     virtual size_t bytesWritten() const SK_OVERRIDE { return SkToSizeT(this->byteCount); }
    34     /** Processes input, adding it to the digest. Calling this after finish is undefined. */
    35     void update(const uint8_t* input, size_t length);
    37     struct Digest {
    38         uint8_t data[20];
    39     };
    41     /** Computes and returns the digest. */
    42     void finish(Digest& digest);
    44 private:
    45     // number of bytes, modulo 2^64
    46     uint64_t byteCount;
    48     // state (ABCDE)
    49     uint32_t state[5];
    51     // input buffer
    52     uint8_t buffer[64];
    53 };
    55 #endif

mercurial