/src/mozilla-central/toolkit/components/url-classifier/nsCheckSummedOutputStream.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | //* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
3 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
4 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
5 | | |
6 | | #include "nsCRT.h" |
7 | | #include "nsIFile.h" |
8 | | #include "nsISupportsImpl.h" |
9 | | #include "nsCheckSummedOutputStream.h" |
10 | | |
11 | | //////////////////////////////////////////////////////////////////////////////// |
12 | | // nsCheckSummedOutputStream |
13 | | |
14 | | NS_IMPL_ISUPPORTS_INHERITED(nsCheckSummedOutputStream, |
15 | | nsBufferedOutputStream, |
16 | | nsISafeOutputStream) |
17 | | |
18 | | NS_IMETHODIMP |
19 | | nsCheckSummedOutputStream::Init(nsIOutputStream* stream, uint32_t bufferSize) |
20 | 0 | { |
21 | 0 | nsresult rv; |
22 | 0 | mHash = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv); |
23 | 0 | NS_ENSURE_SUCCESS(rv, rv); |
24 | 0 |
|
25 | 0 | rv = mHash->Init(nsICryptoHash::MD5); |
26 | 0 | NS_ENSURE_SUCCESS(rv, rv); |
27 | 0 |
|
28 | 0 | return nsBufferedOutputStream::Init(stream, bufferSize); |
29 | 0 | } |
30 | | |
31 | | NS_IMETHODIMP |
32 | | nsCheckSummedOutputStream::Finish() |
33 | 0 | { |
34 | 0 | nsresult rv = mHash->Finish(false, mCheckSum); |
35 | 0 | NS_ENSURE_SUCCESS(rv, rv); |
36 | 0 |
|
37 | 0 | uint32_t written; |
38 | 0 | rv = nsBufferedOutputStream::Write(reinterpret_cast<const char*>(mCheckSum.BeginReading()), |
39 | 0 | mCheckSum.Length(), &written); |
40 | 0 | NS_ASSERTION(written == mCheckSum.Length(), "Error writing stream checksum"); |
41 | 0 | NS_ENSURE_SUCCESS(rv, rv); |
42 | 0 |
|
43 | 0 | return nsBufferedOutputStream::Finish(); |
44 | 0 | } |
45 | | |
46 | | NS_IMETHODIMP |
47 | | nsCheckSummedOutputStream::Write(const char *buf, uint32_t count, uint32_t *result) |
48 | 0 | { |
49 | 0 | nsresult rv = mHash->Update(reinterpret_cast<const uint8_t*>(buf), count); |
50 | 0 | NS_ENSURE_SUCCESS(rv, rv); |
51 | 0 |
|
52 | 0 | return nsBufferedOutputStream::Write(buf, count, result); |
53 | 0 | } |
54 | | |
55 | | //////////////////////////////////////////////////////////////////////////////// |