| Index: base/openssl_util.h
|
| diff --git a/base/openssl_util.h b/base/openssl_util.h
|
| index ed4101f4366b1a1723acd7b6e0073bbfe348929d..1d290ae3ad0cd6dcb13206d943961ceb75bd2a8b 100644
|
| --- a/base/openssl_util.h
|
| +++ b/base/openssl_util.h
|
| @@ -11,6 +11,20 @@
|
|
|
| namespace base {
|
|
|
| +// A helper class that takes care of destroying OpenSSL objects when it goes out
|
| +// of scope.
|
| +template <typename T, void (*destructor)(T*)>
|
| +class ScopedOpenSSL {
|
| + public:
|
| + explicit ScopedOpenSSL(T* ptr_) : ptr_(ptr_) { }
|
| + ~ScopedOpenSSL() { if (ptr_) (*destructor)(ptr_); }
|
| +
|
| + T* get() const { return ptr_; }
|
| +
|
| + private:
|
| + T* ptr_;
|
| +};
|
| +
|
| // Provides a buffer of at least MIN_SIZE bytes, for use when calling OpenSSL's
|
| // SHA256, HMAC, etc functions, adapting the buffer sizing rules to meet those
|
| // of the our base wrapper APIs.
|
| @@ -51,6 +65,12 @@ class ScopedOpenSSLSafeSizeBuffer {
|
| DISALLOW_COPY_AND_ASSIGN(ScopedOpenSSLSafeSizeBuffer);
|
| };
|
|
|
| +// Initialize OpenSSL if it isn't already initialized. This must be called
|
| +// before any other OpenSSL functions.
|
| +// This function is thread-safe, and OpenSSL will only ever be initialized once.
|
| +// OpenSSL will be properly shut down on program exit.
|
| +void EnsureOpenSSLInit();
|
| +
|
| // Drains the OpenSSL ERR_get_error stack. On a debug build the error codes
|
| // are send to VLOG(1), on a release build they are disregarded.
|
| void ClearOpenSSLERRStack();
|
|
|