Sample Code: Mutual Authentication

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