Replace custom BoringSSL scopers with bssl::UniquePtr.
BoringSSL already provides C++ scopers.
Test: mma
Change-Id: I34d4ec36fc0b51750560be0886768a83fe69fbf5
diff --git a/keystore-engine/android_engine.cpp b/keystore-engine/android_engine.cpp
index 856194d..e3525b2 100644
--- a/keystore-engine/android_engine.cpp
+++ b/keystore-engine/android_engine.cpp
@@ -251,32 +251,11 @@
EC_KEY_get_ex_data(ec_key, g_keystore_engine->ec_key_ex_index()));
}
-struct EVP_PKEY_Delete {
- void operator()(EVP_PKEY* p) const {
- EVP_PKEY_free(p);
- }
-};
-typedef std::unique_ptr<EVP_PKEY, EVP_PKEY_Delete> Unique_EVP_PKEY;
-
-struct RSA_Delete {
- void operator()(RSA* p) const {
- RSA_free(p);
- }
-};
-typedef std::unique_ptr<RSA, RSA_Delete> Unique_RSA;
-
-struct EC_KEY_Delete {
- void operator()(EC_KEY* ec) const {
- EC_KEY_free(ec);
- }
-};
-typedef std::unique_ptr<EC_KEY, EC_KEY_Delete> Unique_EC_KEY;
-
/* wrap_rsa returns an |EVP_PKEY| that contains an RSA key where the public
* part is taken from |public_rsa| and the private operations are forwarded to
* KeyStore and operate on the key named |key_id|. */
static EVP_PKEY *wrap_rsa(const char *key_id, const RSA *public_rsa) {
- Unique_RSA rsa(RSA_new_method(g_keystore_engine->engine()));
+ bssl::UniquePtr<RSA> rsa(RSA_new_method(g_keystore_engine->engine()));
if (rsa.get() == nullptr) {
return nullptr;
}
@@ -298,7 +277,7 @@
return nullptr;
}
- Unique_EVP_PKEY result(EVP_PKEY_new());
+ bssl::UniquePtr<EVP_PKEY> result(EVP_PKEY_new());
if (result.get() == nullptr ||
!EVP_PKEY_assign_RSA(result.get(), rsa.get())) {
return nullptr;
@@ -312,7 +291,7 @@
* part is taken from |public_rsa| and the private operations are forwarded to
* KeyStore and operate on the key named |key_id|. */
static EVP_PKEY *wrap_ecdsa(const char *key_id, const EC_KEY *public_ecdsa) {
- Unique_EC_KEY ec(EC_KEY_new_method(g_keystore_engine->engine()));
+ bssl::UniquePtr<EC_KEY> ec(EC_KEY_new_method(g_keystore_engine->engine()));
if (ec.get() == nullptr) {
return nullptr;
}
@@ -333,7 +312,7 @@
return nullptr;
}
- Unique_EVP_PKEY result(EVP_PKEY_new());
+ bssl::UniquePtr<EVP_PKEY> result(EVP_PKEY_new());
if (result.get() == nullptr ||
!EVP_PKEY_assign_EC_KEY(result.get(), ec.get())) {
return nullptr;
@@ -370,7 +349,7 @@
}
const uint8_t *inp = pubkey;
- Unique_EVP_PKEY pkey(d2i_PUBKEY(nullptr, &inp, pubkey_len));
+ bssl::UniquePtr<EVP_PKEY> pkey(d2i_PUBKEY(nullptr, &inp, pubkey_len));
if (pkey.get() == nullptr) {
ALOGW("Cannot convert pubkey");
return nullptr;
@@ -379,12 +358,12 @@
EVP_PKEY *result;
switch (EVP_PKEY_type(pkey->type)) {
case EVP_PKEY_RSA: {
- Unique_RSA public_rsa(EVP_PKEY_get1_RSA(pkey.get()));
+ bssl::UniquePtr<RSA> public_rsa(EVP_PKEY_get1_RSA(pkey.get()));
result = wrap_rsa(key_id, public_rsa.get());
break;
}
case EVP_PKEY_EC: {
- Unique_EC_KEY public_ecdsa(EVP_PKEY_get1_EC_KEY(pkey.get()));
+ bssl::UniquePtr<EC_KEY> public_ecdsa(EVP_PKEY_get1_EC_KEY(pkey.get()));
result = wrap_ecdsa(key_id, public_ecdsa.get());
break;
}