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 */