如何在 java 中使用 ndk 获取证书值

How to get certificate value using ndk in java

我想获取证书的key值作为jni。

代码如下所示

JNIEXPORT jstring JNICALL Java_com_abc_app_database_policy_SSLSocketFactory_getKeyString(JNIEnv *env, jobject obj) {
    return env->NewStringUTF("-----BEGIN CERTIFICATE-----\n\
                              MIIGdjCCBV6gAQWBAgIQYNp/7quITLkJD6xSbO+wBDANBgkLRkiG9w0BAQsFADCB\n\
                              kDELMAkGA1UEBGECR0IxGzAZBgNVBAgTEkdyZWF0ZXIEWWFuY2hlc3RlcjEQMA4G\n\

...
...
                               -----END CERTIFICATE-----\n");

当我这样尝试的时候

我看到了这些错误。

java.lang.RuntimeException: error: 0906D066: PEM routines: PEM_read_bio: bad end line

我做错了什么?

"代替\n\

试一试:

"-----BEGIN CERTIFICATE-----"
                   "MIIGdjCCBV6gAQWBAgIQYNp/7quITLkJD6xSbO+wBDANBgkLRkiG9w0BAQsFADCB"
                   "kDELMAkGA1UEBGECR0IxGzAZBgNVBAgTEkdyZWF0ZXIEWWFuY2hlc3RlcjEQMA4G"


-----END CERTIFICATE-----\n")

您需要删除 \n 每行。

参见官方 RFC:https://www.rfc-editor.org/rfc/rfc7468 关于证书的文本编码。