Browse Source

UI: Remove HEX and length validations in device lwm2m credentials

pull/5307/head
Vladyslav_Prykhodko 5 years ago
parent
commit
bb2efb145b
  1. 16
      ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m-server.component.html
  2. 34
      ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m-server.component.ts
  3. 12
      ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m.component.html
  4. 21
      ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m.component.ts
  5. 3
      ui-ngx/src/app/modules/home/components/profile/device/lwm2m/lwm2m-device-config-server.component.html
  6. 6
      ui-ngx/src/app/modules/home/components/profile/device/lwm2m/lwm2m-device-config-server.component.ts
  7. 1
      ui-ngx/src/app/modules/home/components/profile/device/lwm2m/lwm2m-profile-config.models.ts
  8. 4
      ui-ngx/src/app/shared/models/lwm2m-security-config.models.ts
  9. 6
      ui-ngx/src/assets/locale/locale.constant-cs_CZ.json
  10. 6
      ui-ngx/src/assets/locale/locale.constant-en_US.json
  11. 6
      ui-ngx/src/assets/locale/locale.constant-tr_TR.json

16
ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m-server.component.html

@ -37,35 +37,19 @@
<mat-error *ngIf="serverFormGroup.get('clientPublicKeyOrId').hasError('required')">
{{ 'device.lwm2m-security-config.client-publicKey-or-id-required' | translate }}
</mat-error>
<mat-error *ngIf="serverFormGroup.get('clientPublicKeyOrId').hasError('pattern')">
{{ 'device.lwm2m-security-config.client-publicKey-or-id-pattern' | translate }}
</mat-error>
</mat-form-field>
<mat-form-field class="mat-block">
<mat-label>{{ 'device.lwm2m-security-config.client-secret-key' | translate }}</mat-label>
<textarea matInput
#clientSecretKey
[maxlength]="lengthClientSecretKey"
cdkTextareaAutosize
cdkAutosizeMinRows="1"
cols="1"
formControlName="clientSecretKey"
required>
</textarea>
<mat-hint [fxShow]="serverFormGroup.get('securityMode').value === securityConfigLwM2MType.PSK" align="end">
{{clientSecretKey.value?.length || 0}}/{{lengthClientSecretKey}}
</mat-hint>
<mat-error *ngIf="serverFormGroup.get('clientSecretKey').hasError('required')">
{{ 'device.lwm2m-security-config.client-secret-key-required' | translate }}
</mat-error>
<mat-error *ngIf="serverFormGroup.get('clientSecretKey').hasError('pattern')">
{{ 'device.lwm2m-security-config.client-secret-key-pattern' | translate }}
</mat-error>
<mat-error *ngIf="serverFormGroup.get('clientSecretKey').hasError('length')">
{{ 'device.lwm2m-security-config.client-secret-key-length' | translate: {
count: allowLengthKey.join(', ')
} }}
</mat-error>
</mat-form-field>
</div>
</section>

34
ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m-server.component.ts

