public anywheresoftware.b4a.objects.collections.Map ReplaceCertificate(String CertificateSerialNumberSRS) {
anywheresoftware.b4a.objects.collections.Map myMap = new anywheresoftware.b4a.objects.collections.Map();
myMap.Initialize();
WEBSRM_ResponseWrapper mWEBSRM_ResponseWrapper = new WEBSRM_ResponseWrapper();
try {
String CSR = CertificateCreation();
String jSon = UtilesJSON.getJsonCertificate(ValeursPossibles.Modif.REM, CSR, CertificateSerialNumberSRS);
List<Entry<String, String>> HTTPHeadersDicti = getHTTPHeaders();
WEBSRM_Response WEB_SRM_Response = UtilesJSON.CertificatesRequest(ValeursPossibles.Modif.REM,
HTTPHeadersDicti, jSon, _ALIAS_CERTIFICAT.SEV, KEY_PAIRS_DIR, changeItPass,TimeOutSeconds);
mWEBSRM_ResponseWrapper.setObject(WEB_SRM_Response);
myMap.Put("WEB_SRM_Response", mWEBSRM_ResponseWrapper);
if (WEB_SRM_Response.ResponseExceptionWEBSRM == null) {
if (WEB_SRM_Response.ResponseJsonWEBSRM.contains("listErr")) {
myMap.Put("SUCCESS", false);
myMap.Put("listErr", true);
} else {
if (WEB_SRM_Response.ResponseJsonWEBSRM != null && !WEB_SRM_Response.ResponseJsonWEBSRM.isEmpty()) {
ResponseCertificats responseCertificates = UtilesJSON
.parseResponseCertificates(WEB_SRM_Response.ResponseJsonWEBSRM);
ResponseCertificatsWrapper mResponseCertificats = new ResponseCertificatsWrapper();
mResponseCertificats.setObject(responseCertificates);
myMap.Put("SUCCESS", true);
myMap.Put("ResponseCertificats", mResponseCertificats);
Path KeystorePath = Paths.get(KEY_PAIRS_DIR, "CHICPOS_KEYSTORE.p12");
if (KeystorePath.toFile().exists()) {
KeystorePath.toFile().delete();
}
_IDAPPRL = responseCertificates.IdApprl;
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate certPSI = (X509Certificate) cf.generateCertificate(
new ByteArrayInputStream(responseCertificates.CertificatMEVWEB.getBytes()));
Certificate certSEV = cf.generateCertificate(
new ByteArrayInputStream(responseCertificates.Certificat.getBytes()));
KeyStore ks = KeyStore.getInstance("PKCS12");
char[] password = changeItPass.toCharArray();
ks.load(null, password);
ks.deleteEntry(_ALIAS_CERTIFICAT.PSI);
ks.deleteEntry(_ALIAS_CERTIFICAT.SEV);
ks.setCertificateEntry(_ALIAS_CERTIFICAT.PSI, certPSI);
KeyPair keyPair = UtilesECDSA.loadKeyPairFromFile(_KeyPairName, KEY_PAIRS_DIR,changeItPass);
PrivateKey privateKey = keyPair.getPrivate();
ks.setKeyEntry(_ALIAS_CERTIFICAT.SEV, privateKey, changeItPass.toCharArray(),
new Certificate[] { certSEV });
X509Certificate cert = (X509Certificate) certSEV;
BigInteger serialNumber = cert.getSerialNumber();
String serialNumberHex = serialNumber.toString(16).toUpperCase();
if (serialNumberHex.length() % 2 != 0) {
serialNumberHex = "0" + serialNumberHex;
}
_CertificateSerialNumberSRS = serialNumberHex;
FileOutputStream fos = new FileOutputStream(KeystorePath.toFile());
ks.store(fos, password);
fos.close();
}
}
} else if (WEB_SRM_Response.ResponseExceptionWEBSRM != null) {
ba.setLastException(WEB_SRM_Response.ResponseExceptionWEBSRM);
myMap.Put("SUCCESS", false);
myMap.Put("listErr", false);
}
} catch (Exception e) {
ba.setLastException(e);
mWEBSRM_ResponseWrapper.setResponseExceptionWEBSRM (e);
myMap.Put("SUCCESS", false);
myMap.Put("listErr", false);
}
myMap.Put("WEB_SRM_Response", mWEBSRM_ResponseWrapper);
return myMap;
}