From 139df850b117fb7e7535e87a685b79ac6bf16489 Mon Sep 17 00:00:00 2001 From: TINCU Sebastian-Ion <Sebastian-Ion.TINCU@ext.ec.europa.eu> Date: Thu, 18 Oct 2018 13:31:53 +0200 Subject: [PATCH] EDELIVERY-3687 SMP UI Add/Edit user Replace fingerprint with serial number. --- .../user-details-dialog.component.css | 2 +- .../user-details-dialog.component.html | 4 +-- .../user-details-dialog.component.ts | 14 +++++----- .../edelivery/smp/data/ui/CertificateRO.java | 9 ------- .../smp/services/ui/UIUserService.java | 26 ------------------- 5 files changed, 9 insertions(+), 46 deletions(-) diff --git a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.css b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.css index 3a1fb9487..7bff79416 100644 --- a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.css +++ b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.css @@ -7,7 +7,7 @@ cursor: pointer; } -.username, .role, .password, .password-confirmation, .certificate-subject, .certificate-issuer, .certificate-fingerprint { +.username, .role, .password, .password-confirmation, .certificate-subject, .certificate-issuer, .certificate-serial-number { width: 100%; } diff --git a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.html b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.html index ec24fc45b..cafe47646 100644 --- a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.html +++ b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.html @@ -60,8 +60,8 @@ <mat-form-field class="certificate-issuer"> <input matInput placeholder="Issuer" [formControl]="userForm.controls['issuer']"> </mat-form-field> - <mat-form-field class="certificate-fingerprint"> - <input matInput placeholder="Fingerprints" [formControl]="userForm.controls['fingerprints']"> + <mat-form-field class="certificate-serial-number"> + <input matInput placeholder="Serial Number" [formControl]="userForm.controls['serialNumber']"> </mat-form-field> <label class="custom-file-upload"> diff --git a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts index 173f05fa4..4a39a063b 100644 --- a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts +++ b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts @@ -33,8 +33,6 @@ export class UserDetailsDialogComponent { @ViewChild('fileInput') private fileInput; - - private passwordConfirmationValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => { const userToggle = control.get('userToggle'); const password = control.get('password'); @@ -54,9 +52,9 @@ export class UserDetailsDialogComponent { const validFrom = control.get('validFrom'); const validTo = control.get('validTo'); const issuer = control.get('issuer'); - const fingerprints = control.get('fingerprints'); - return certificateToggle && subject && validFrom && validTo && issuer && fingerprints - && certificateToggle.value && !(subject.value && validFrom.value && validTo.value && issuer.value && fingerprints.value) ? { certificateDetailsRequired: true} : null; + const serialNumber = control.get('serialNumber'); + return certificateToggle && subject && validFrom && validTo && issuer && serialNumber + && certificateToggle.value && !(subject.value && validFrom.value && validTo.value && issuer.value && serialNumber.value) ? { certificateDetailsRequired: true} : null; }; constructor(private dialogRef: MatDialogRef<UserDetailsDialogComponent>, @@ -79,7 +77,7 @@ export class UserDetailsDialogComponent { validFrom: data.row.validFrom, validTo: data.row.validTo, issuer: data.row.issuer, - fingerprints: data.row.fingerprints, + serialNumber: data.row.serialNumber, } }: { username: '', @@ -105,7 +103,7 @@ export class UserDetailsDialogComponent { 'validFrom': new FormControl({ value: user.certificate.validFrom, disabled: true }, Validators.required), 'validTo': new FormControl({ value: user.certificate.validTo, disabled: true }, Validators.required), 'issuer': new FormControl({ value: user.certificate.issuer, disabled: true }, Validators.required), - 'fingerprints': new FormControl({ value: user.certificate.fingerprints, disabled: true }, Validators.required), + 'serialNumber': new FormControl({ value: user.certificate.serialNumber, disabled: true }, Validators.required), }, { validator: [this.passwordConfirmationValidator, this.atLeastOneToggleCheckedValidator, this.certificateValidator] }); @@ -133,7 +131,7 @@ export class UserDetailsDialogComponent { 'validFrom': this.datePipe.transform(res.validFrom.toString(), this.dateFormat), 'validTo': this.datePipe.transform(res.validTo.toString(), this.dateFormat), 'issuer': res.issuer, - 'fingerprints': res.fingerprints + 'serialNumber': res.serialNumber }); }, err => { diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/CertificateRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/CertificateRO.java index cd967b91f..6555e3708 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/CertificateRO.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/CertificateRO.java @@ -14,7 +14,6 @@ public class CertificateRO extends BaseRO { private String subject; private String issuer; private String serialNumber; - private String fingerprints; private LocalDateTime validFrom; private LocalDateTime validTo; @@ -57,14 +56,6 @@ public class CertificateRO extends BaseRO { this.serialNumber = serialNumber; } - public String getFingerprints() { - return fingerprints; - } - - public void setFingerprints(String fingerprints) { - this.fingerprints = fingerprints; - } - public LocalDateTime getValidFrom() { return validFrom; } diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java index a16c8d131..bceb3a071 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java @@ -126,14 +126,12 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> { String subject = cert.getSubjectDN().getName(); String issuer = cert.getIssuerDN().getName(); String hash = cert.getIssuerDN().getName(); - String fingerprints = extractFingerprints(cert); BigInteger serial = cert.getSerialNumber(); String certId = getCertificateIdFromCertificate(subject,issuer, serial ); CertificateRO cro = new CertificateRO(); cro.setCertificateId(certId); cro.setSubject(subject); cro.setIssuer(issuer); - cro.setFingerprints(fingerprints); // set serial as HEX cro.setSerialNumber(serial.toString(16)); cro.setValidFrom(LocalDateTime.ofInstant(cert.getNotBefore().toInstant(), ZoneId.systemDefault())); @@ -142,30 +140,6 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> { return cro; } - private String extractFingerprints(final X509Certificate certificate) { - if (certificate == null) - return null; - - MessageDigest md = null; - try { - md = MessageDigest.getInstance("SHA-1"); - } catch (NoSuchAlgorithmException e) { - LOG.warn("Error initializing MessageDigest ", e); - throw new SMPRuntimeException(ErrorCode.INVALID_CERTIFICATE_MESSAGE_DIGEST, e); - } - byte[] der = new byte[0]; - try { - der = certificate.getEncoded(); - } catch (CertificateEncodingException e) { - LOG.warn("Error encoding certificate ", e); - throw new SMPRuntimeException(ErrorCode.INVALID_CERTIFICATE_ENCODING, e); - } - md.update(der); - byte[] digest = md.digest(); - String digestHex = DatatypeConverter.printHexBinary(digest); - return digestHex.toLowerCase(); - } - public String getCertificateIdFromCertificate(String subject, String issuer, BigInteger serial ){ return new PreAuthenticatedCertificatePrincipal(subject, issuer, serial).getName(); } -- GitLab