Home

Awesome

Build Status GitHub license Documentation Developers

Library: Virgil Crypto

Library features | Supported algorithms | Build | Benchmark | Docs | Support

Introduction

Welcome to Virgil Security!

Virgil Security 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.

Virgil Security offers this security via 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. End-to-end encryption can be used for a variety of important reasons: compliance with regulations like HIPAA and GDPR, the transfer and storage of PII, general user privacy as a feature, breach risk mitigation and more. Virgil Crypto also has all required cryptographic functions and primitives to perform an implementation of Pythia technology.

See below for currently available languages and platforms. Get in touch with us to get beta access to our Key infrastructure.

Library Features

Supported crypto operations

Supported platforms

Crypto Library is suitable for the following platforms:

Supported languages

Crypto Library is written in C++ [CDN] and supports bindings for the following programming languages:

Swift/Objective_C language can use the Virgil Crypto Library directly, without any bind.

Available Wrappers

Virgil also has special wrappers for simplifying Crypto Library implementation in your digital solutions. We support wrappers for the following programming languages:

Supported algorithms

PurposeAlgorithm, Source
Key Generation, PRNGNIST SP 800-90A
Key DerivationKDF2*,<br> HKDF
Key ExchangeX25519*,<br> ECDH,<br> RSA
HashingSHA-2 (256/384*/512),<br> Blake2
Digital SignatureEd25519*,<br> ECDSA,<br> RSASSA-PSS
Entropy SourceLinux /dev/urandom,<br> Windows CryptGenRandom()
Symmetric AlgorithmsAES GCM*,<br> AES CBC
Elliptic CurvesX25519,<br> Ed25519*,<br> Koblitz (secp192k1, secp224k1, secp256k1),<br> Brainpool (bp256r1, bp384r1, bp512r1), <br> NIST (secp256r1, secp192r1, secp224r1, secp384r1, secp521r1)

* - used by default.

Build

Prerequisites

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.

Build the Library

This section describes how to build Virgil Crypto Library for а particular OS.

Step 1 - Get source code

> git clone https://github.com/VirgilSecurity/virgil-crypto.git

Step 2 - Run a build Script

Unix-like OS:

> cd virgil-crypto
> ./utils/build.sh

Windows OS:

> cd virgil-crypto
> ./utils/build.bat

Run the build script with the option -h to get help on how to build a library for a necessary OS, Platforms or languages.

Build command has the following syntax:

 ./utils/build.sh [--target=<target>] [--feature=<feature>] [--src=<src_dir>] [--build=<build_dir>] [--install=<install_dir>]

where the command options are:

<name>build information
cppbuild C++ library
macosbuild framework for Apple macOSX, requirements: OS X, Xcode
iosbuild framework for Apple iOS, requirements: OS X, Xcode
watchosbuild framework for Apple WatchOS, requirements: OS X, Xcode
tvosbuild framework for Apple TVOS, requirements: OS X, Xcode
phpbuild PHP library, requirements: php-dev
pythonbuild Python library
rubybuild Ruby library
javabuild Java library, requirements: $JAVA_HOME
java_androidbuild Java library under Android platform, requirements: $ANDROID_NDK
netbuild .NET library, requirements: .NET or Mono
net_macosbuild .NET library under Apple macOSX platform, requirements: Mono, OS X, Xcode
net_iosbuild .NET library under Apple iOS platform, requirements: Mono, OS X, Xcode
net_applewatchosbuild .NET library under WatchOS platform, requirements: Mono, OS X, Xcode
net_appletvosbuild .NET library under TVOS platform, requirements: Mono, OS X, Xcode
net_androidbuild .NET library under Android platform, requirements: Mono, $ANDROID_NDK
asmjsbuild AsmJS library, requirements: $EMSDK_HOME
webasmbuild WebAssembly library, requirements: $EMSDK_HOME
nodejsbuild NodeJS module
gobuild Golang library

All available Crypto Library versions you can find here.

Benchmark

You can find out benchmark of the Crypto Library in the benchmark.md file.

Docs

We always try to make cryptography accessible for programmers, and the documentation below can get you started today.

Support

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.

License

BSD 3-Clause. See LICENSE for details.