mirror of
https://github.com/nextcloud/passman.git
synced 2025-10-06 11:35:50 +08:00
Sharing RSA key generation and settings page
Included Forge lib
This commit is contained in:
parent
a45cc45f5a
commit
19bcdd91c0
7 changed files with 65 additions and 2 deletions
|
@ -30,7 +30,12 @@ angular.module('passmanApp')
|
|||
title: 'Export credentials',
|
||||
url: 'views/partials/forms/settings/export.html'
|
||||
|
||||
}];
|
||||
},
|
||||
{
|
||||
title: 'Sharing',
|
||||
url:'views/partials/forms/settings/sharing.html'
|
||||
}
|
||||
];
|
||||
|
||||
$scope.currentTab = $scope.tabs[2];
|
||||
|
||||
|
|
14
js/app/controllers/share_settings.js
Normal file
14
js/app/controllers/share_settings.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
/**
|
||||
* Created by wolfi on 25/09/16.
|
||||
*/
|
||||
angular.module('passmanApp')
|
||||
.controller('SharingSettingsCtrl', ['$scope', 'VaultService', 'CredentialService', 'SettingsService', '$location', '$routeParams', 'ShareService', function ($scope, VaultService, CredentialService, SettingsService, $location, $routeParams, ShareService) {
|
||||
$scope.active_vault = VaultService.getActiveVault();
|
||||
|
||||
$scope.generateKeys = function(length) {
|
||||
var rsa = ShareService.rsaKeyPairToPEM(ShareService.generateRSAKeys(length));
|
||||
console.log(rsa);
|
||||
$scope.active_vault.private_sharing_key = rsa.privateKey;
|
||||
$scope.active_vault.public_sharing_key = rsa.publicKey;
|
||||
}
|
||||
}]);
|
|
@ -20,6 +20,15 @@ angular.module('passmanApp')
|
|||
return response;
|
||||
}
|
||||
});
|
||||
},
|
||||
generateRSAKeys: function(key_length){
|
||||
return forge.pki.rsa.generateKeyPair(key_length);
|
||||
},
|
||||
rsaKeyPairToPEM: function(keypair){
|
||||
return {
|
||||
'publicKey' : forge.pki.publicKeyToPem(keypair.publicKey),
|
||||
'privateKey' : forge.pki.privateKeyToPem(keypair.privateKey)
|
||||
};
|
||||
}
|
||||
}
|
||||
}]);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
angular.module('templates-main', ['views/credential_revisions.html', 'views/edit_credential.html', 'views/partials/forms/edit_credential/basics.html', 'views/partials/forms/edit_credential/custom_fields.html', 'views/partials/forms/edit_credential/files.html', 'views/partials/forms/edit_credential/otp.html', 'views/partials/forms/edit_credential/password.html', 'views/partials/forms/settings/export.html', 'views/partials/forms/settings/general_settings.html', 'views/partials/forms/settings/import.html', 'views/partials/forms/settings/tool.html', 'views/partials/forms/share_credential/basics.html', 'views/partials/forms/share_credential/expire_settings.html', 'views/partials/password-meter.html', 'views/settings.html', 'views/share_credential.html', 'views/show_vault.html', 'views/vaults.html']);
|
||||
angular.module('templates-main', ['views/credential_revisions.html', 'views/edit_credential.html', 'views/partials/forms/edit_credential/basics.html', 'views/partials/forms/edit_credential/custom_fields.html', 'views/partials/forms/edit_credential/files.html', 'views/partials/forms/edit_credential/otp.html', 'views/partials/forms/edit_credential/password.html', 'views/partials/forms/settings/export.html', 'views/partials/forms/settings/general_settings.html', 'views/partials/forms/settings/import.html', 'views/partials/forms/settings/sharing.html', 'views/partials/forms/settings/tool.html', 'views/partials/forms/share_credential/basics.html', 'views/partials/forms/share_credential/expire_settings.html', 'views/partials/password-meter.html', 'views/settings.html', 'views/share_credential.html', 'views/show_vault.html', 'views/vaults.html']);
|
||||
|
||||
angular.module('views/credential_revisions.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
|
@ -60,6 +60,12 @@ angular.module('views/partials/forms/settings/import.html', []).run(['$templateC
|
|||
'<div ng-controller="ImportCtrl"><div class="row"><div class="col-xs-12"><label>Import type<select ng-init="importerType" ng-model="importerType" ng-change="setImporter(importerType)"><option ng-repeat="importer in available_importers" value="{{importer}}">{{importer.name}}</option></select></label><div><b>{{selectedImporter.description}}</b></div><input ng-if="selectedImporter" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"><br><button class="button" ng-click="startImport()" ng-if="selectedImporter">Import</button></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/settings/sharing.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/settings/sharing.html',
|
||||
'<div ng-controller="SharingSettingsCtrl"><div class="row"><div class="col-md-6"><label>Private Key</label><textarea class="col-md-12">{{active_vault.private_sharing_key}}</textarea></div><div class="col-md-6"><label>Public key</label><textarea class="col-md-12">{{active_vault.public_sharing_key}}</textarea></div></div><div class="row"><div class="col-md-12"><label>Key size<select ng-model="key_size"><option value="512">512</option><option value="1024">1024</option><option value="2048">2048</option><option value="4096">4096</option></select><button ng-click="generateKeys(key_size)" class="btn btn-default">Generate sharing keys</button></label></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/settings/tool.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/settings/tool.html',
|
||||
|
|
1
js/vendor/forge.0.6.9.min.js
vendored
Normal file
1
js/vendor/forge.0.6.9.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -21,6 +21,7 @@ script('passman', 'vendor/ng-tags-input/ng-tags-input.min');
|
|||
script('passman', 'vendor/angular-xeditable/xeditable.min');
|
||||
script('passman', 'vendor/sha/sha');
|
||||
script('passman', 'vendor/llqrcode/llqrcode');
|
||||
script('passman', 'vendor/forge.0.6.9.min');
|
||||
|
||||
|
||||
script('passman', 'app/app');
|
||||
|
@ -31,6 +32,7 @@ script('passman', 'app/controllers/vault');
|
|||
script('passman', 'app/controllers/credential');
|
||||
script('passman', 'app/controllers/edit_credential');
|
||||
script('passman', 'app/controllers/share');
|
||||
script('passman', 'app/controllers/share_settings');
|
||||
script('passman', 'app/controllers/revision');
|
||||
script('passman', 'app/controllers/settings');
|
||||
script('passman', 'app/controllers/import');
|
||||
|
|
26
templates/views/partials/forms/settings/sharing.html
Normal file
26
templates/views/partials/forms/settings/sharing.html
Normal file
|
@ -0,0 +1,26 @@
|
|||
<div ng-controller="SharingSettingsCtrl">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label>Private Key</label>
|
||||
<textarea class="col-md-12">{{active_vault.private_sharing_key}}</textarea>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>Public key</label>
|
||||
<textarea class="col-md-12">{{active_vault.public_sharing_key}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<label>Key size
|
||||
<select ng-model="key_size">
|
||||
<option value="512">512</option>
|
||||
<option value="1024">1024</option>
|
||||
<option value="2048">2048</option>
|
||||
<option value="4096">4096</option>
|
||||
</select>
|
||||
<button ng-click="generateKeys(key_size)" class="btn btn-default">Generate sharing keys</button>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Loading…
Add table
Reference in a new issue