message: Add single sha256 call to CHashWriter
diff: @@ -98,7 +98,7 @@ inline uint160 Hash160(const T1& in1)
  class CHashWriter
  {
  private:
  - CHash256 ctx;
  + CSHA256 ctx;
  const int nType;
  const int nVersion;
  @@ -110,13 +110,27 @@ public:
  int GetVersion() const { return nVersion; }
  void write(const char *pch, size_t size) {
  - ctx.Write({(const unsigned char*)pch, size});
  + ctx.Write((const unsigned char*)pch, size);
  }
  - // invalidates the object
  + /** Compute the double-SHA256 hash of all data written to this object.
  + *
  + * Invalidates this object.
  + */
  uint256 GetHash() {
  uint256 result;
  - ctx.Finalize(result);
  + ctx.Finalize(result.begin());
  + ctx.Reset().Write(result.begin(), CSHA256::OUTPUT_SIZE).Finalize(result.begin());
  + return result;
  + }
  +
  + /** Compute the SHA256 hash of all data written to this object.
  + *
  + * Invalidates this object.
  + */
  + uint256 GetSHA256() {
  + uint256 result;
  + ctx.Finalize(result.begin());
  return result;
  }
  @@ -124,9 +138,8 @@ public:
  * Returns the first 64 bits from the resulting hash.
  */
  inline uint64_t GetCheapHash() {
  - unsigned char result[CHash256::OUTPUT_SIZE];
  - ctx.Finalize(result);
  - return ReadLE64(result);
  + uint256 result = GetHash();
  + return ReadLE64(result.begin());
  }
  template<typename T>
  