mirror of
https://github.com/bitwarden/web
synced 2025-12-06 00:03:28 +00:00
113 lines
4.6 KiB
JavaScript
113 lines
4.6 KiB
JavaScript
angular
|
|
.module('bit.services')
|
|
|
|
.factory('cipherService', function (cryptoService, apiService) {
|
|
var _service = {};
|
|
|
|
_service.decryptSites = function (encryptedSites) {
|
|
if (!encryptedSites) throw "encryptedSites is undefined or null";
|
|
|
|
var unencryptedSites = [];
|
|
for (var i = 0; i < encryptedSites.length; i++) {
|
|
unencryptedSites.push(_service.decryptSite(encryptedSites[i]));
|
|
}
|
|
|
|
return unencryptedSites;
|
|
};
|
|
|
|
_service.decryptSite = function (encryptedSite) {
|
|
if (!encryptedSite) throw "encryptedSite is undefined or null";
|
|
|
|
var site = {
|
|
id: encryptedSite.Id,
|
|
'type': 1,
|
|
folderId: encryptedSite.FolderId,
|
|
favorite: encryptedSite.Favorite,
|
|
name: cryptoService.decrypt(encryptedSite.Name),
|
|
uri: encryptedSite.Uri && encryptedSite.Uri !== '' ? cryptoService.decrypt(encryptedSite.Uri) : null,
|
|
username: encryptedSite.Username && encryptedSite.Username !== '' ? cryptoService.decrypt(encryptedSite.Username) : null,
|
|
password: encryptedSite.Password && encryptedSite.Password !== '' ? cryptoService.decrypt(encryptedSite.Password) : null,
|
|
notes: encryptedSite.Notes && encryptedSite.Notes !== '' ? cryptoService.decrypt(encryptedSite.Notes) : null
|
|
};
|
|
|
|
if (encryptedSite.Folder) {
|
|
site.folder = {
|
|
name: cryptoService.decrypt(encryptedSite.Folder.Name)
|
|
};
|
|
}
|
|
|
|
return site;
|
|
};
|
|
|
|
_service.decryptFolders = function (encryptedFolders) {
|
|
if (!encryptedFolders) throw "encryptedFolders is undefined or null";
|
|
|
|
var unencryptedFolders = [];
|
|
for (var i = 0; i < encryptedFolders.length; i++) {
|
|
unencryptedFolders.push(_service.decryptFolder(encryptedFolders[i]));
|
|
}
|
|
|
|
return unencryptedFolders;
|
|
};
|
|
|
|
_service.decryptFolder = function (encryptedFolder) {
|
|
if (!encryptedFolder) throw "encryptedFolder is undefined or null";
|
|
|
|
return {
|
|
id: encryptedFolder.Id,
|
|
'type': 0,
|
|
name: cryptoService.decrypt(encryptedFolder.Name)
|
|
};
|
|
};
|
|
|
|
_service.encryptSites = function (unencryptedSites, key) {
|
|
if (!unencryptedSites) throw "unencryptedSites is undefined or null";
|
|
|
|
var encryptedSites = [];
|
|
for (var i = 0; i < unencryptedSites.length; i++) {
|
|
encryptedSites.push(_service.encryptSite(unencryptedSites[i], key));
|
|
}
|
|
|
|
return encryptedSites;
|
|
};
|
|
|
|
_service.encryptSite = function (unencryptedSite, key) {
|
|
if (!unencryptedSite) throw "unencryptedSite is undefined or null";
|
|
|
|
return {
|
|
id: unencryptedSite.id,
|
|
'type': 1,
|
|
folderId: unencryptedSite.folderId === '' ? null : unencryptedSite.folderId,
|
|
favorite: unencryptedSite.favorite !== null ? unencryptedSite.favorite : false,
|
|
uri: !unencryptedSite.uri || unencryptedSite.uri === '' ? null : cryptoService.encrypt(unencryptedSite.uri, key),
|
|
name: cryptoService.encrypt(unencryptedSite.name, key),
|
|
username: !unencryptedSite.username || unencryptedSite.username === '' ? null : cryptoService.encrypt(unencryptedSite.username, key),
|
|
password: !unencryptedSite.password || unencryptedSite.password === '' ? null : cryptoService.encrypt(unencryptedSite.password, key),
|
|
notes: !unencryptedSite.notes || unencryptedSite.notes === '' ? null : cryptoService.encrypt(unencryptedSite.notes, key)
|
|
};
|
|
};
|
|
|
|
_service.encryptFolders = function (unencryptedFolders, key) {
|
|
if (!unencryptedFolders) throw "unencryptedFolders is undefined or null";
|
|
|
|
var encryptedFolders = [];
|
|
for (var i = 0; i < unencryptedFolders.length; i++) {
|
|
encryptedFolders.push(_service.encryptFolder(unencryptedFolders[i], key));
|
|
}
|
|
|
|
return encryptedFolders;
|
|
};
|
|
|
|
_service.encryptFolder = function (unencryptedFolder, key) {
|
|
if (!unencryptedFolder) throw "unencryptedFolder is undefined or null";
|
|
|
|
return {
|
|
id: unencryptedFolder.id,
|
|
'type': 0,
|
|
name: cryptoService.encrypt(unencryptedFolder.name, key)
|
|
};
|
|
};
|
|
|
|
return _service;
|
|
});
|