Illustrates client configuration to support mutual authentication, as well as other APIs related to certificate handling:
//Step 1: Set the CA certificates trusted by the client for mutual authentication CertificateFactory certificate_factory; X509Certificate serverCA = null; try { certificate_factory = CertificateFactory .getInstance("X.509"); FileInputStream file_inputstream = new FileInputStream("/data/data/" + this.getPackageName() + "/server.cer"); serverCA = (X509Certificate) certificate_factory .generateCertificate(file_inputstream); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } ........ ConnectionProperties pro = app.getConnectionProperties(); pro.setTrustedCertificates(new X509Certificate[] {serverCA}); //Step 2: Get the login certificate from a certificate store CertificateStore myStore = CertificateStore.getDefault(); LoginCertificate lc = myStore.getSignedCertificateFromFile("/data/data/com.test/client1-old.pfx", "changeit"); Application app = Application.getInstance(); app.setApplicationContext(this); app.setApplicationIdentifier("customer.service"); ConnectionProperties pro = app.getConnectionProperties(); pro.setLoginCertificate(lc); //Step 3: Register the application pro.setServerName("10.0.0.2"); pro.setNetworkProtocol("HTTPS"); pro.setFarmId("0"); pro.setUrlSuffix(""); pro.setSecurityConfiguration("cert"); if (Application.getInstance().getRegistrationStatus() == RegistrationStatus.UNREGISTERED) { Application.getInstance().registerApplication(100); } ...... //Step 4: Get ready to synchronize DsTestDB.getSynchronizationProfile().setNetworkProtocol("HTTPS"); DsTestDB.getSynchronizationProfile().setPortNumber(2482); DsTestDB.getSynchronizationProfile().setServerName("10.0.0.2"); DsTestDB.getSynchronizationProfile().setCertificate(lc); DsTestDB.getSynchronizationProfile().setNetworkStreamParams("trusted_certificate=serverCA.crt"); //Step 5: Synchronize ....... DsTestDB.synchronize();