Backed out changeset 71dafccc22ae (bug 1353956) Backed out changeset f1f29fe519cf (bug 1353956) Backed out changeset 4978556a66f6 (bug 1353956) Backed out changeset bc0b91abce9b (bug 1353956) Backed out changeset 6b8412db5a05 (bug 1353956) Backed out changeset 3d326cfcd002 (bug 1353956)
54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
//* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsCRT.h"
|
|
#include "nsIFile.h"
|
|
#include "nsISupportsImpl.h"
|
|
#include "nsCheckSummedOutputStream.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// nsCheckSummedOutputStream
|
|
|
|
NS_IMPL_ISUPPORTS_INHERITED(nsCheckSummedOutputStream, nsBufferedOutputStream,
|
|
nsISafeOutputStream)
|
|
|
|
NS_IMETHODIMP
|
|
nsCheckSummedOutputStream::Init(nsIOutputStream *stream, uint32_t bufferSize) {
|
|
nsresult rv;
|
|
mHash = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
rv = mHash->Init(nsICryptoHash::MD5);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
return nsBufferedOutputStream::Init(stream, bufferSize);
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsCheckSummedOutputStream::Finish() {
|
|
nsresult rv = mHash->Finish(false, mCheckSum);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
uint32_t written;
|
|
rv = nsBufferedOutputStream::Write(
|
|
reinterpret_cast<const char *>(mCheckSum.BeginReading()),
|
|
mCheckSum.Length(), &written);
|
|
NS_ASSERTION(written == mCheckSum.Length(), "Error writing stream checksum");
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
return nsBufferedOutputStream::Finish();
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsCheckSummedOutputStream::Write(const char *buf, uint32_t count,
|
|
uint32_t *result) {
|
|
nsresult rv = mHash->Update(reinterpret_cast<const uint8_t *>(buf), count);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
return nsBufferedOutputStream::Write(buf, count, result);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|