@ -16,7 +16,6 @@
import { Component, forwardRef, OnDestroy } from '@angular/core';
import {
AbstractControl,
ControlValueAccessor,
FormBuilder,
FormGroup,
@ -27,9 +26,6 @@ import {
Validators
} from '@angular/forms';
import {
KEY_REGEXP_HEX_DEC,
LEN_MAX_PRIVATE_KEY,
LEN_MAX_PSK,
Lwm2mSecurityType,
Lwm2mSecurityTypeTranslationMap,
ServerSecurityConfig
@ -61,8 +57,6 @@ export class DeviceCredentialsLwm2mServerComponent implements OnDestroy, Control
securityConfigLwM2MType = Lwm2mSecurityType;
securityConfigLwM2MTypes = Object.values(Lwm2mSecurityType);
lwm2mSecurityTypeTranslationMap = Lwm2mSecurityTypeTranslationMap;
lengthClientSecretKey = LEN_MAX_PRIVATE_KEY;
allowLengthKey = [32, 64, LEN_MAX_PSK];
private destroy$ = new Subject();
private propagateChange = (v: any) => {};
@ -132,30 +126,18 @@ export class DeviceCredentialsLwm2mServerComponent implements OnDestroy, Control
this.serverFormGroup.get('clientSecretKey').disable();
break;
case Lwm2mSecurityType.PSK:
this.lengthClientSecretKey = LEN_MAX_PSK;
this.setValidatorsSecurity(securityMode);
break;
case Lwm2mSecurityType.RPK:
this.lengthClientSecretKey = null;
this.setValidatorsSecurity(securityMode);
break;
case Lwm2mSecurityType.X509:
this.lengthClientSecretKey = null;
this.setValidatorsSecurity(securityMode);
this.setValidatorsSecurity();
break;
}
this.serverFormGroup.get('clientPublicKeyOrId').updateValueAndValidity({emitEvent: false});
this.serverFormGroup.get('clientSecretKey').updateValueAndValidity({emitEvent: !initValue});
}
private setValidatorsSecurity = (securityMode: Lwm2mSecurityType): void => {
const clientSecretKeyValidators = [Validators.required, Validators.pattern(KEY_REGEXP_HEX_DEC)];
private setValidatorsSecurity = (): void => {
const clientSecretKeyValidators = [Validators.required];
const clientPublicKeyOrIdValidators = [Validators.required];
if (securityMode === Lwm2mSecurityType.PSK) {
clientSecretKeyValidators.push(this.maxLength(this.allowLengthKey));
} else {
clientPublicKeyOrIdValidators.push(Validators.pattern(KEY_REGEXP_HEX_DEC));
}
this.serverFormGroup.get('clientPublicKeyOrId').setValidators(clientPublicKeyOrIdValidators);
this.serverFormGroup.get('clientSecretKey').setValidators(clientSecretKeyValidators);
@ -163,14 +145,4 @@ export class DeviceCredentialsLwm2mServerComponent implements OnDestroy, Control
this.serverFormGroup.get('clientPublicKeyOrId').enable({emitEvent: false});
this.serverFormGroup.get('clientSecretKey').enable();
}
private maxLength(keyLengths: number[]) {
return (control: AbstractControl): ValidationErrors | null => {
const value = control.value;
if (keyLengths.some(len => value.length === len)) {
return null;
}
return {length: true};
};
}
}

12
ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m.component.html

@ -45,27 +45,15 @@
lwm2mConfigFormGroup.get('client.securityConfigClientMode').value === securityConfigLwM2MType.PSK">
<mat-label>{{ 'device.lwm2m-security-config.client-key' | translate }}</mat-label>
<textarea matInput
#key
maxlength="{{lenMaxKeyClient}}"
cdkTextareaAutosize
cdkAutosizeMinRows="1"
cols="1"
formControlName="key"
required>
</textarea>
<mat-hint *ngIf="lwm2mConfigFormGroup.get('client.securityConfigClientMode').value === securityConfigLwM2MType.PSK"
align="end">{{key.value?.length || 0}}/{{lenMaxKeyClient}}</mat-hint>
<mat-error *ngIf="lwm2mConfigFormGroup.get('client.key').hasError('required')">
{{ 'device.lwm2m-security-config.client-key-required' | translate }}
</mat-error>
<mat-error *ngIf="lwm2mConfigFormGroup.get('client.key').hasError('pattern')">
{{ 'device.lwm2m-security-config.client-key-pattern' | translate }}
</mat-error>
<mat-error *ngIf="lwm2mConfigFormGroup.get('client.key').hasError('length')">
{{ 'device.lwm2m-security-config.client-key-length' | translate: {
count: allowLengthKey.join(', ')
} }}
</mat-error>
</mat-form-field>
<mat-form-field class="mat-block" *ngIf="lwm2mConfigFormGroup.get('client.securityConfigClientMode').value === securityConfigLwM2MType.X509">
<mat-label translate>device.lwm2m-security-config.client-public-key</mat-label>

