diff --git a/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java b/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java index 64c2c9f005d589f753aa79872e05a6a5ab489a86..e0c9162bdeb62b77b088effe1a67defac491a7ad 100644 --- a/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java +++ b/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java @@ -6,6 +6,7 @@ import net.jami.jams.ca.workers.csr.utils.CertificateSigner; import net.jami.jams.ca.workers.csr.utils.ExtensionLibrary; import net.jami.jams.common.objects.devices.Device; import net.jami.jams.common.objects.user.User; +import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.cert.X509v3CertificateBuilder; import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder; @@ -16,6 +17,9 @@ import java.util.Date; @Slf4j public class DeviceBuilder { + private static final ASN1ObjectIdentifier DEVICE_ID_FIELD = new ASN1ObjectIdentifier("0.9.2342.19200300.100.1.1"); + private static final ASN1ObjectIdentifier DEVICE_CN = new ASN1ObjectIdentifier("2.5.4.3"); + public static Device generateDevice(User user, Device device){ try { X509v3CertificateBuilder builder = new X509v3CertificateBuilder( @@ -27,6 +31,11 @@ public class DeviceBuilder { device.getCertificationRequest().getSubjectPublicKeyInfo() ); device.setCertificate(CertificateSigner.signCertificate(user.getPrivateKey(),builder, ExtensionLibrary.deviceExtensions)); + for(int i=0; i < device.getCertificationRequest().getSubject().getRDNs().length;i++) { + if(device.getCertificationRequest().getSubject().getRDNs()[i].getFirst().getType().equals(DEVICE_ID_FIELD)){ + device.setDeviceId(device.getCertificationRequest().getSubject().getRDNs()[i].getFirst().getValue().toString()); + } + } //kill off the certification request it's useless. device.setCertificationRequest(null); return device; diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java index 541e78a81bf1b869e3e7fa22124a8d38df57ae07..90ad9bd9169a08a538f676bba238b18954b9a118 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java @@ -18,8 +18,6 @@ import static net.jami.jams.server.Server.*; public class RegisterDeviceFlow { public static DeviceRegistrationResponse registerDevice(String username, DeviceRegistrationRequest registrationRequest){ - //User always exists now because we auto-create on log-in - //and search. try { StatementList statementList = new StatementList(); statementList.addStatement(new StatementElement("username", "=", username, ""));