crypto adjustments for new account enc key
This commit is contained in:
parent
9239588757
commit
9aa2014e85
|
@ -107,6 +107,7 @@
|
||||||
postPasswordHint: { url: _apiUri + '/accounts/password-hint', method: 'POST', params: {} },
|
postPasswordHint: { url: _apiUri + '/accounts/password-hint', method: 'POST', params: {} },
|
||||||
putSecurityStamp: { url: _apiUri + '/accounts/security-stamp', method: 'POST', params: {} },
|
putSecurityStamp: { url: _apiUri + '/accounts/security-stamp', method: 'POST', params: {} },
|
||||||
putKeys: { url: _apiUri + '/accounts/keys', method: 'POST', params: {} },
|
putKeys: { url: _apiUri + '/accounts/keys', method: 'POST', params: {} },
|
||||||
|
putKey: { url: _apiUri + '/accounts/key', method: 'POST', params: {} },
|
||||||
'import': { url: _apiUri + '/accounts/import', method: 'POST', params: {} },
|
'import': { url: _apiUri + '/accounts/import', method: 'POST', params: {} },
|
||||||
postDelete: { url: _apiUri + '/accounts/delete', method: 'POST', params: {} }
|
postDelete: { url: _apiUri + '/accounts/delete', method: 'POST', params: {} }
|
||||||
});
|
});
|
||||||
|
|
|
@ -35,6 +35,10 @@ angular
|
||||||
tokenService.setRefreshToken(response.refresh_token);
|
tokenService.setRefreshToken(response.refresh_token);
|
||||||
cryptoService.setKey(key);
|
cryptoService.setKey(key);
|
||||||
|
|
||||||
|
if (response.Key) {
|
||||||
|
cryptoService.setEncKey(response.Key, key);
|
||||||
|
}
|
||||||
|
|
||||||
if (response.PrivateKey) {
|
if (response.PrivateKey) {
|
||||||
cryptoService.setPrivateKey(response.PrivateKey, key);
|
cryptoService.setPrivateKey(response.PrivateKey, key);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -4,6 +4,7 @@ angular
|
||||||
.factory('cryptoService', function ($sessionStorage, constants, $q) {
|
.factory('cryptoService', function ($sessionStorage, constants, $q) {
|
||||||
var _service = {},
|
var _service = {},
|
||||||
_key,
|
_key,
|
||||||
|
_encKey,
|
||||||
_legacyEtmKey,
|
_legacyEtmKey,
|
||||||
_orgKeys,
|
_orgKeys,
|
||||||
_privateKey,
|
_privateKey,
|
||||||
|
@ -14,6 +15,17 @@ angular
|
||||||
$sessionStorage.key = _key.keyB64;
|
$sessionStorage.key = _key.keyB64;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_service.setEncKey = function (encKeyCt, key) {
|
||||||
|
try {
|
||||||
|
var encKeyBytes = _service.decrypt(encKeyCt, key, 'raw');
|
||||||
|
$sessionStorage.encKey = forge.util.encode64(encKeyBytes);
|
||||||
|
_encKey = new SymmetricCryptoKey(encKeyBytes);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log('Cannot set enc key. Decryption failed.');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
_service.setPrivateKey = function (privateKeyCt, key) {
|
_service.setPrivateKey = function (privateKeyCt, key) {
|
||||||
try {
|
try {
|
||||||
var privateKeyBytes = _service.decrypt(privateKeyCt, key, 'raw');
|
var privateKeyBytes = _service.decrypt(privateKeyCt, key, 'raw');
|
||||||
|
@ -95,6 +107,18 @@ angular
|
||||||
return _key;
|
return _key;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_service.getEncKey = function () {
|
||||||
|
if (!_encKey && $sessionStorage.encKey) {
|
||||||
|
_encKey = new SymmetricCryptoKey($sessionStorage.encKey, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_encKey) {
|
||||||
|
throw 'enc key unavailable';
|
||||||
|
}
|
||||||
|
|
||||||
|
return _encKey;
|
||||||
|
};
|
||||||
|
|
||||||
_service.getPrivateKey = function (outputEncoding) {
|
_service.getPrivateKey = function (outputEncoding) {
|
||||||
outputEncoding = outputEncoding || 'native';
|
outputEncoding = outputEncoding || 'native';
|
||||||
|
|
||||||
|
@ -173,6 +197,11 @@ angular
|
||||||
delete $sessionStorage.key;
|
delete $sessionStorage.key;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_service.clearEncKey = function () {
|
||||||
|
_encKey = null;
|
||||||
|
delete $sessionStorage.encKey;
|
||||||
|
};
|
||||||
|
|
||||||
_service.clearKeyPair = function () {
|
_service.clearKeyPair = function () {
|
||||||
_privateKey = null;
|
_privateKey = null;
|
||||||
_publicKey = null;
|
_publicKey = null;
|
||||||
|
@ -196,6 +225,7 @@ angular
|
||||||
|
|
||||||
_service.clearKeys = function () {
|
_service.clearKeys = function () {
|
||||||
_service.clearKey();
|
_service.clearKey();
|
||||||
|
_service.clearEncKey();
|
||||||
_service.clearKeyPair();
|
_service.clearKeyPair();
|
||||||
_service.clearOrgKeys();
|
_service.clearOrgKeys();
|
||||||
};
|
};
|
||||||
|
@ -254,7 +284,7 @@ angular
|
||||||
};
|
};
|
||||||
|
|
||||||
_service.encrypt = function (plainValue, key, plainValueEncoding) {
|
_service.encrypt = function (plainValue, key, plainValueEncoding) {
|
||||||
key = key || _service.getKey();
|
key = key || _service.getEncKey() || _service.getKey();
|
||||||
|
|
||||||
if (!key) {
|
if (!key) {
|
||||||
throw 'Encryption key unavailable.';
|
throw 'Encryption key unavailable.';
|
||||||
|
@ -304,7 +334,7 @@ angular
|
||||||
};
|
};
|
||||||
|
|
||||||
_service.decrypt = function (encValue, key, outputEncoding) {
|
_service.decrypt = function (encValue, key, outputEncoding) {
|
||||||
key = key || _service.getKey();
|
key = key || _service.getEncKey() || _service.getKey();
|
||||||
|
|
||||||
var headerPieces = encValue.split('.'),
|
var headerPieces = encValue.split('.'),
|
||||||
encType,
|
encType,
|
||||||
|
|
Loading…
Reference in New Issue