diff --git a/lemur/common/fields.py b/lemur/common/fields.py
index b2fecf4e..90fc538b 100644
--- a/lemur/common/fields.py
+++ b/lemur/common/fields.py
@@ -162,6 +162,9 @@ class KeyUsageExtension(Field):
elif k == 'useCRLSign':
keyusages['crl_sign'] = v
+ elif k == 'useKeyAgreement':
+ keyusages['key_agreement'] = v
+
elif k == 'useEncipherOnly' and v:
keyusages['encipher_only'] = True
keyusages['key_agreement'] = True
diff --git a/lemur/static/app/angular/authorities/authority/extensions.tpl.html b/lemur/static/app/angular/authorities/authority/extensions.tpl.html
index d5f65ee4..ac815b07 100644
--- a/lemur/static/app/angular/authorities/authority/extensions.tpl.html
+++ b/lemur/static/app/angular/authorities/authority/extensions.tpl.html
@@ -68,18 +68,18 @@
+
+
+
+
+
+
+
-
-
-
-
-
-
diff --git a/lemur/static/app/angular/authorities/services.js b/lemur/static/app/angular/authorities/services.js
index 7d61798d..ea86070c 100644
--- a/lemur/static/app/angular/authorities/services.js
+++ b/lemur/static/app/angular/authorities/services.js
@@ -64,6 +64,32 @@ angular.module('lemur')
},
removeCustom: function (index) {
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;
+ }
+ }
}
});
});
diff --git a/lemur/static/app/angular/certificates/certificate/options.tpl.html b/lemur/static/app/angular/certificates/certificate/options.tpl.html
index b4cfb8d7..31c31f96 100644
--- a/lemur/static/app/angular/certificates/certificate/options.tpl.html
+++ b/lemur/static/app/angular/certificates/certificate/options.tpl.html
@@ -78,14 +78,14 @@
Key Agreement
-