
Product
Introducing GitHub Actions Scanning Support
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.
@virgilsecurity/keyknox
Advanced tools
Keyknox SDK allows developers to communicate with Virgil Keyknox Service to upload, download, and synchronize encrypted sensitive data (private keys) between different devices.
This README is for Keyknox v1.0.0. Check the v0.3.x branch for Keyknox v0.3.x docs.
Introduction | SDK Features | Installation | Usage Example | Docs | Support
Virgil Security provides an SDK which allows you to communicate with Virgil Keyknox Service.
Virgil Keyknox Service allows users to store their sensitive data (such as Private Key) encrypted (with end-to-end encryption) for using and sharing it between different devices.
You can install this module from npm. Another option is to add it via script tag in browser.
You will need to install @virgilsecurity/keyknox.
npm install @virgilsecurity/keyknox
You will also need to install virgil-crypto and virgil-sdk from npm.
npm install virgil-crypto virgil-sdk
Note that minimum supported version of
virgil-cryptois4.0.0and minimum supported version ofvirgil-sdkis6.0.0.
script tagYou will need to add @virgilsecurity/keyknox script.
<script src="https://unpkg.com/@virgilsecurity/keyknox@^1.0.0/dist/keyknox.umd.js"></script>
You will also need to add virgil-crypto and virgil-sdk scripts.
<script src="https://unpkg.com/virgil-crypto@^4.0.0/dist/browser.umd.js"></script>
<script src="https://unpkg.com/virgil-sdk@^6.0.0/dist/virgil-sdk.browser.umd.js"></script>
Now you can use global variables Keyknox, Virgil and VirgilCrypto as namespace objects, containing all of @virgilsecurity/keyknox, virgil-sdk and virgil-crypto exports as properties.
To begin using Virgil Keyknox SDK you'll need to initialize SyncKeyStorage class. This class is responsible for synchronization between device storage - IndexedDB in a browser or file system in Node.js - and Keyknox Cloud. In order to initialize SyncKeyStorage class you'll need the following values:
identity of the useraccessTokenProvider to provide access token for Virgil serviceskeyEntryStorage to store data locallyprivateKey of current device/userpublicKeys of all devices/users that should have access to datavirgilCrypto to perform all cryptographic operationsconst { SyncKeyStorage } = require('@virgilsecurity/keyknox');
const { initCrypto, VirgilCrypto } = require('virgil-crypto');
initCrypto().then(() => {
// Identity of the user
const identity = ...;
// Setup Access Token provider to provide access token for Virgil services
// Check https://github.com/VirgilSecurity/virgil-sdk-javascript
const accessTokenProvider = ...;
// Setup Key Entry Storage to store data locally
// Check https://github.com/VirgilSecurity/virgil-sdk-javascript
const keyEntryStorage = ...;
// Public keys of users that should have access to data
const publicKeys = ...;
// Private key of current user
const privateKey = ...;
// An instance of `VirgilCrypto` class
const virgilCrypto = new VirgilCrypto();
const syncKeyStorage = SyncKeyStorage.create({
identity,
accessTokenProvider,
keyEntryStorage,
privateKey,
publicKeys,
virgilCrypto,
});
});
You can find a complete example of simple client-server application here.
If you lost your private key, you are not able to decrypt saved data anymore. So you need to reset your stored data in the Virgil Keyknox Service and start over.
import { KeyknoxClient } from '@virgilsecurity/keyknox';
const tokenPromise = accessTokenProvider.getToken({ operation: 'delete' });
const resetPromise = tokenPromise.then(token => new KeyknoxClient().resetValue(token.toString()));
const syncKeyStorage = SyncKeyStorage.create(...);
resetPromise.then(() => syncKeyStorage.sync());
Virgil Security has a powerful set of APIs, and the documentation below can get you started today.
This library is released under the BSD 3-Clause License.
Our developer support team is here to help you. Find out more information on our Help Center.
You can find us on Twitter or send us email support@VirgilSecurity.com.
Also, get extra help from our support team on Slack.
FAQs
Keyknox SDK allows developers to communicate with Virgil Keyknox Service to upload, download, and synchronize encrypted sensitive data (private keys) between different devices.
The npm package @virgilsecurity/keyknox receives a total of 1,079 weekly downloads. As such, @virgilsecurity/keyknox popularity was classified as popular.
We found that @virgilsecurity/keyknox demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.

Product
Add real-time Socket webhook events to your workflows to automatically receive pull request scan results and security alerts in real time.

Research
The Socket Threat Research Team uncovered malicious NuGet packages typosquatting the popular Nethereum project to steal wallet keys.