Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 82 additions & 80 deletions android/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,99 +6,101 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 17)
set(BUILD_DIR ${CMAKE_SOURCE_DIR}/build)

if(${REACT_NATIVE_MINOR_VERSION} GREATER_EQUAL 71)
# Consume shared libraries and headers from prefabs
find_package(ReactAndroid REQUIRED CONFIG)
set(CPP_DIR ${CMAKE_SOURCE_DIR}/androidcpp)

include_directories(
${PACKAGE_NAME}
"./androidcpp"
"../cpp"
)
if(${ANDROID_ABI} STREQUAL "arm64-v8a")
set(LIB_ARCH "arm64-v8a")
elseif(${ANDROID_ABI} STREQUAL "armeabi-v7a")
set(LIB_ARCH "armeabi-v7a")
elseif(${ANDROID_ABI} STREQUAL "x86")
set(LIB_ARCH "x86")
elseif(${ANDROID_ABI} STREQUAL "x86_64")
set(LIB_ARCH "x86_64")
else()
set(LIB_ARCH "arm64-v8a") # Default fallback
endif()

file(GLOB LIBRN_DIR "${BUILD_DIR}/react-native-0*/jni/${ANDROID_ABI}")
message(STATUS "LIBRN_DIR: ${LIBRN_DIR}")
set(OPENSSL_LIB_DIR ${CPP_DIR}/libs/${LIB_ARCH})
set(OPENSSL_INCLUDE_DIR ${CPP_DIR}/include)

add_library(
${PACKAGE_NAME}
SHARED
./androidcpp/mediator.cpp
./cpp-adapter.cpp
../cpp/crypto.cpp
../cpp/decryptor.cpp
)

find_library(
LOG_LIB
log
)
add_library(openssl_crypto STATIC IMPORTED)
set_target_properties(openssl_crypto PROPERTIES
IMPORTED_LOCATION ${OPENSSL_LIB_DIR}/libcrypto.a
)

find_library(
REACT_NATIVE_JNI_LIB
reactnativejni
PATHS ${LIBRN_DIR}
NO_CMAKE_FIND_ROOT_PATH
)
find_package(ReactAndroid REQUIRED CONFIG)

set_target_properties(
${PACKAGE_NAME} PROPERTIES
CXX_STANDARD 17
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON
)
include_directories(
${PACKAGE_NAME}
"./androidcpp"
"../cpp"
${OPENSSL_INCLUDE_DIR}
)

find_package(openssl REQUIRED CONFIG)
file(GLOB LIBRN_DIR "${BUILD_DIR}/react-native-0*/jni/${ANDROID_ABI}")
message(STATUS "LIBRN_DIR: ${LIBRN_DIR}")

target_link_libraries(
${PACKAGE_NAME}
${LOG_LIB}
ReactAndroid::jsi
android
openssl::crypto
)
if(${REACT_NATIVE_MINOR_VERSION} GREATER_EQUAL 76)
target_link_libraries(
${PACKAGE_NAME}
ReactAndroid::reactnative
)
else()
target_link_libraries(
${PACKAGE_NAME}
ReactAndroid::reactnativejni
ReactAndroid::react_nativemodule_core
)
endif()
else()
add_library(
${PACKAGE_NAME}
SHARED
../../react-native/ReactCommon/jsi/jsi/jsi.cpp
./androidcpp/mediator.cpp
./cpp-adapter.cpp
../cpp/crypto.cpp
../cpp/decryptor.cpp
)
add_library(
${PACKAGE_NAME}
SHARED
./androidcpp/mediator.cpp
./cpp-adapter.cpp
../cpp/crypto.cpp
../cpp/decryptor.cpp
)

include_directories(
../../react-native/React
../../react-native/React/Base
../../react-native/ReactCommon/jsi
./cpp
../cpp
)
find_library(
LOG_LIB
log
)

set_target_properties(
${PACKAGE_NAME} PROPERTIES
CXX_STANDARD 17
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON
)
find_library(
REACT_NATIVE_JNI_LIB
reactnativejni
PATHS ${LIBRN_DIR}
NO_CMAKE_FIND_ROOT_PATH
)

set_target_properties(
${PACKAGE_NAME} PROPERTIES
CXX_STANDARD 17
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON
)

# Include directories cho target
target_include_directories(${PACKAGE_NAME} PRIVATE
${OPENSSL_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}/openssl
${CPP_DIR}
./androidcpp
../cpp
)

find_package(openssl REQUIRED CONFIG)
target_link_libraries(
${PACKAGE_NAME}
${LOG_LIB}
ReactAndroid::jsi
android
openssl_crypto
z
dl
)

if(${REACT_NATIVE_MINOR_VERSION} GREATER_EQUAL 76)
target_link_libraries(
${PACKAGE_NAME}
android
openssl::crypto
ReactAndroid::reactnative
)
else()
target_link_libraries(
${PACKAGE_NAME}
ReactAndroid::reactnativejni
ReactAndroid::react_nativemodule_core
)
endif()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-z,max-page-size=16384")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,max-page-size=16384")

111 changes: 111 additions & 0 deletions android/androidcpp/include/openssl/aes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/*
* Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/

#ifndef OPENSSL_AES_H
# define OPENSSL_AES_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_AES_H
# endif

# include <openssl/opensslconf.h>

# include <stddef.h>
# ifdef __cplusplus
extern "C" {
# endif

# define AES_BLOCK_SIZE 16

# ifndef OPENSSL_NO_DEPRECATED_3_0

# define AES_ENCRYPT 1
# define AES_DECRYPT 0

# define AES_MAXNR 14


/* This should be a hidden type, but EVP requires that the size be known */
struct aes_key_st {
# ifdef AES_LONG
unsigned long rd_key[4 * (AES_MAXNR + 1)];
# else
unsigned int rd_key[4 * (AES_MAXNR + 1)];
# endif
int rounds;
};
typedef struct aes_key_st AES_KEY;

# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 const char *AES_options(void);
OSSL_DEPRECATEDIN_3_0
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_decrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num);

/* NB: the IV is _two_ blocks long */
OSSL_DEPRECATEDIN_3_0
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, const int enc);
/* NB: the IV is _four_ blocks long */
OSSL_DEPRECATEDIN_3_0
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key, const AES_KEY *key2,
const unsigned char *ivec, const int enc);
OSSL_DEPRECATEDIN_3_0
int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in,
unsigned int inlen);
OSSL_DEPRECATEDIN_3_0
int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in,
unsigned int inlen);
# endif


# ifdef __cplusplus
}
# endif

#endif
Loading
Loading