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 <agl@google.com> Commit-Queue: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/crypto/cipher/aead_test.cc b/crypto/cipher/aead_test.cc index 8bad93f..b75737f 100644 --- a/crypto/cipher/aead_test.cc +++ b/crypto/cipher/aead_test.cc
@@ -17,13 +17,13 @@ #include <vector> -#include <openssl/aead.h> +#include <openssl/c++/aead.h> #include <openssl/crypto.h> #include <openssl/err.h> #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 @@ { "", 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 @@ return FileTestMain(TestAEAD, const_cast<EVP_AEAD*>(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 2a2c371..76e38af 100644 --- a/crypto/test/scoped_types.h +++ b/crypto/test/scoped_types.h
@@ -126,9 +126,6 @@ using ScopedX509Stack = ScopedOpenSSLStack<STACK_OF(X509), X509, X509_free>; using ScopedCBB = ScopedOpenSSLContext<CBB, void, CBB_zero, CBB_cleanup>; -using ScopedEVP_AEAD_CTX = ScopedOpenSSLContext<EVP_AEAD_CTX, void, - EVP_AEAD_CTX_zero, - EVP_AEAD_CTX_cleanup>; using ScopedEVP_CIPHER_CTX = ScopedOpenSSLContext<EVP_CIPHER_CTX, int, EVP_CIPHER_CTX_init, EVP_CIPHER_CTX_cleanup>;
diff --git a/include/openssl/c++/aead.h b/include/openssl/c++/aead.h new file mode 100644 index 0000000..1530923 --- /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 <openssl/aead.h> +#include <openssl/c++/scoped_helpers.h> + +namespace bssl { + +using ScopedEVP_AEAD_CTX = + ScopedContext<EVP_AEAD_CTX, void, EVP_AEAD_CTX_zero, EVP_AEAD_CTX_cleanup>; + +} // 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 0000000..daaf50e --- /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<typename T, typename CleanupRet, void (*init_func)(T*), + CleanupRet (*cleanup_func)(T*)> +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 */