我正在尝试生成RSA密钥对,以通过Android上的BoringSSL
使用RSA加密。
运行项目时出现错误:error: undefined reference to 'RSA_generate_key'
。
我尝试通过它链接静态库,但仍然出现另一个错误:
add_library(crypto STATIC IMPORTED)
set_property(TARGET crypto PROPERTY IMPORTED_LOCATION ../../../../boringssl/lib/libcrypto_x86.a)
target_link_libraries(crypto)
include_directories(../../../../boringssl/include)
这是cpp文件:
#include <jni.h>
#include <string>
#include <android/log.h>
#include <openssl/rsa.h>
#include <openssl/base.h>
#define KEY_LENGTH 515
#define PUBLIC_EXPONENT 59 //Public exponent should be a prime number.
#define PUBLIC_KEY_PEM 1
#define PRIVATE_KEY_PEM 0
extern "C" JNIEXPORT jstring JNICALL
Java_sinhpn_testt_myapplication1_Mainactivity_stringFromJNI(
JNIEnv *env,jobject /* this */) {
std::string hello = "Hello from C++";
__android_log_print(ANDROID_LOG_INFO,"Sinhpn","--->>>> Hello World!");
// char public_key_pem[KEY_LENGTH] = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIy2PKth95GlY6m2FFQ5ExdQwY2FVm/eSKCyv0in+CnV+WEHZkqBTX/XAzvmum6FLi2zhmwFUXqx0Zn4powd1accAwEAAQ==";
RSA *keyPair = RSA_generate_key(KEY_LENGTH,PUBLIC_EXPONENT,NULL,NULL);
return env->NewStringUTF(hello.c_str());
}
我已经研究了许多小时,但无法解决我的问题。有解决这个问题的建议吗?
非常感谢!