From 14343935b58f3425901aa3ac66f2411c9f8a58bb Mon Sep 17 00:00:00 2001 From: Martin Kreichgauer Date: Mon, 8 Aug 2016 16:52:20 -0700 Subject: [PATCH] Start removing scoped_types.h Initial stab at moving contents of scoped_types.h into include/openssl/c++ and into the |bssl| namespace. Started with one file. Will do the remaining ones once this looks good. Change-Id: I51e2f7c1acbe52d508f1faee7740645f91f56386 Reviewed-on: https://boringssl-review.googlesource.com/9175 Reviewed-by: Adam Langley Commit-Queue: Adam Langley CQ-Verified: CQ bot account: commit-bot@chromium.org --- crypto/cipher/aead_test.cc | 12 ++++++-- crypto/test/scoped_types.h | 3 -- include/openssl/c++/aead.h | 28 +++++++++++++++++ include/openssl/c++/scoped_helpers.h | 45 ++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 include/openssl/c++/aead.h create mode 100644 include/openssl/c++/scoped_helpers.h diff --git a/crypto/cipher/aead_test.cc b/crypto/cipher/aead_test.cc index 8bad93f5..b75737f0 100644 --- a/crypto/cipher/aead_test.cc +++ b/crypto/cipher/aead_test.cc @@ -17,13 +17,13 @@ #include -#include +#include #include #include #include "../test/file_test.h" -#include "../test/scoped_types.h" +namespace bssl { // This program tests an AEAD against a series of test vectors from a file, // using the FileTest format. As an example, here's a valid test case: @@ -327,7 +327,7 @@ static const struct KnownAEAD kAEADs[] = { { "", NULL, false }, }; -int main(int argc, char **argv) { +static int Main(int argc, char **argv) { CRYPTO_library_init(); if (argc != 3) { @@ -360,3 +360,9 @@ int main(int argc, char **argv) { return FileTestMain(TestAEAD, const_cast(aead), argv[2]); } + +} // namespace bssl + +int main(int argc, char **argv) { + return bssl::Main(argc, argv); +} diff --git a/crypto/test/scoped_types.h b/crypto/test/scoped_types.h index 2a2c3713..76e38af8 100644 --- a/crypto/test/scoped_types.h +++ b/crypto/test/scoped_types.h @@ -126,9 +126,6 @@ using ScopedX509_STORE_CTX = ScopedOpenSSLType; using ScopedCBB = ScopedOpenSSLContext; -using ScopedEVP_AEAD_CTX = ScopedOpenSSLContext; using ScopedEVP_CIPHER_CTX = ScopedOpenSSLContext; diff --git a/include/openssl/c++/aead.h b/include/openssl/c++/aead.h new file mode 100644 index 00000000..15309230 --- /dev/null +++ b/include/openssl/c++/aead.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2016, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#ifndef OPENSSL_HEADER_CXX_AEAD_H +#define OPENSSL_HEADER_CXX_AEAD_H + +#include +#include + +namespace bssl { + +using ScopedEVP_AEAD_CTX = + ScopedContext; + +} // namespace bssl + +#endif /* OPENSSL_HEADER_CXX_AEAD_H */ diff --git a/include/openssl/c++/scoped_helpers.h b/include/openssl/c++/scoped_helpers.h new file mode 100644 index 00000000..daaf50ee --- /dev/null +++ b/include/openssl/c++/scoped_helpers.h @@ -0,0 +1,45 @@ +/* Copyright (c) 2016, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#ifndef OPENSSL_HEADER_CXX_SCOPED_HELPERS_H +#define OPENSSL_HEADER_CXX_SCOPED_HELPERS_H + +namespace bssl { + +template +class ScopedContext { + public: + ScopedContext() { + init_func(&ctx_); + } + ~ScopedContext() { + cleanup_func(&ctx_); + } + + T *get() { return &ctx_; } + const T *get() const { return &ctx_; } + + void Reset() { + cleanup_func(&ctx_); + init_func(&ctx_); + } + + private: + T ctx_; +}; + +} // namespace bssl + +#endif /* OPENSSL_HEADER_CXX_SCOPED_HELPERS_H */