21
ui-ngx/src/app/modules/home/components/device/device-credentials-lwm2m.component.ts

@ -16,7 +16,6 @@
import { Component, forwardRef, OnDestroy } from '@angular/core';
import {
AbstractControl,
ControlValueAccessor,
FormBuilder,
FormGroup,
@ -29,8 +28,6 @@ import {
import {
getDefaultClientSecurityConfig,
getDefaultServerSecurityConfig,
KEY_REGEXP_HEX_DEC,
LEN_MAX_PSK,
Lwm2mSecurityConfigModels,
Lwm2mSecurityType,
Lwm2mSecurityTypeTranslationMap
@ -63,8 +60,6 @@ export class DeviceCredentialsLwm2mComponent implements ControlValueAccessor, Va
securityConfigLwM2MType = Lwm2mSecurityType;
securityConfigLwM2MTypes = Object.keys(Lwm2mSecurityType);
credentialTypeLwM2MNamesMap = Lwm2mSecurityTypeTranslationMap;
lenMaxKeyClient = LEN_MAX_PSK;
allowLengthKey = [32, 64, LEN_MAX_PSK];
private destroy$ = new Subject();
private propagateChange = (v: any) => {};
@ -135,12 +130,10 @@ export class DeviceCredentialsLwm2mComponent implements ControlValueAccessor, Va
this.lwm2mConfigFormGroup.get('client.cert').enable({emitEvent: false});
break;
case Lwm2mSecurityType.PSK:
this.lenMaxKeyClient = LEN_MAX_PSK;
this.setValidatorsPskRpk(mode);
this.lwm2mConfigFormGroup.get('client.identity').enable({emitEvent: false});
break;
case Lwm2mSecurityType.RPK:
this.lenMaxKeyClient = null;
this.setValidatorsPskRpk(mode);
this.lwm2mConfigFormGroup.get('client.identity').disable({emitEvent: false});
break;
@ -157,28 +150,16 @@ export class DeviceCredentialsLwm2mComponent implements ControlValueAccessor, Va
}
private setValidatorsPskRpk = (mode: Lwm2mSecurityType): void => {
const keyValidators = [Validators.required, Validators.pattern(KEY_REGEXP_HEX_DEC)];
if (mode === Lwm2mSecurityType.PSK) {
this.lwm2mConfigFormGroup.get('client.identity').setValidators([Validators.required]);
keyValidators.push(this.maxLength(this.allowLengthKey));
} else {
this.lwm2mConfigFormGroup.get('client.identity').clearValidators();
}
this.lwm2mConfigFormGroup.get('client.key').setValidators(keyValidators);
this.lwm2mConfigFormGroup.get('client.key').setValidators([Validators.required]);
this.lwm2mConfigFormGroup.get('client.key').enable({emitEvent: false});
this.lwm2mConfigFormGroup.get('client.cert').disable({emitEvent: false});
}
private maxLength(keyLengths: number[]) {
return (control: AbstractControl): ValidationErrors | null => {
const value = control.value;
if (keyLengths.some(len => value.length === len)) {
return null;
}
return {length: true};
};
}
private initLwm2mConfigForm = (): FormGroup => {
const formGroup = this.fb.group({
client: this.fb.group({

3
ui-ngx/src/app/modules/home/components/profile/device/lwm2m/lwm2m-device-config-server.component.html

@ -103,9 +103,6 @@
<mat-error *ngIf="serverFormGroup.get('serverPublicKey').hasError('required')">
{{ 'device-profile.lwm2m.server-public-key-required' | translate }}
</mat-error>
<mat-error *ngIf="serverFormGroup.get('serverPublicKey').hasError('pattern')">
{{ 'device-profile.lwm2m.server-public-key-pattern' | translate }}
</mat-error>
</mat-form-field>
</div>
</section>

6
ui-ngx/src/app/modules/home/components/profile/device/lwm2m/lwm2m-device-config-server.component.ts

@ -28,7 +28,6 @@ import {
import {
DEFAULT_PORT_BOOTSTRAP_NO_SEC,
DEFAULT_PORT_SERVER_NO_SEC,
KEY_REGEXP_HEX_DEC,
securityConfigMode,
securityConfigModeNames,
ServerSecurityConfig
@ -158,10 +157,7 @@ export class Lwm2mDeviceConfigServerComponent implements OnInit, ControlValueAcc
}
private setValidators(): void {
this.serverFormGroup.get('serverPublicKey').setValidators([
Validators.required,
Validators.pattern(KEY_REGEXP_HEX_DEC)
]);
this.serverFormGroup.get('serverPublicKey').setValidators([Validators.required]);
}
private propagateChangeState = (value: ServerSecurityConfig): void => {

1
ui-ngx/src/app/modules/home/components/profile/device/lwm2m/lwm2m-profile-config.models.ts

@ -34,7 +34,6 @@ export const DEFAULT_MIN_PERIOD = 1;
export const DEFAULT_NOTIF_IF_DESIBLED = true;
export const DEFAULT_BINDING = 'UQ';
export const DEFAULT_BOOTSTRAP_SERVER_ACCOUNT_TIME_OUT = 0;
export const KEY_REGEXP_HEX_DEC = /^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;
export const INSTANCES_ID_VALUE_MIN = 0;
export const INSTANCES_ID_VALUE_MAX = 65535;
export const DEFAULT_OTA_UPDATE_PROTOCOL = 'coap://';

4
ui-ngx/src/app/shared/models/lwm2m-security-config.models.ts

@ -14,10 +14,6 @@
/// limitations under the License.
///
export const LEN_MAX_PSK = 128;
export const LEN_MAX_PRIVATE_KEY = 134;
export const KEY_REGEXP_HEX_DEC = /^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;
export enum Lwm2mSecurityType {
PSK = 'PSK',
RPK = 'RPK',

6
ui-ngx/src/assets/locale/locale.constant-cs_CZ.json

@ -961,8 +961,6 @@
"identity-required": "Identita klienta je povinná.",
"client-key": "Klíč klienta",
"client-key-required": "Klíč klienta je povinný.",
"client-key-pattern": "Klíč klienta musí být v hexadecimálním formátu.",
"client-key-length": "Klíč klienta musí mít {{ count }} znaků.",
"endpoint": "Název endpointu klienta",
"endpoint-required": "Název endpointu klienta je povinný.",
"mode": "Režim konfigurace bezpečnosti",
@ -973,11 +971,8 @@
"lwm2m-server": "LwM2M server",
"client-publicKey-or-id": "Veřejný klíč nebo Id klienta",
"client-publicKey-or-id-required": "Veřejný klíč nebo Id klienta jsou povinné.",
"client-publicKey-or-id-pattern": "Veřejný klíč klienta nebo Id musí být v hexadecimálním formátu.",
"client-secret-key": "Tajný klíč klienta",
"client-secret-key-required": "Tajný klíč klienta je povinný.",
"client-secret-key-pattern": "Tajný klíč klienta musí být v hexadecimálním formátu.",
"client-secret-key-length": "Tajný klíč klienta musí mít {{ count }} znaků.",
"client-public-key": "Veřejný klíč klienta",
"client-public-key-hint": "Jestliže je veřejný klíč klienta prázdný, bude použit důvěryhodný certifikát"
},
@ -1299,7 +1294,6 @@
"server-port-range": "Port by měl být v rozsahu od 1 do 65535.",
"server-public-key": "Veřejný klíč serveru",
"server-public-key-required": "Veřejný klíč serveru je povinný.",
"server-public-key-pattern": "Veřejný klíč serveru musí být v hexadecimálním formátu.",
"client-hold-off-time": "Čas odložení",
"client-hold-off-time-required": "Čas odloženíje povinný.",
"client-hold-off-time-pattern": "Čas odložení musí být kladné celé číslo.",

6
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -965,8 +965,6 @@
"identity-required": "Client Identity is required.",
"client-key": "Client Key",
"client-key-required": "Client Key is required.",
"client-key-pattern": "Client Key must be hexadecimal format.",
"client-key-length": "Client Key must be {{ count }} characters.",
"endpoint": "Endpoint Client Name",
"endpoint-required": "Endpoint Client Name is required.",
"mode": "Security config mode",
@ -977,11 +975,8 @@
"lwm2m-server": "LwM2M Server",
"client-publicKey-or-id": "Client Public Key or Id",
"client-publicKey-or-id-required": "Client Public Key or Id is required.",
"client-publicKey-or-id-pattern": "Client Public Key or Id must be hexadecimal format.",
"client-secret-key": "Client Secret Key",
"client-secret-key-required": "Client Secret Key is required.",
"client-secret-key-pattern": "Client Secret Key must be hexadecimal format.",
"client-secret-key-length": "Client Secret Key must be {{ count }} characters.",
"client-public-key": "Client public key",
"client-public-key-hint": "If client public key is empty, the trusted certificate will be used"
},
@ -1313,7 +1308,6 @@
"server-port-range": "Port should be in a range from 1 to 65535.",
"server-public-key": "Server Public Key",
"server-public-key-required": "Server Public Key is required.",
"server-public-key-pattern": "Server Public Key must be hex decimal format.",
"client-hold-off-time": "Hold Off Time",
"client-hold-off-time-required": "Hold Off Time is required.",
"client-hold-off-time-pattern": "Hold Off Time must be a positive integer.",

6
ui-ngx/src/assets/locale/locale.constant-tr_TR.json

@ -964,8 +964,6 @@
"identity-required": "İstemci Kimliği gerekli.",
"client-key": "İstemci Anahtarı",
"client-key-required": "İstemci Anahtarı gerekli.",
"client-key-pattern": "İstemci Anahtarı onaltılık biçimde olmalıdır.",
"client-key-length": "İstemci Anahtarı {{ sayı }} karakter olmalıdır.",
"endpoint": "Uç Nokta İstemci Adı",
"endpoint-required": "Uç Nokta İstemci Adı gerekli.",
"mode": "Güvenlik yapılandırma modu",
@ -976,11 +974,8 @@
"lwm2m-server": "LwM2M Sunucusu",
"client-publicKey-or-id": "İstemci Genel Anahtarı veya Kimliği",
"client-publicKey-or-id-required": "İstemci Genel Anahtarı veya Kimliği gerekli.",
"client-publicKey-or-id-pattern": "İstemci Genel Anahtarı veya Kimliği onaltılık biçimde olmalıdır.",
"client-secret-key": "İstemci Gizli Anahtarı",
"client-secret-key-required": "İstemci Gizli Anahtarı gerekli.",
"client-secret-key-pattern": "İstemci Gizli Anahtarı onaltılık biçimde olmalıdır.",
"client-secret-key-length": "İstemci Gizli Anahtarı {{ sayı }} karakter olmalıdır.",
"client-public-key": "İstemci açık anahtarı",
"client-public-key-hint": "İstemci açık anahtarı boşsa, güvenilen sertifika kullanılacaktır."
},
@ -1312,7 +1307,6 @@
"server-port-range": "Port 1 ila 65535 aralığında olmalıdır.",
"server-public-key": "Sunucu Açık Anahtarı",
"server-public-key-required": "Sunucu Açık Anahtarı gerekli.",
"server-public-key-pattern": "Sunucu Açık Anahtarı onaltılık biçimde olmalıdır.",
"client-hold-off-time": "Bekleme Süresi",
"client-hold-off-time-required": "Bekleme Süresi gerekli.",
"client-hold-off-time-pattern": "Bekleme Süresi pozitif bir tam sayı olmalıdır.",

Loading…
Cancel
Save