mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge pull request 'Add the logic to save device id to certificate DB' (#90) from inosh/support-carbon-device-mgt:store-certificate-device-id into support-5.0.24
Reviewed-on: https://repository.entgra.net/support/support-carbon-device-mgt/pulls/90
This commit is contained in:
commit
26e7f68cc1
@ -25,6 +25,15 @@ public class Certificate {
|
||||
X509Certificate certificate;
|
||||
int tenantId;
|
||||
String tenantDomain;
|
||||
String deviceIdentifier;
|
||||
|
||||
public String getDeviceIdentifier() {
|
||||
return deviceIdentifier;
|
||||
}
|
||||
|
||||
public void setDeviceIdentifier(String deviceIdentifier) {
|
||||
this.deviceIdentifier = deviceIdentifier;
|
||||
}
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
|
||||
@ -41,6 +41,17 @@ public interface CertificateDAO {
|
||||
void addCertificate(List<Certificate> certificate)
|
||||
throws CertificateManagementDAOException;
|
||||
|
||||
/**
|
||||
* This can be used to store a certificate in the database, where it will be stored against the serial number
|
||||
* of the certificate.
|
||||
*
|
||||
* @param certificate Holds the certificate and relevant details.
|
||||
* @throws CertificateManagementDAOException
|
||||
*
|
||||
*/
|
||||
void addCertificate(Certificate certificate)
|
||||
throws CertificateManagementDAOException;
|
||||
|
||||
/**
|
||||
* Usage is to obtain a certificate stored in the database by providing the common name.
|
||||
*
|
||||
|
||||
@ -81,6 +81,40 @@ public abstract class AbstractCertificateDAOImpl implements CertificateDAO{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCertificate(Certificate certificate)
|
||||
throws CertificateManagementDAOException {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
stmt = conn.prepareStatement(
|
||||
"INSERT INTO DM_DEVICE_CERTIFICATE (SERIAL_NUMBER, CERTIFICATE, TENANT_ID," +
|
||||
" USERNAME, DEVICE_IDENTIFIER) VALUES (?,?,?,?,?)");
|
||||
PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.
|
||||
getThreadLocalCarbonContext();
|
||||
String username = threadLocalCarbonContext.getUsername();
|
||||
// the serial number of the certificate used for its creation is set as its alias.
|
||||
String serialNumber = certificate.getSerial();
|
||||
if (serialNumber == null || serialNumber.isEmpty()) {
|
||||
serialNumber = String.valueOf(certificate.getCertificate().getSerialNumber());
|
||||
}
|
||||
byte[] bytes = Serializer.serialize(certificate.getCertificate());
|
||||
|
||||
stmt.setString(1, serialNumber);
|
||||
stmt.setBytes(2, bytes);
|
||||
stmt.setInt(3, certificate.getTenantId());
|
||||
stmt.setString(4, username);
|
||||
stmt.setString(5, certificate.getDeviceIdentifier());
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException | IOException e) {
|
||||
throw new CertificateManagementDAOException("Error occurred while saving the " +
|
||||
"certificate. ", e);
|
||||
} finally {
|
||||
CertificateManagementDAOUtil.cleanupResources(stmt, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CertificateResponse retrieveCertificate(String serialNumber)
|
||||
throws CertificateManagementDAOException {
|
||||
|
||||
@ -710,6 +710,30 @@ public class CertificateGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
public void saveCertificate(org.wso2.carbon.certificate.mgt.core.bean.Certificate
|
||||
certificate) throws KeystoreException {
|
||||
|
||||
if (certificate == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
CertificateDAO certificateDAO = CertificateManagementDAOFactory.getCertificateDAO();
|
||||
CertificateManagementDAOFactory.beginTransaction();
|
||||
certificateDAO.addCertificate(certificate);
|
||||
CertificateManagementDAOFactory.commitTransaction();
|
||||
} catch (CertificateManagementDAOException e) {
|
||||
String errorMsg = "Error occurred when saving the generated certificate in database";
|
||||
log.error(errorMsg);
|
||||
CertificateManagementDAOFactory.rollbackTransaction();
|
||||
throw new KeystoreException(errorMsg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String errorMsg = "Error occurred when saving the generated certificate in database";
|
||||
log.error(errorMsg);
|
||||
throw new KeystoreException(errorMsg, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void saveCertInKeyStore(List<org.wso2.carbon.certificate.mgt.core.bean.Certificate> certificate)
|
||||
throws KeystoreException {
|
||||
|
||||
@ -845,11 +869,10 @@ public class CertificateGenerator {
|
||||
|
||||
org.wso2.carbon.certificate.mgt.core.bean.Certificate certificate =
|
||||
new org.wso2.carbon.certificate.mgt.core.bean.Certificate();
|
||||
List<org.wso2.carbon.certificate.mgt.core.bean.Certificate> certificates = new ArrayList<>();
|
||||
certificate.setTenantId(PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId());
|
||||
certificate.setCertificate(issuedCert);
|
||||
certificates.add(certificate);
|
||||
saveCertInKeyStore(certificates);
|
||||
certificate.setDeviceIdentifier(commonName);
|
||||
saveCertificate(certificate);
|
||||
|
||||
} catch (OperatorCreationException e) {
|
||||
String errorMsg = "Error creating the content signer";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user