(env: &mut JNIEnv, j_config_dir: &JString, j_user_agent: &JString, class_cache: Arc<ClassCache>)
| 44 | jni::sys::JNI_VERSION_1_6 |
| 45 | } |
| 46 | |
| 47 | fn initialize(env: &mut JNIEnv, j_config_dir: &JString, j_user_agent: &JString, class_cache: Arc<ClassCache>) -> anyhow::Result<Global> { |
| 48 | let runtime = Runtime::new().expect("Failed to create tokio runtime"); |
| 49 | let _runtime_guard = runtime.enter(); |
| 50 | let config_dir = Utf8JavaStr::new(env, j_config_dir, "j_config_dir", "INsGbyhM")?; |
| 51 | let user_agent = Utf8JavaStr::new(env, j_user_agent, "j_user_agent", "NXCS11u3")?; |
| 52 | let log_dir = config_dir.as_path().join(RUST_LOG_DIR_NAME); |
| 53 | let log_persistence = crate::logging::init(tracing_android::layer("ObscuraNative")?, Some(&log_dir)); |
| 54 | rustls::crypto::aws_lc_rs::default_provider() |
| 55 | .install_default() |
| 56 | .map_err(|_| anyhow::format_err!("failed to install crypto provider"))?; |
| 57 | let jvm = Arc::new(env.get_java_vm().context("failed to get JavaVM")?); |
| 58 | let os_impl = Arc::new(AndroidOsImpl::new(jvm, class_cache.clone())); |
| 59 | let manager = Manager::new( |
| 60 | config_dir.as_path().into(), |
| 61 | // TODO: https://linear.app/soveng/issue/OBS-2699/android-keychain-equivalent |
| 62 | WgKeyStore::Plaintext, |
| 63 | user_agent.as_str().into(), |
| 64 | os_impl.clone(), |
| 65 | os_impl.network_interface(), |
| 66 | log_persistence, |
| 67 | true, |
| 68 | )?; |
| 69 | Ok(Global { manager, os_impl, runtime, class_cache }) |
| 70 | } |
| 71 |
no test coverage detected