Compare commits
1 commit
fc3d3fe3b2
...
69dacb8024
Author | SHA1 | Date | |
---|---|---|---|
69dacb8024 |
6 changed files with 13 additions and 16 deletions
|
@ -26,7 +26,7 @@ interface HttpInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun transmit(url: String, tx: ByteArray, headers: Array<String>): HttpResponse
|
fun transmit(url: String, tx: ByteArray, headers: List<String>): HttpResponse
|
||||||
// The LPA is supposed to pass in a list of pkIds supported by the eUICC.
|
// The LPA is supposed to pass in a list of pkIds supported by the eUICC.
|
||||||
// HttpInterface is responsible for providing TrustManager implementations that
|
// HttpInterface is responsible for providing TrustManager implementations that
|
||||||
// validate based on certificates corresponding to these pkIds
|
// validate based on certificates corresponding to these pkIds
|
||||||
|
|
|
@ -26,7 +26,7 @@ class HttpInterfaceImpl(
|
||||||
override fun transmit(
|
override fun transmit(
|
||||||
url: String,
|
url: String,
|
||||||
tx: ByteArray,
|
tx: ByteArray,
|
||||||
headers: Array<String>
|
headers: List<String>
|
||||||
): HttpInterface.HttpResponse {
|
): HttpInterface.HttpResponse {
|
||||||
Log.d(TAG, "transmit(url = $url)")
|
Log.d(TAG, "transmit(url = $url)")
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ class LocalProfileAssistantImpl(
|
||||||
*/
|
*/
|
||||||
var lastHttpException: Exception? = null
|
var lastHttpException: Exception? = null
|
||||||
|
|
||||||
override fun transmit(url: String, tx: ByteArray, headers: Array<String>): HttpResponse =
|
override fun transmit(url: String, tx: ByteArray, headers: List<String>): HttpResponse =
|
||||||
try {
|
try {
|
||||||
httpInterface.transmit(url, tx, headers).also {
|
httpInterface.transmit(url, tx, headers).also {
|
||||||
lastHttpException = null
|
lastHttpException = null
|
||||||
|
|
|
@ -26,7 +26,7 @@ void interface_wrapper_init(JNIEnv *env) {
|
||||||
|
|
||||||
jclass http_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/HttpInterface");
|
jclass http_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/HttpInterface");
|
||||||
method_http_transmit = (*env)->GetMethodID(env, http_class, "transmit",
|
method_http_transmit = (*env)->GetMethodID(env, http_class, "transmit",
|
||||||
"(Ljava/lang/String;[B[Ljava/lang/String;)Lnet/typeblog/lpac_jni/HttpInterface$HttpResponse;");
|
"(Ljava/lang/String;[BLjava/util/List;)Lnet/typeblog/lpac_jni/HttpInterface$HttpResponse;");
|
||||||
|
|
||||||
jclass resp_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/HttpInterface$HttpResponse");
|
jclass resp_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/HttpInterface$HttpResponse");
|
||||||
field_resp_rcode = (*env)->GetFieldID(env, resp_class, "rcode", "I");
|
field_resp_rcode = (*env)->GetFieldID(env, resp_class, "rcode", "I");
|
||||||
|
@ -95,19 +95,18 @@ http_interface_transmit(struct euicc_ctx *ctx, const char *url, uint32_t *rcode,
|
||||||
jbyteArray txArr = (*env)->NewByteArray(env, (jsize) tx_len);
|
jbyteArray txArr = (*env)->NewByteArray(env, (jsize) tx_len);
|
||||||
(*env)->SetByteArrayRegion(env, txArr, 0, (jsize) tx_len, (const jbyte *) tx);
|
(*env)->SetByteArrayRegion(env, txArr, 0, (jsize) tx_len, (const jbyte *) tx);
|
||||||
|
|
||||||
int num_headers = 0;
|
jobject header_list = new_array_list(env);
|
||||||
while (headers[num_headers] != NULL) {
|
jclass header_list_class = (*env)->GetObjectClass(env, header_list);
|
||||||
num_headers++;
|
jmethodID add_header = (*env)->GetMethodID(env, header_list_class, "add", "(Ljava/lang/Object;)Z");
|
||||||
}
|
|
||||||
jobjectArray headersArr = (*env)->NewObjectArray(env, num_headers, string_class, NULL);
|
for (int i = 0; headers[i] != NULL; i++) {
|
||||||
for (int i = 0; i < num_headers; i++) {
|
|
||||||
jstring header = toJString(env, headers[i]);
|
jstring header = toJString(env, headers[i]);
|
||||||
(*env)->SetObjectArrayElement(env, headersArr, i, header);
|
(*env)->CallBooleanMethod(env, header_list, add_header, header);
|
||||||
(*env)->DeleteLocalRef(env, header);
|
(*env)->DeleteLocalRef(env, header);
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject ret = (*env)->CallObjectMethod(env, LPAC_JNI_CTX(ctx)->http_interface,
|
jobject ret = (*env)->CallObjectMethod(env, LPAC_JNI_CTX(ctx)->http_interface,
|
||||||
method_http_transmit, jurl, txArr, headersArr);
|
method_http_transmit, jurl, txArr, header_list);
|
||||||
LPAC_JNI_EXCEPTION_RETURN;
|
LPAC_JNI_EXCEPTION_RETURN;
|
||||||
*rcode = (*env)->GetIntField(env, ret, field_resp_rcode);
|
*rcode = (*env)->GetIntField(env, ret, field_resp_rcode);
|
||||||
jbyteArray rxArr = (jbyteArray) (*env)->GetObjectField(env, ret, field_resp_data);
|
jbyteArray rxArr = (jbyteArray) (*env)->GetObjectField(env, ret, field_resp_data);
|
||||||
|
@ -116,7 +115,7 @@ http_interface_transmit(struct euicc_ctx *ctx, const char *url, uint32_t *rcode,
|
||||||
(*env)->GetByteArrayRegion(env, rxArr, 0, (jsize) *rx_len, (jbyte *) *rx);
|
(*env)->GetByteArrayRegion(env, rxArr, 0, (jsize) *rx_len, (jbyte *) *rx);
|
||||||
(*env)->DeleteLocalRef(env, txArr);
|
(*env)->DeleteLocalRef(env, txArr);
|
||||||
(*env)->DeleteLocalRef(env, rxArr);
|
(*env)->DeleteLocalRef(env, rxArr);
|
||||||
(*env)->DeleteLocalRef(env, headersArr);
|
(*env)->DeleteLocalRef(env, header_list);
|
||||||
(*env)->DeleteLocalRef(env, ret);
|
(*env)->DeleteLocalRef(env, ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ static jclass version_class;
|
||||||
static jmethodID version_constructor;
|
static jmethodID version_constructor;
|
||||||
|
|
||||||
static jstring empty_string;
|
static jstring empty_string;
|
||||||
jclass string_class;
|
static jclass string_class;
|
||||||
static jmethodID string_constructor;
|
static jmethodID string_constructor;
|
||||||
|
|
||||||
jobject bind_static_field(JNIEnv *env, jclass clazz, const char *name, const char *sig) {
|
jobject bind_static_field(JNIEnv *env, jclass clazz, const char *name, const char *sig) {
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
#define HASH_SET_CLASS "java/util/HashSet"
|
#define HASH_SET_CLASS "java/util/HashSet"
|
||||||
#define ARRAY_LIST_CLASS "java/util/ArrayList"
|
#define ARRAY_LIST_CLASS "java/util/ArrayList"
|
||||||
|
|
||||||
jclass string_class;
|
|
||||||
|
|
||||||
void lpac_convertor_init(JNIEnv *env);
|
void lpac_convertor_init(JNIEnv *env);
|
||||||
|
|
||||||
jstring toJString(JNIEnv *env, const char *pat);
|
jstring toJString(JNIEnv *env, const char *pat);
|
||||||
|
|
Loading…
Add table
Reference in a new issue