UI adjustments for mutually exclusive (radio button version) encipher/decipher-only Key Usage #664 (#692)
* UI adjustments to make Key Agreement, Encipher Only, and Decipher Only relationship more user-friendly * whitespace typo * Issue #663 switching Encipher/Decipher Only options to be mutually exclusive and un-checkable radio buttons. * Found a bug in the fields schema that was dropping Key Agreement bit if encipher/decipher only weren't checked
This commit is contained in:
parent
4c11ac9a42
commit
5f5583e2cb
|
@ -162,6 +162,9 @@ class KeyUsageExtension(Field):
|
||||||
elif k == 'useCRLSign':
|
elif k == 'useCRLSign':
|
||||||
keyusages['crl_sign'] = v
|
keyusages['crl_sign'] = v
|
||||||
|
|
||||||
|
elif k == 'useKeyAgreement':
|
||||||
|
keyusages['key_agreement'] = v
|
||||||
|
|
||||||
elif k == 'useEncipherOnly' and v:
|
elif k == 'useEncipherOnly' and v:
|
||||||
keyusages['encipher_only'] = True
|
keyusages['encipher_only'] = True
|
||||||
keyusages['key_agreement'] = True
|
keyusages['key_agreement'] = True
|
||||||
|
|
|
@ -70,14 +70,14 @@
|
||||||
<input type="checkbox" ng-model="authority.extensions.keyUsage.useKeyAgreement">Key Agreement
|
<input type="checkbox" ng-model="authority.extensions.keyUsage.useKeyAgreement">Key Agreement
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
<div class="radio">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" ng-model="authority.extensions.keyUsage.useEncipherOnly">Encipher Only
|
<input type="radio" name="encipherOrDecipher" ng-model="authority.encipherOrDecipher" value="useEncipherOnly" ng-click="authority.setEncipherOrDecipher('useEncipherOnly')">Encipher Only
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
<div class="radio">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" ng-model="authority.extensions.keyUsage.useDecipherOnly">Decipher Only
|
<input type="radio" name="encipherOrDecipher" ng-model="authority.encipherOrDecipher" value="useDecipherOnly" ng-click="authority.setEncipherOrDecipher('useDecipherOnly')">Decipher Only
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -64,6 +64,32 @@ angular.module('lemur')
|
||||||
},
|
},
|
||||||
removeCustom: function (index) {
|
removeCustom: function (index) {
|
||||||
this.extensions.custom.splice(index, 1);
|
this.extensions.custom.splice(index, 1);
|
||||||
|
},
|
||||||
|
setEncipherOrDecipher: function (value) {
|
||||||
|
if (this.extensions === undefined) {
|
||||||
|
this.extensions = {};
|
||||||
|
}
|
||||||
|
if (this.extensions.keyUsage === undefined) {
|
||||||
|
this.extensions.keyUsage = {};
|
||||||
|
}
|
||||||
|
var existingValue = this.extensions.keyUsage[value];
|
||||||
|
if (existingValue) {
|
||||||
|
// Clicked on the already-selected value
|
||||||
|
this.extensions.keyUsage.useDecipherOnly = false;
|
||||||
|
this.extensions.keyUsage.useEncipherOnly = false;
|
||||||
|
// Uncheck both radio buttons
|
||||||
|
this.encipherOrDecipher = false;
|
||||||
|
} else {
|
||||||
|
// Clicked a different value
|
||||||
|
this.extensions.keyUsage.useKeyAgreement = true;
|
||||||
|
if (value === 'useEncipherOnly') {
|
||||||
|
this.extensions.keyUsage.useDecipherOnly = false;
|
||||||
|
this.extensions.keyUsage.useEncipherOnly = true;
|
||||||
|
} else {
|
||||||
|
this.extensions.keyUsage.useEncipherOnly = false;
|
||||||
|
this.extensions.keyUsage.useDecipherOnly = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -78,14 +78,14 @@
|
||||||
<input type="checkbox" ng-model="certificate.extensions.keyUsage.useKeyAgreement">Key Agreement
|
<input type="checkbox" ng-model="certificate.extensions.keyUsage.useKeyAgreement">Key Agreement
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
<div class="radio">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" ng-model="certificate.extensions.keyUsage.useEncipherOnly">Encipher Only
|
<input type="radio" name="encipherOrDecipher" ng-model="certificate.encipherOrDecipher" value="useEncipherOnly" ng-click="certificate.setEncipherOrDecipher('useEncipherOnly')">Encipher Only
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
<div class="radio">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" ng-model="certificate.extensions.keyUsage.useDecipherOnly">Decipher Only
|
<input type="radio" name="encipherOrDecipher" ng-model="certificate.encipherOrDecipher" value="useDecipherOnly" ng-click="certificate.setEncipherOrDecipher('useDecipherOnly')">Decipher Only
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -113,6 +113,32 @@ angular.module('lemur')
|
||||||
}
|
}
|
||||||
this.extensions = this.template.extensions;
|
this.extensions = this.template.extensions;
|
||||||
this.extensions.subAltNames = saveSubAltNames;
|
this.extensions.subAltNames = saveSubAltNames;
|
||||||
|
},
|
||||||
|
setEncipherOrDecipher: function (value) {
|
||||||
|
if (this.extensions === undefined) {
|
||||||
|
this.extensions = {};
|
||||||
|
}
|
||||||
|
if (this.extensions.keyUsage === undefined) {
|
||||||
|
this.extensions.keyUsage = {};
|
||||||
|
}
|
||||||
|
var existingValue = this.extensions.keyUsage[value];
|
||||||
|
if (existingValue) {
|
||||||
|
// Clicked on the already-selected value
|
||||||
|
this.extensions.keyUsage.useDecipherOnly = false;
|
||||||
|
this.extensions.keyUsage.useEncipherOnly = false;
|
||||||
|
// Uncheck both radio buttons
|
||||||
|
this.encipherOrDecipher = false;
|
||||||
|
} else {
|
||||||
|
// Clicked a different value
|
||||||
|
this.extensions.keyUsage.useKeyAgreement = true;
|
||||||
|
if (value === 'useEncipherOnly') {
|
||||||
|
this.extensions.keyUsage.useDecipherOnly = false;
|
||||||
|
this.extensions.keyUsage.useEncipherOnly = true;
|
||||||
|
} else {
|
||||||
|
this.extensions.keyUsage.useEncipherOnly = false;
|
||||||
|
this.extensions.keyUsage.useDecipherOnly = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue