|
@@ -17,9 +17,6 @@ jstring empty_string;
|
|
|
jclass string_class;
|
|
jclass string_class;
|
|
|
jmethodID string_constructor;
|
|
jmethodID string_constructor;
|
|
|
|
|
|
|
|
-jclass euicc_info2_class;
|
|
|
|
|
-jmethodID euicc_info2_constructor;
|
|
|
|
|
-
|
|
|
|
|
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|
|
jvm = vm;
|
|
jvm = vm;
|
|
|
interface_wrapper_init();
|
|
interface_wrapper_init();
|
|
@@ -31,11 +28,6 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|
|
string_constructor = (*env)->GetMethodID(env, string_class, "<init>",
|
|
string_constructor = (*env)->GetMethodID(env, string_class, "<init>",
|
|
|
"([BLjava/lang/String;)V");
|
|
"([BLjava/lang/String;)V");
|
|
|
|
|
|
|
|
- euicc_info2_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/EuiccInfo2");
|
|
|
|
|
- euicc_info2_class = (*env)->NewGlobalRef(env, euicc_info2_class);
|
|
|
|
|
- euicc_info2_constructor = (*env)->GetMethodID(env, euicc_info2_class, "<init>",
|
|
|
|
|
- "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;[Ljava/lang/String;)V");
|
|
|
|
|
-
|
|
|
|
|
const char _unused[1];
|
|
const char _unused[1];
|
|
|
empty_string = (*env)->NewString(env, _unused, 0);
|
|
empty_string = (*env)->NewString(env, _unused, 0);
|
|
|
empty_string = (*env)->NewGlobalRef(env, empty_string);
|
|
empty_string = (*env)->NewGlobalRef(env, empty_string);
|
|
@@ -233,58 +225,38 @@ Java_net_typeblog_lpac_1jni_LpacJni_es10cDeleteProfile(JNIEnv *env, jobject thiz
|
|
|
return ret;
|
|
return ret;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-JNIEXPORT jobject JNICALL
|
|
|
|
|
|
|
+JNIEXPORT jlong JNICALL
|
|
|
Java_net_typeblog_lpac_1jni_LpacJni_es10cexGetEuiccInfo2(JNIEnv *env, jobject thiz, jlong handle) {
|
|
Java_net_typeblog_lpac_1jni_LpacJni_es10cexGetEuiccInfo2(JNIEnv *env, jobject thiz, jlong handle) {
|
|
|
struct euicc_ctx *ctx = (struct euicc_ctx *) handle;
|
|
struct euicc_ctx *ctx = (struct euicc_ctx *) handle;
|
|
|
- struct es10c_ex_euiccinfo2 info = {0};
|
|
|
|
|
- jobjectArray euiccCiPKIdListForVerification = NULL;
|
|
|
|
|
- jobjectArray euiccCiPKIdListForSigning = NULL;
|
|
|
|
|
- jstring sas_accreditation_number = NULL;
|
|
|
|
|
- jstring global_platform_version = NULL;
|
|
|
|
|
- jstring euicc_firmware_version = NULL;
|
|
|
|
|
- jstring profile_version = NULL;
|
|
|
|
|
- jstring pp_version = NULL;
|
|
|
|
|
- jobject ret = NULL;
|
|
|
|
|
- char **curr = NULL;
|
|
|
|
|
- int count = 0;
|
|
|
|
|
-
|
|
|
|
|
- if (es10c_ex_get_euiccinfo2(ctx, &info) < 0)
|
|
|
|
|
- goto out;
|
|
|
|
|
-
|
|
|
|
|
- profile_version = toJString(env, info.profileVersion);
|
|
|
|
|
- euicc_firmware_version = toJString(env, info.euiccFirmwareVer);
|
|
|
|
|
- global_platform_version = toJString(env, info.globalplatformVersion);
|
|
|
|
|
- sas_accreditation_number = toJString(env, info.sasAcreditationNumber);
|
|
|
|
|
- pp_version = toJString(env, info.ppVersion);
|
|
|
|
|
-
|
|
|
|
|
- count = LPAC_JNI_NULL_TERM_LIST_COUNT(info.euiccCiPKIdListForSigning, curr);
|
|
|
|
|
- euiccCiPKIdListForSigning = (*env)->NewObjectArray(env, count, string_class, NULL);
|
|
|
|
|
- LPAC_JNI_NULL_TERM_LIST_FOREACH(info.euiccCiPKIdListForSigning, curr, {
|
|
|
|
|
- (*env)->SetObjectArrayElement(env, euiccCiPKIdListForSigning, i, toJString(env, *curr));
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- count = LPAC_JNI_NULL_TERM_LIST_COUNT(info.euiccCiPKIdListForVerification, curr);
|
|
|
|
|
- euiccCiPKIdListForVerification = (*env)->NewObjectArray(env, count, string_class, NULL);
|
|
|
|
|
- LPAC_JNI_NULL_TERM_LIST_FOREACH(info.euiccCiPKIdListForVerification, curr, {
|
|
|
|
|
- (*env)->SetObjectArrayElement(env, euiccCiPKIdListForVerification, i,
|
|
|
|
|
- toJString(env, *curr));
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- ret = (*env)->NewObject(env, euicc_info2_class, euicc_info2_constructor,
|
|
|
|
|
- profile_version, euicc_firmware_version,
|
|
|
|
|
- global_platform_version,
|
|
|
|
|
- sas_accreditation_number, pp_version,
|
|
|
|
|
- info.extCardResource.freeNonVolatileMemory,
|
|
|
|
|
- info.extCardResource.freeVolatileMemory,
|
|
|
|
|
- euiccCiPKIdListForSigning,
|
|
|
|
|
- euiccCiPKIdListForVerification);
|
|
|
|
|
-
|
|
|
|
|
- out:
|
|
|
|
|
- (*env)->DeleteLocalRef(env, profile_version);
|
|
|
|
|
- (*env)->DeleteLocalRef(env, euicc_firmware_version);
|
|
|
|
|
- (*env)->DeleteLocalRef(env, global_platform_version);
|
|
|
|
|
- (*env)->DeleteLocalRef(env, sas_accreditation_number);
|
|
|
|
|
- (*env)->DeleteLocalRef(env, pp_version);
|
|
|
|
|
- es10c_ex_euiccinfo2_free(&info);
|
|
|
|
|
- return ret;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ struct es10c_ex_euiccinfo2 *info = malloc(sizeof(struct es10c_ex_euiccinfo2));
|
|
|
|
|
+
|
|
|
|
|
+ if (es10c_ex_get_euiccinfo2(ctx, info) < 0) {
|
|
|
|
|
+ free(info);
|
|
|
|
|
+ return 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return (jlong) info;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+JNIEXPORT jstring JNICALL
|
|
|
|
|
+Java_net_typeblog_lpac_1jni_LpacJni_stringDeref(JNIEnv *env, jobject thiz, jlong curr) {
|
|
|
|
|
+ return toJString(env, *((char **) curr));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void lpac_jni_euiccinfo2_free(struct es10c_ex_euiccinfo2 *info) {
|
|
|
|
|
+ es10c_ex_euiccinfo2_free(info);
|
|
|
|
|
+ free(info);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_NULL_TERM_LIST_NEXT(char*, stringArr)
|
|
|
|
|
+LPAC_JNI_STRUCT_FREE(struct es10c_ex_euiccinfo2, euiccInfo2, lpac_jni_euiccinfo2_free)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_STRING(struct es10c_ex_euiccinfo2, euiccInfo2, profileVersion, ProfileVersion)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_STRING(struct es10c_ex_euiccinfo2, euiccInfo2, euiccFirmwareVer, EuiccFirmwareVersion)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_STRING(struct es10c_ex_euiccinfo2, euiccInfo2, globalplatformVersion, GlobalPlatformVersion)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_STRING(struct es10c_ex_euiccinfo2, euiccInfo2, sasAcreditationNumber, SasAcreditationNumber)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_STRING(struct es10c_ex_euiccinfo2, euiccInfo2, ppVersion, PpVersion)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_LONG(struct es10c_ex_euiccinfo2, euiccInfo2, extCardResource.freeNonVolatileMemory, FreeNonVolatileMemory)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_LONG(struct es10c_ex_euiccinfo2, euiccInfo2, extCardResource.freeVolatileMemory, FreeVolatileMemory)
|
|
|
|
|
+
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_LONG(struct es10c_ex_euiccinfo2, euiccInfo2, euiccCiPKIdListForSigning, EuiccCiPKIdListForSigning)
|
|
|
|
|
+LPAC_JNI_STRUCT_GETTER_LONG(struct es10c_ex_euiccinfo2, euiccInfo2, euiccCiPKIdListForVerification, EuiccCiPKIdListForVerification)
|