Skip to content

Commit

Permalink
fix removing from keyknox
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexey Smirnov committed Oct 24, 2018
1 parent 823b306 commit 9fe8d2a
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 14 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ package-lock.json

.rpt2_cache
.virgil_key_entries
keyknox-storage
coverage
dist
3 changes: 2 additions & 1 deletion example/umd/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@
.then(res => res.json())
.then(data => data.token);

let client;
let sdk;

E3kit.EThree.init(getToken)
.then(client => sdk = client)
.then(() => sdk.bootstrap('secret_password'))
.then(() => sdk.encrypt('success!'))
.then((encryptedMessage) => sdk.decrypt(encryptedMessage))
.then((message) => console.log('message', message))
.then(() => sdk.cleanup())
.catch(console.error);
</script>
</body>
Expand Down
10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,11 @@
},
"dependencies": {
"@virgilsecurity/keyknox": "^0.1.2",
"virgil-crypto": "^3.0.0",
"virgil-pythia": "^0.2.3",
"virgil-sdk": "^5.0.0"
"virgil-pythia": "^0.2.3"
},
"peerDependencies": {},
"devDependencies": {
"@types/jest": "^23.3.1",
"@types/jest": "^23.3.7",
"@types/node": "^10.7.1",
"babel-jest": "^23.6.0",
"buffer-es6": "^4.9.3",
Expand All @@ -68,8 +66,8 @@
"tslint-config-prettier": "^1.14.0",
"tslint-plugin-prettier": "^1.3.0",
"typescript": "^3.0.1",
"virgil-crypto": "^3.0.0",
"virgil-sdk": "^5.0.0"
"virgil-crypto": "^3.0.2",
"virgil-sdk": "^5.1.0"
},
"sideEffects": false
}
8 changes: 7 additions & 1 deletion src/PrivateKeyLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export default class PrivateKeyLoader {
private brainKey: IBrainKey;
private syncStorage?: Promise<SyncKeyStorage>;
private localStorage: KeyEntryStorage;
private keyknoxStorage: KeyEntryStorage;

constructor(private identity: string, public toolbox: VirgilToolbox) {
this.brainKey = createBrainKey({
Expand All @@ -42,6 +43,7 @@ export default class PrivateKeyLoader {
accessTokenProvider: this.toolbox.jwtProvider,
});
this.localStorage = new KeyEntryStorage({ name: 'local-storage' });
this.keyknoxStorage = new KeyEntryStorage({ name: 'keyknox-storage' });
}

async savePrivateKeyRemote(privateKey: VirgilPrivateKey, password: string, id?: string) {
Expand All @@ -67,7 +69,11 @@ export default class PrivateKeyLoader {

async resetLocalPrivateKey() {
this.syncStorage = undefined;
return await this.localStorage.remove(this.identity);
await Promise.all([
this.localStorage.remove(this.identity),
this.keyknoxStorage.remove(this.identity),
]);
return true;
}

async resetBackupPrivateKey(password: string) {
Expand Down
16 changes: 10 additions & 6 deletions src/__tests__/EThree.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ const cardManager = new CardManager({
});

const keyStorage = new KeyEntryStorage({ name: 'local-storage' });
const keyknoxStorage = new KeyEntryStorage({ name: 'keyknox-storage' });

const createSyncStorage = async (identity: string, password: string) => {
const fetchToken = () => Promise.resolve(generator.generateToken(identity).toString());
Expand All @@ -73,21 +74,22 @@ const createSyncStorage = async (identity: string, password: string) => {
new KeyknoxCrypto(virgilCrypto),
),
),
new KeyEntryStorage(),
keyknoxStorage,
);

await storage.sync();
return storage;
};

describe('VirgilE2ee', () => {
beforeAll(done => keyStorage.clear().then(() => done()));
const identity = 'virgiltest' + Date.now();
const fetchToken = () => Promise.resolve(generator.generateToken(identity).toString());

it('full integration test', async done => {
keyStorage.clear();
const sdk = await EThree.init(fetchToken);
const password = 'secret_password';
const cloudStorage = await createSyncStorage(identity, password);
const sdk = await EThree.init(fetchToken);
await sdk.bootstrap();
const privateKey = await keyStorage.load(identity);
expect(privateKey).not.toEqual(null);
Expand Down Expand Up @@ -515,16 +517,18 @@ describe('encrypt and decrypt', () => {
});
});

describe('logout()', () => {
describe('cleanup()', () => {
it('should delete key on logout', async done => {
const identity = 'virgiltestlogout' + Date.now();
const fetchToken = () => Promise.resolve(generator.generateToken(identity).toString());

const sdk = await EThree.init(fetchToken);
await sdk.bootstrap('secure_password');
const isDeleted = await sdk.cleanup();
const privateKey = await keyStorage.load(identity);
expect(privateKey).toEqual(null);
const privateKeyFromLocalStorage = await keyStorage.load(identity);
const privateKeyFromKeyknox = await keyknoxStorage.load(identity);
expect(privateKeyFromLocalStorage).toEqual(null);
expect(privateKeyFromKeyknox).toEqual(null);
expect(isDeleted).toBe(true);
done();
});
Expand Down

0 comments on commit 9fe8d2a

Please sign in to comment.