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();