This change:
1) Switches the Makefiles over to using LOCAL_STATIC_LIBRARIES, which I
understand is the new hotness, rather than setting a -I flag directly.
2) Switches to the non-deprecated _ex versions for EVP_EncryptFinal.
3) Uses the EVP_PKEY interface for checking PSS signatures. This is the
only supported interface in OpenSSL: the PSS padding check functions are
only exported in upstream OpenSSL because it's a library from the 90s
and they don't have a concept of "unexported". Also, by using the EVP
functions, OpenSSL/BoringSSL can do a better job of being constant-time.
Since there aren't any obvious tests for checking that the signtaure
verification still works, I tested with the code in the referenced
paste, which includes both the old and new verification functions and
checks that they both work on a sample signature. (And I also checked
that they both fail when a bit in the signature is changed.)
https://paste.googleplex.com/5747976139964416
(cherry picked from commit 4f01ef23d1)
Change-Id: Iae7409c53eeea9c3892a32c180d7181d72467dcb
42 lines
1.3 KiB
Makefile
42 lines
1.3 KiB
Makefile
# ----------------------------------------------------------------
|
|
# Builds libcdm.a
|
|
#
|
|
LOCAL_PATH := $(call my-dir)
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_C_INCLUDES := \
|
|
vendor/widevine/libwvdrmengine/cdm/core/include \
|
|
vendor/widevine/libwvdrmengine/cdm/include \
|
|
vendor/widevine/libwvdrmengine/oemcrypto/include \
|
|
vendor/widevine/libwvdrmengine/third_party/stringencoders/src
|
|
|
|
LOCAL_C_INCLUDES += \
|
|
external/protobuf/src
|
|
|
|
LOCAL_STATIC_LIBRARIES := libcdm_protos libcrypto_static
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(cdm_proto_gen_headers)
|
|
|
|
SRC_DIR := src
|
|
CORE_SRC_DIR := core/src
|
|
LOCAL_SRC_FILES := \
|
|
$(CORE_SRC_DIR)/buffer_reader.cpp \
|
|
$(CORE_SRC_DIR)/cdm_engine.cpp \
|
|
$(CORE_SRC_DIR)/cdm_session.cpp \
|
|
$(CORE_SRC_DIR)/certificate_provisioning.cpp \
|
|
$(CORE_SRC_DIR)/crypto_session.cpp \
|
|
$(CORE_SRC_DIR)/device_files.cpp \
|
|
$(CORE_SRC_DIR)/initialization_data.cpp \
|
|
$(CORE_SRC_DIR)/license.cpp \
|
|
$(CORE_SRC_DIR)/max_res_engine.cpp \
|
|
$(CORE_SRC_DIR)/oemcrypto_adapter_dynamic.cpp \
|
|
$(CORE_SRC_DIR)/policy_engine.cpp \
|
|
$(CORE_SRC_DIR)/privacy_crypto.cpp \
|
|
$(SRC_DIR)/wv_content_decryption_module.cpp
|
|
|
|
LOCAL_MODULE := libcdm
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_MODULE_TARGET_ARCH := arm mips x86
|
|
LOCAL_CXX_STL := stlport
|
|
|
|
include $(BUILD_STATIC_LIBRARY)
|