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>
This commit is contained in:
Martin Kreichgauer 2016-08-08 16:52:20 -07:00 committed by CQ bot account: commit-bot@chromium.org
parent c505c7ce61
commit 14343935b5
4 changed files with 82 additions and 6 deletions

View File

@ -17,13 +17,13 @@
#include <vector> #include <vector>
#include <openssl/aead.h> #include <openssl/c++/aead.h>
#include <openssl/crypto.h> #include <openssl/crypto.h>
#include <openssl/err.h> #include <openssl/err.h>
#include "../test/file_test.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, // 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: // using the FileTest format. As an example, here's a valid test case:
@ -327,7 +327,7 @@ static const struct KnownAEAD kAEADs[] = {
{ "", NULL, false }, { "", NULL, false },
}; };
int main(int argc, char **argv) { static int Main(int argc, char **argv) {
CRYPTO_library_init(); CRYPTO_library_init();
if (argc != 3) { if (argc != 3) {
@ -360,3 +360,9 @@ int main(int argc, char **argv) {
return FileTestMain(TestAEAD, const_cast<EVP_AEAD*>(aead), argv[2]); return FileTestMain(TestAEAD, const_cast<EVP_AEAD*>(aead), argv[2]);
} }
} // namespace bssl
int main(int argc, char **argv) {
return bssl::Main(argc, argv);
}

View File

@ -126,9 +126,6 @@ using ScopedX509_STORE_CTX = ScopedOpenSSLType<X509_STORE_CTX, X509_STORE_CTX_fr
using ScopedX509Stack = ScopedOpenSSLStack<STACK_OF(X509), X509, X509_free>; using ScopedX509Stack = ScopedOpenSSLStack<STACK_OF(X509), X509, X509_free>;
using ScopedCBB = ScopedOpenSSLContext<CBB, void, CBB_zero, CBB_cleanup>; 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, using ScopedEVP_CIPHER_CTX = ScopedOpenSSLContext<EVP_CIPHER_CTX, int,
EVP_CIPHER_CTX_init, EVP_CIPHER_CTX_init,
EVP_CIPHER_CTX_cleanup>; EVP_CIPHER_CTX_cleanup>;

View File

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

View File

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