diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-05 18:25:06 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-05 18:25:06 +0000 |
commit | 28ae8fe2c8c845ad2d2272bec95507c4328bbc3c (patch) | |
tree | e7a9e17f2d38b8a4f0016922eb05bbc9e387aea6 /base/crypto/signature_creator.h | |
parent | f9526c75bd7c6febdfc99e98bb6355c9b4aa1500 (diff) | |
download | chromium_src-28ae8fe2c8c845ad2d2272bec95507c4328bbc3c.zip chromium_src-28ae8fe2c8c845ad2d2272bec95507c4328bbc3c.tar.gz chromium_src-28ae8fe2c8c845ad2d2272bec95507c4328bbc3c.tar.bz2 |
Introduce SignatureCreator.
Review URL: http://codereview.chromium.org/118277
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17745 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/crypto/signature_creator.h')
-rw-r--r-- | base/crypto/signature_creator.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/base/crypto/signature_creator.h b/base/crypto/signature_creator.h new file mode 100644 index 0000000..0b66baa --- /dev/null +++ b/base/crypto/signature_creator.h @@ -0,0 +1,53 @@ +// Copyright (c) 2009 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. + +#ifndef BASE_CRYPTO_SIGNATURE_CREATOR_H_ +#define BASE_CRYPTO_SIGNATURE_CREATOR_H_ + +#if defined(OS_WIN) +#include <windows.h> +#include <wincrypt.h> +#else +// TODO(PORT) +#endif + +#include <vector> + +#include "base/basictypes.h" +#include "base/crypto/rsa_private_key.h" + +namespace base { + +// Signs data using a bare private key (as opposed to a full certificate). +// Currently can only sign data using SHA-1 with RSA encryption. +class SignatureCreator { + public: + // Create an instance. The caller must ensure that the provided PrivateKey + // instance outlives the created SignatureCreator. + static SignatureCreator* Create(RSAPrivateKey* key); + + ~SignatureCreator(); + + // Update the signature with more data. + bool Update(const uint8* data_part, int data_part_len); + + // Finalize the signature. + bool Final(std::vector<uint8>* signature); + + private: + // Private constructor. Use the Create() method instead. + SignatureCreator() {} + + RSAPrivateKey* key_; + +#if defined(OS_WIN) + HCRYPTHASH hash_object_; +#endif + + DISALLOW_COPY_AND_ASSIGN(SignatureCreator); +}; + +} // namespace base + +#endif // BASE_CRYPTO_SIGNATURE_CREATOR_H_ |