diff options
Diffstat (limited to 'crypto/secure_hash_openssl.cc')
-rw-r--r-- | crypto/secure_hash_openssl.cc | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/crypto/secure_hash_openssl.cc b/crypto/secure_hash_openssl.cc deleted file mode 100644 index 1033b8e25e..0000000000 --- a/crypto/secure_hash_openssl.cc +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "crypto/secure_hash.h" - -#include <openssl/mem.h> -#include <openssl/sha.h> - -#include "base/basictypes.h" -#include "base/logging.h" -#include "base/pickle.h" -#include "crypto/openssl_util.h" - -namespace crypto { - -namespace { - -const char kSHA256Descriptor[] = "OpenSSL"; - -class SecureHashSHA256OpenSSL : public SecureHash { - public: - static const int kSecureHashVersion = 1; - - SecureHashSHA256OpenSSL() { - SHA256_Init(&ctx_); - } - - ~SecureHashSHA256OpenSSL() override { - OPENSSL_cleanse(&ctx_, sizeof(ctx_)); - } - - void Update(const void* input, size_t len) override { - SHA256_Update(&ctx_, static_cast<const unsigned char*>(input), len); - } - - void Finish(void* output, size_t len) override { - ScopedOpenSSLSafeSizeBuffer<SHA256_DIGEST_LENGTH> result( - static_cast<unsigned char*>(output), len); - SHA256_Final(result.safe_buffer(), &ctx_); - } - - bool Serialize(base::Pickle* pickle) override; - bool Deserialize(base::PickleIterator* data_iterator) override; - - private: - SHA256_CTX ctx_; -}; - -bool SecureHashSHA256OpenSSL::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 SecureHashSHA256OpenSSL::Deserialize(base::PickleIterator* data_iterator) { - if (!data_iterator) - return false; - - 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) { - switch (algorithm) { - case SHA256: - return new SecureHashSHA256OpenSSL(); - default: - NOTIMPLEMENTED(); - return NULL; - } -} - -} // namespace crypto |