blob: 4363989e4908f2c8fbacfc94cfdbba78fd9c2c5e [file] [log] [blame]
Make Keymaster compatible with latest BoringSSL.
https://r.android.com/1088109
diff --git a/include/keymaster/km_openssl/openssl_utils.h b/include/keymaster/km_openssl/openssl_utils.h
index 8586b35..4483045 100644
--- a/include/keymaster/km_openssl/openssl_utils.h
+++ b/include/keymaster/km_openssl/openssl_utils.h
@@ -42,12 +42,13 @@ class EvpMdCtxCleaner {
EVP_MD_CTX* ctx_;
};
-template <typename T, void (*FreeFunc)(T*)> struct OpenSslObjectDeleter {
+template <typename T, typename FreeFuncRet, FreeFuncRet (*FreeFunc)(T*)>
+struct OpenSslObjectDeleter {
void operator()(T* p) { FreeFunc(p); }
};
#define DEFINE_OPENSSL_OBJECT_POINTER(name) \
- typedef OpenSslObjectDeleter<name, name##_free> name##_Delete; \
+ typedef OpenSslObjectDeleter<name, decltype(name##_free(nullptr)), name##_free> name##_Delete; \
typedef UniquePtr<name, name##_Delete> name##_Ptr;
DEFINE_OPENSSL_OBJECT_POINTER(ASN1_BIT_STRING)
@@ -67,7 +68,7 @@ DEFINE_OPENSSL_OBJECT_POINTER(X509)
DEFINE_OPENSSL_OBJECT_POINTER(X509_EXTENSION)
DEFINE_OPENSSL_OBJECT_POINTER(X509_NAME)
-typedef OpenSslObjectDeleter<BIGNUM, BN_free> BIGNUM_Delete;
+typedef OpenSslObjectDeleter<BIGNUM, void, BN_free> BIGNUM_Delete;
typedef UniquePtr<BIGNUM, BIGNUM_Delete> BIGNUM_Ptr;
keymaster_error_t ec_get_group_size(const EC_GROUP* group, size_t* key_size_bits);