Sharing RSA key generation and settings page

Included Forge lib
This commit is contained in:
Marcos Zuriaga 2016-09-25 17:46:55 +02:00
parent a45cc45f5a
commit 19bcdd91c0
7 changed files with 65 additions and 2 deletions

View file

@ -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];

View 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;
}
}]);

View file

@ -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)
};
}
}
}]);

View file

@ -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

File diff suppressed because one or more lines are too long

View file

@ -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');

View 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>