| Index: crypto/secure_hash_default.cc
|
| diff --git a/crypto/secure_hash_default.cc b/crypto/secure_hash_default.cc
|
| index cec6fb80a0afc16651119a21ec4ac76554a36bef..b33010fdd389f1fd073ee6824163a38c6b6725bf 100644
|
| --- a/crypto/secure_hash_default.cc
|
| +++ b/crypto/secure_hash_default.cc
|
| @@ -15,16 +15,16 @@ namespace crypto {
|
|
|
| namespace {
|
|
|
| -const char kSHA256Descriptor[] = "NSS";
|
| -
|
| class SecureHashSHA256NSS : public SecureHash {
|
| public:
|
| - static const int kSecureHashVersion = 1;
|
| -
|
| SecureHashSHA256NSS() {
|
| SHA256_Begin(&ctx_);
|
| }
|
|
|
| + SecureHashSHA256NSS(const SecureHashSHA256NSS& other) {
|
| + SHA256_Clone(&ctx_, const_cast<SHA256Context*>(&other.ctx_));
|
| + }
|
| +
|
| ~SecureHashSHA256NSS() override { memset(&ctx_, 0, sizeof(ctx_)); }
|
|
|
| // SecureHash implementation:
|
| @@ -37,50 +37,14 @@ class SecureHashSHA256NSS : public SecureHash {
|
| static_cast<unsigned int>(len));
|
| }
|
|
|
| - bool Serialize(base::Pickle* pickle) override;
|
| - bool Deserialize(base::PickleIterator* data_iterator) override;
|
| + SecureHash* Clone() const override { return new SecureHashSHA256NSS(*this); }
|
| +
|
| + size_t GetHashLength() const override { return SHA256_LENGTH; }
|
|
|
| private:
|
| SHA256Context ctx_;
|
| };
|
|
|
| -bool SecureHashSHA256NSS::Serialize(base::Pickle* pickle) {
|
| - if (!pickle)
|
| - return false;
|
| -
|
| - if (!pickle->WriteInt(kSecureHashVersion) ||
|
| - !pickle->WriteString(kSHA256Descriptor) ||
|
| - !pickle->WriteBytes(&ctx_, sizeof(ctx_))) {
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool SecureHashSHA256NSS::Deserialize(base::PickleIterator* data_iterator) {
|
| - int version;
|
| - if (!data_iterator->ReadInt(&version))
|
| - return false;
|
| -
|
| - if (version > kSecureHashVersion)
|
| - return false; // We don't know how to deal with this.
|
| -
|
| - std::string type;
|
| - if (!data_iterator->ReadString(&type))
|
| - return false;
|
| -
|
| - if (type != kSHA256Descriptor)
|
| - return false; // It's the wrong kind.
|
| -
|
| - const char* data = NULL;
|
| - if (!data_iterator->ReadBytes(&data, sizeof(ctx_)))
|
| - return false;
|
| -
|
| - memcpy(&ctx_, data, sizeof(ctx_));
|
| -
|
| - return true;
|
| -}
|
| -
|
| } // namespace
|
|
|
| SecureHash* SecureHash::Create(Algorithm algorithm) {
|
|
|