- Introduction
- Supported languages and platforms
- Library purposes
- Where library can be used
- Supported keys
- Build prerequisites
- Simple build
- Multiarch build
- Support
Welcome to Virgil!
Virgil is a stack of security libraries (ECIES with Crypto Agility wrapped in Virgil Cryptogram) and all the necessary infrastructure to enable seamless, end-to-end encryption for any application, platform or device. See below for currently available languages and platforms. Get in touch with us to get preview access to our key infrastructure.
Virgil Security, Inc., guides software developers into the forthcoming security world in which everything will be encrypted (and passwords will be eliminated). In this world, the days of developers having to raise millions of dollars to build a secure chat, secure email, secure file-sharing, or a secure anything have come to an end. Now developers can instead focus on building features that give them a competitive market advantage while end-users can enjoy the privacy and security they increasingly demand.
Language | Supported OS |
---|---|
C++ | ANY |
PHP | Unix, Linux, OS X |
Python | Unix, Linux, OS X |
Ruby | Unix, Linux, OS X |
Java | Unix, Linux, OS X, Windows |
.NET | Unix, Linux, OS X, Windows |
AsmJS | Unix, Linux, OS X, Windows |
NodeJS | Unix, Linux, OS X, Windows |
- Encrypt data;
- Decrypt data;
- Sign data;
- Verify data.
- on the client-side application;
- on the server-side application.
Key Algorithm | Description | Notes |
---|---|---|
RSA_256 | RSA 1024 bit | weak, not recommended |
RSA_512 | RSA 1024 bit | weak, not recommended |
RSA_1024 | RSA 1024 bit | weak, not recommended |
RSA_2048 | RSA 2048 bit | weak, not recommended |
RSA_3072 | RSA 3072 bit | |
RSA_4096 | RSA 4096 bit | |
RSA_8192 | RSA 8192 bit | |
EC_SECP192R1 | 192-bits NIST curve | |
EC_SECP224R1 | 224-bits NIST curve | |
EC_SECP256R1 | 256-bits NIST curve | |
EC_SECP384R1 | 384-bits NIST curve | |
EC_SECP521R1 | 521-bits NIST curve | |
EC_BP256R1 | 256-bits Brainpool curve | |
EC_BP384R1 | 384-bits Brainpool curve | |
EC_BP512R1 | 512-bits Brainpool curve | |
EC_SECP192K1 | 192-bits "Koblitz" curve | |
EC_SECP224K1 | 224-bits "Koblitz" curve | |
EC_SECP256K1 | 256-bits "Koblitz" curve | |
EC_CURVE25519 | Curve25519 (deprecated format) | deprecated |
FAST_EC_X25519 | Curve25519 | only encrypt / decrypt |
FAST_EC_ED25519 | Ed25519 | recommended, default |
The page lists the prerequisite packages which need to be installed on the different platforms to be able to configure and to build Virgil Crypto Library.
- Compiler:
g++
(version >= 4.9), orclang++
(version >= 3.6), ormsvc++
(version >= 14.0)
- Build tools:
cmake
(version >= 3.10)make
- Other tools:
git
swig
(version >= 3.0.7), optional for C++ builddoxygen
(optional)
This section describes how to build Virgil Crypto Library for а particular language.
Language | Supported OS | Dependencies | Build parameters | Environment | Binary |
---|---|---|---|---|---|
C++ | ANY | LANG=cpp | CDN | ||
PHP | Unix, Linux, OS X | php, php5-dev | LANG=php | CDN | |
Python | Unix, Linux, OS X | python | LANG=python | CDN | |
Ruby | Unix, Linux, OS X | ruby, ruby-dev | LANG=ruby | CDN | |
Java | Unix, Linux, OS X, Windows* | Java JDK 1.6 | LANG=java | JAVA_HOME | CDN |
.NET | Unix, Linux, OS X, Windows* | .NET 2.0, or mono 2.0 | LANG=net | CDN | |
AsmJS | Unix, Linux, OS X, Windows* | Emscripten 1.35 | LANG=asmjs | EMSDK_HOME | CDN |
NodeJS | Unix, Linux, OS X, Windows* | LANG=nodejs | CDN |
* External dependencies for Windows binaries:
- msvcp140.dll
- vcruntime140.dll
These dependencies can be installed as a part of Visual C++ Redistributable for Visual Studio 2015
- Open Terminal.
- Check that all the tools which are listed in the build prerequisite are available there.
- Set environment variables according to the table above.
> git clone https://github.com/VirgilSecurity/virgil-crypto.git
Replace {{LANG}}
placeholder to the corresponding value from the table above.
> cd virgil-crypto
> cmake -H. -B_build -DCMAKE_INSTALL_PREFIX=_install -DLANG={{LANG}}
> cmake --build _build --target install
Note, if you are using
-DLANG=nodejs
, one of the next parameters can be appended:
-DLANG_VERSION=0.12.7
-DLANG_VERSION=4.1.0
This section describes how to build Virgil Crypto Library for multi architecture targets, which are packed inside the specific package:
- Apple OS X Framework
- Apple iOS Framework
- Apple WatchOS Framework
- Apple TVOS Framework
- Android Bundle as Jar archive
- Windows Bundle, as structured
Table 2 - Supported languages and platforms
Language | Platform | Host OS | Dependencies | Build parameters | Environment |
---|---|---|---|---|---|
C++ | OS X | OS X | TARGET=osx | ||
C++ | iOS | OS X | TARGET=ios | ||
C++ | WatchOS | OS X | TARGET=applewatchos | ||
C++ | TVOS | OS X | TARGET=appletvos | ||
C++ | Windows | Windows | msvcp140.dll*, vcruntime140.dll* | TARGET=cpp | |
.NET | iOS | OS X | mono 2.0 | TARGET=net_ios | |
.NET | WatchOS | OS X | mono 2.0 | TARGET= net_applewatchos | |
.NET | TVOS | OS X | mono 2.0 | TARGET=net_appletvos | |
.NET | Android | *nix | Android NDK, mono 2.0 | TARGET=net_android | ANDROID_NDK |
.NET | Windows | Windows | .NET 2.0, msvcp140.dll*, vcruntime140.dll* | TARGET=net | |
Java | Android | *nix | Android NDK | TARGET=java_android | ANDROID_NDK |
Java | Windows | Windows | Java JDK, msvcp140.dll*, vcruntime140.dll* | TARGET=java | JAVA_HOME |
NodeJS 0.12 | Windows | Windows | msvcp140.dll*, vcruntime140.dll* | TARGET=nodejs-0.12.7 | |
NodeJS 4.1 | Windows | Windows | msvcp140.dll*, vcruntime140.dll* | TARGET=nodejs-4.1.0 |
These dependencies can be installed as a part of Visual C++ Redistributable for Visual Studio 2015
- Open Terminal.
- Check that all tools which are listed in the build prerequisites are available there.
- for Windows compiler should be MSVC;
- for OS X build toolchain should be Xcode Toolchain.
- Check that all dependencies from the table above are accessible.
- Set environment variables according to the table above.
> git clone https://github.com/VirgilSecurity/virgil-crypto.git
Replace {{TARGET}}
placeholder to the corresponding value from the table above.
Unix-like OS:
> cd virgil-crypto
> ./utils/build.sh {{TARGET}}
> ls ./install/{{TARGET}}
Windows OS:
> set MSVC_ROOT=c:\path\to\msvc\root
> set JAVA_HOME=c:\path\to\jdk
> cd virgil-crypto
> .\utils\build.bat {{TARGET}}
> dir .\install\{{TARGET}}
Email to: [email protected]