virgil ChangeLog (Sorted per date) = Version 2.0.4 released 2017-01-10 ## Bugfix * [GO] Fix: VirgilByteArray is missed in Golang wrapper * [Lib] Fix: Got exception when encrypt data in 32 bit architecture * [PHP] Fix: Some constants are missed in the PHP wrapper ## Changes * [Lib] Add getter VirgilCryptoException::condition() * [Build] Add compiler version to the built archive name (optional) = Version 2.0.3 released 2016-12-08 ## Bugfix * [.NET] Fix namespaces in the .NET wrapper's addons * [Lib] Fix VirgilStreamDataSource::hasData() infinite if closed file stream is given ## Changes * [Build] Use static linkage to windows runtime libraries for wrappers * [Lib] Remove restriction for ASN.1 length * [Lib] Update mbed TLS dependency to version 2.4.0 ## Features * [GO] Add Go to the wrappers = Version 2.0.2 released 2016-11-02 ## Bugfix * [Lib] Fix: VirgilChunkCipher decryption returns no data, if data was read by one pass * [Lib] Fix: Call to VirgilCipherBase::customParams() leads to exception (AsmJS) = Version 2.0.1 released 2016-10-27 ## Bugfix * Fix: Send empty data to VirgilDataSink can lead to an unpredictable behavior = Version 2.0.0 released 2016-10-03 ## Bugfix * Fix: Use of the same Nonce for chunks is insecure (VirgilChunkCipher) ## Features * [Lib] Implement Ed25519 and X25519 key parse and key write [draft-ietf-curdle-pkix-01] * [Lib] Implement EdDSA [draft-irtf-cfrg-eddsa-08] * [Lib] Implement X25519 [RFC7748] ## Changes * [Lib] Move codebase to the C++11 standard * [Lib] Implement new error handling model * [Lib] VirgilPBE -> replace named constructors with constructor that accepts enumeration * [Lib] VirgilKDF -> replace named constructors with constructor that accepts enumeration * [Lib] VirgilHash -> replace named constructors with constructor that accepts enumeration * [Lib] VirgilSymmetricCipher -> replace named constructors with constructor that accepts enumeration * [Lib] Replace enums with scoped enums * [Lib] Remove AS3 support * [Lib] Drop C# class CryptoHelper * [Lib] Remove unimplemented elliptic curves * [Lib] Remove enumeration value: VirgilKeyPair::Type::Default * [Lib] Add functions: 'encryptPrivateKey()' and 'decryptPrivateKey()' (VirgilKeyPair) * [Lib] Embed ContentInfo to the cryptogram by default * [Lib] Use enum VirgilHash::Algorithm in VirgilPBKDF * [Lib] Generate Ed25519 keys as recommended * [Lib] Make wrappers compatible with C++11 and API v2.0 * [Lib] Convert C++ exceptions to JS exceptions * [Lib] Add keys format converter PEM to DER and vice versa * [Lib] Change minimum required chunk size for VirgilBytesDataSource * [Lib] Redesign VirgilChunkCipher interface * [Lib] Change name for Apple frameworks: VirgilCrypto.framework to VSCCrypto.framework * [Build] Set CMake option: ANDROID_DEFAULT_NDK_API_LEVEL to 9 * [Build] Remove support of OS X universal binaries * [Doc] Created migration guide from version 1.8 to 2.0 * [CI] Use gcc-5 on Travis CI * [CI] Use clang-3.6 on Travis CI ## Improvements * [Lib] Add AMD64 optimizations for Ed25519 library for *nix systems * [Build] Fix GCC warning: specialization in different namespace [-fpermissive] * [Build] Add wrapper's include directories as SYSTEM * [CI] Minimize build matrix in Travis CI = Version 1.8.2 released 2016-08-09 ## Bugfix * [Java] Fix: Application crash on android device if stream is used for crypto operations = Version 1.8.1 released 2016-06-30 ## Bugfix * [Lib] Remove stale restriction on the password length for the private key = Version 1.8.0 released 2016-06-22 ## Features * [Lib] Add ability to extract public key from the private key: class VirgilKeyPair * [Lib] Move class VirgilRandom to the high level API = Version 1.7.0 released 2016-06-11 ## Features * [Lib] Add ability to produce minimum encryption output: class VirgilTinyCipher (experemental) * [CI] Build .NET wrapper for linux OS = Version 1.6.0 released 2016-05-11 ## Features * [Lib] Add functionality that check whether recipient with given identifier exists or not * [NodeJS] Make builds for Node.js versions: 4.4.4, 5.9.1, 6.1.0 * [Build] Implement in-house package manager based on CMake = Version 1.5.1 released 2016-04-29 ## Bugfix * [AsmJS] Inner enumerations of class VirgilPBKDF: Algorithm and Hash are not accessible from AsmJS wrapper = Version 1.5.0 released 2016-04-26 ## Features * [Lib] Add PBKDF2 algoritm * [Lib] Add ability to reset password on the private key ## Changes * [Lib] Change default generated curve to the Curve25519 = Version 1.4.0 released 2016-04-12 ## Features * [Lib] Add ability to use Curve25519 for all crypo operations (EXPEREMENTAL) * [Build] Add feature prefix to the lib version * [Build] Add .net build for OS X (Jenkinsfile) ## Changes * [Build] Make external dependencies installation as optional * [Build] Add feature prefix to the lib version, make impact only for archive name = Version 1.3.4 released 2016-03-27 ## Bugfix * [Lib] Fix: Corrupted ContentInfo structure if recipients count more then 6 ## Changes * [Build] Generate SHA-256 checksum file for every target archive = Version 1.3.3 released 2016-03-22 ## Changes * Change default keypair curve to the 384-bits NIST = Version 1.3.2 released 2016-03-21 ## Features * [Build] Add python3 build support ## Changes * [Build] Perform speed optimization of the build process ## Bugfix * [Java] Add missed class 'VirgilStreamDataSource' to the Java wrapper = Version 1.3.1 released 2016-03-14 Bugfix: * Fix error when parse RSA private key with key length greater then 3072 bit = Version 1.3.0 released 2016-03-07 Bugfix: * [.NET] Fix decrypt and sign methods when passing null private key password Changes: * Update underlying MbedTLS library to version 2.2.1, which includes fix of critical security issues. * Use modern PBE algorithm: PKCS#5 PBES2 with SHA-384 and AES-256-CBC. * Temporary disable SWIG feature: Exception unrolling. Impact classes: VirgilStreamSigner and VirgilStreamSigner. = Version 1.2.2 released 2016-01-15 Bugfix: * [Build] Fix build issue on Jenkins - php-5.5 and php-5.6 build on centos was lost. Changes: * [Build] Archive target binaries to the folder with archive name (build.bat). * [Build] Rename artifacts extensions from '.tar.gz' to 'tgz'. Features: * [Build] Add VERSION file to Jenkins 'install' directory when build. = Version 1.2.1 released 2016-01-14 Changes: * [Build] Make default value of platform version shorter - keep only major and minor versions. * [Build] Replace env.sh script with VIRGIL_CRYPTO_ENV_SCRIPT environment variable. * [Build] Add file with current version of CryptoLib to result directory. * [Build] Clear 'install' directory before build (build.sh). * [Build] Remove redundant 'build_all.sh' script file. Features: * [Build] Add batch file to simplify build process on windows os. * [Build] Add windows build to Jenkinsfile. = Version 1.2.0 released 2016-01-08 Bugfix: * [Lib] Fix crypto module name in ASM.JS example. * [Build] Find mbedtls configuration file for target platfrom and language. Changes: * [Lib] Replace AES-CBC with AES-GCM as default symmetric algortihm. * [Lib] Add restriction to password length. * [Lib] Remove function virgil::crypto::string_zeroize() from the wrappers. * [Lib] Remove action of dynamic loading JNI module from Java wrapper. * [Build] Exclude c++ tests from embedded platforms. * [Build] Rename wrapper 'csharp' to 'net'. * [Build] Rename interanl CMake variable 'PLATFORM_FULL_NAME' to 'LIB_FULL_NAME'. * [Build] Change library name 'virgil' to 'virgil-crypto'. * [CI] Change ${PLATFORM} to ${LANG}. * [CI] Lowercase value of the 'LANG' parameter. Features: * [Lib] Add methods to check and validate KeyPair. * [Lib] Add CryptoHelper class for .NET wrapper. * [Lib] Add parametrized method for KeyPair generation. * [Build] Add Bitcode section to all iOS, Apple WatchOS, Apple TVOS targets. * [Build] Unify LANG / PLATFROM configuration during build. * [Build] Add frameworks for all available Apple platforms (Mac OS, iOS, watchOS, tvOS). * [Build] Add library build scripts for unix-like OS. Improvements: * [Lib] Fix misspelling in header guard statement. * [Lib] Add License header to the Java source files. * [Lib] Add License header to the .NET source files. = Version 1.1.0 released 2015-10-02 Bugfix: * Fix some warnings by remove unused local variables. * Fix build on Travis-CI: replace 'wget' command with 'curl -L -O' command. Changes: * Publish docs only from branch: 'release'. * Update SWIG and CMake versions on the travis-ci. * Change CMake minimum required version to 3.2. * Remove 'using' statements from header files. * Update underlying 'mbedtls' library to version 1.3.14. Features: * Add support of node.js version 0.12 and higher. * Add support of node.js version v4.0.1 and higher. * Add support of switch node.js versions between v0.12 and v4.1.0 during compilation. * Publish documentation to the GitHub Pages. * Add ability to create package from the library installed components. * Add ability to read and write ASN.1 boolean value. * Add module to convert any Json object to the ASN.1 structure. * Duplicate VirgilByteArray utility functions to the VirgilByteArrayUtils. * Add Java platform. * Add Android NDK toolchain. * Publish Coverity Scan build with Travis-CI. * Add support of Xcode 7. * Add ability to generate keys with different parameters. Improvements: * Travis CI - Migrating from legacy to container-based infrastructure. * Remove redundant 'using' statements from generated wrapper's code. * Improve 'zeroize' function to prevent compiler optimization. = Version 1.0.1 released 2015-08-27 Bugfix: * Add required "include" file. Changes: * Use last bugfixes of mbedtls-1.3. = Version 1.0.0-rc1 released 2015-07-01 Bugfix: * Fix version number calculation. * Fix doxygen warnings. Features: * Add ability to generate documentation as part of the building process. Improvements: * Add Idea IDE files to .gitignore. * CI: Make build output verbose. * CI: Print CMake version. Changes: * Change license copyright date to 2015. * Move namespaces "asn1" and "cms" to the "foundation". * Move class "VirgilContentInfo" to the "cms" namespace. * Add uppercase namespaces to the .NET assembly. * Change name for .Net Crypto library to Virgil.Crypto.dll. * Make namespace 'virgil' clean. * Add default C# implementation for VirgilDataSource and VirgilDataSink. * Emscripten: Switch off memory optimization. * Emscripten: Change example to conform new library interface. * PHP Tests: Remove expected exception message from the test requirement, as several valid messages are exist. * CMake: Add -fPIC compiler flag to the library. * CI: Install latest CMake. * Remove dependency from Virgil Public Keys Service. * Move CLI to the separate repository. = Version 0.9.0 released 2015-05-18 Bugfix: * Lib: Fix marshalling public key with certificate if it has DER format. * Lib: Fix 64520, 64521 - Uninitialized pointer field. * Lib: Fix 64515, 64516, 64517, 64518 - Division or modulo by zero. * PHP Tests: Remove expected exception message from the test requirement, as several valid messages are exist. * AS3 Demo: Fix build - add missed import. * CMake: Fix warning COPY_ONLY - unknown argument. * CMake: Fix compatibility with cmake 2.8. Features: * Emscripten: Add 'sign/verify' functionality to the example. Improvements: * Remove comments syntax from the LICENSE. * Emscripten: Remove code duplicate. Changes: * Lib: Split package virgil::service::stream. * Lib: Move functions 'read_certificate' and 'read_sign' from CLI to the library. * Remove wrapper node.js build with node-gyp. * CMake: Replace variable PLATFORM_EMBEDDED with variable CMAKE_CROSSCOMPILING. * CMake: Add configurable variable INSTALL_DIR_NAME. * CMake: Add configurable variable ENABLE_TESTING. * CMake: Remove file 'VERSION' from the installation process. * CMake: Remove redundant variable 'INSTALL_DIR_NAME'. * CMake: Remove variables 'INSTALL_ARCH_DIR_NAME', 'INSTALL_X86_DIR_NAME', 'INSTALL_X64_DIR_NAME'. * CMake: Add configurable variable INSTALL_EXT_HEADERS. * CMake: Make 'virgil' library includes available within parent scope. * CMake: Rename property 'LOW_LEVEL_API' to 'LIB_LOW_LEVEL_API'. = Version 0.8.0 released 2015-04-16 Bugfix: * Lib: Store algorithm parameters in ASN.1 structure when marshal cipher with elliptic-curve key. * Programs: Add omitted parameter 'certificate id'. Features: * AS3: Add class VirgilBase64. * Ruby. Add wrapper for the ruby. * Python. Add wrapper for the python. * Emscripten: Add emscripten(asm.js) wrapper. Improvements: * Lib: Encapsulate fields of the class VirgilCipherBase. * Lib: Hide usage of classes: VirgilAsn1Reader and VirgilAsn1Writer. * CMake: Remove redundant installation of library headers. * CMake: Add optional flag LOW_LEVEL_API - default value is OFF. * CMake: Remove unused variable - SIMULATOR. Changes: * AS3: Move classes 'VirgilCustomParams' and 'VirgilContentInfo' to the package 'com.virgilsecurity.crypto'. * Lib: Add member type 'value_type' to the VirgilIdProvider. * Lib: Move version configuration from header file to the implementation file. * CMake: Change library installation policy, now target folder depends on the machine architecture. = Version 0.7.0 released 2015-03-31 Bugfix: * CMake: Fix CMAKE_OSX_ARCHITECTURES variable default definition. Features: * C#: Add mapping C++ VirgilByteArray to the C# byte[]. * C#: Add runtime selection of the library architecture: x86 or x86_64. * AS3: Add wrapper for class VirgilHash. Improvements: * C#: Set assembly version to the library current version. * AS3: Move utility headers to the appropriate place. * SWIG: Simplify including type mappings for VirgilByteArray. * SWIG: Move language specific typemaps to separate files. Changes: * All: Rename method VirgilChunkCipher::finalize() to VirgilChunkCipher::finish() due to name confilcts on some platforms. * SWIG C#: Make first letter of all functions and properties uppercase. * CMake C#. Rename .NET assembly of the shared library from 'virgil.assembly' to 'Virgil.Net' * CMake: Selection of install directory for C# now depends on variables: CMAKE_SYSTEM_NAME, CMAKE_OSX_ARCHITECTURES, COMPILER_ARCH_32, COMPILER_ARCH_64. * SWIG: Ignore 'operator=' and 'operator=='. = Version 0.6.0 released 2015-03-23 Bugfix: * CMake: Fix build options for jsoncpp library. * CMake: Define max java heap size for AS3 compilation process to prevent build fail. * AS3: Add try-catch section to the 'VirgilChunkCipher::startEncryption()' method wrapper. Improvements: * CMake: Add version to the AS3 library file name. * CMake: Display full AS3 library name (including version) when build. * CMake: Prevent copy C++ headers to the AS3 installation folder. * CMake: Make AS3 library build only if needed. * CMake: Replace variable AS3_MODULE_FILE_NAME with synonym WRAPPER_SWC. * AS3: Change gradle configuration file to work with gradle version 2.3 and gradlefx version 1.1.0. * CMake: Use UPDATE command instead of PATCH command in the ExternalProject_Add. * Lib: Add SHA-384 algorithm. * CMake: Add AS3 wrapper dependency on the library 'virgil'. Changes: * AS3 Demo: Change demo app to be conformed with library version 0.5.0. * AS3 Demo: Embed content info to the encrypted file. * PHP: Remove 'iconv' and 'mb_detect_encoding' dependencies from unit tests. * All: Switch from 'polarssl' main branch to the 'mbed TLS' fork made by Virgil Security. * CMake: Refactor 'mbed TLS' patch. Now its configure files: 'config.h' and 'check_config.h' only. * Lib: PBE: use external functions. * Lib: Change SHA-256 to SHA-384 as default signer hash algorithm. * Lib: Rename VirgilByteArray utility functions to short versions. * Lib: Function 'getContentInfo()' become available immediately after function 'startEncryption()' call in the class VirgilChunkCipher. * AS3: Build AS3 unit tests in the strict mode. = Version 0.5.0 released 2015-03-12 Features: * AS3: Implement Action Script 3 wrapper for virgil library version 0.4.0. Improvements: * AS3: Speed and size optimization by using flascc Link Time Optimizer (LTO). * AS3: Make all tests configurable. * AS3: Configure test VirgilVersionTest with CMAKE variables. Changes: * CMake: Apply platform specific compiler options only for native platforms build. * Lib: Changed marshalling / demarshalling process for tickets. Now 'class_name' field is handled by the base class. * Lib: Rename VirgilCipherBase::customParameters() to VirgilCipherBase::customParams(). * Lib: Renaming VirgilVersion class methods. * Lib: Remove macroses: VIRGIL_BYTE_ARRAY_FROM_C_STRING, VIRGIL_BYTE_ARRAY_FROM_STD_STRING, VIRGIL_BYTE_ARRAY_TO_STD_STRING, VIRGIL_BYTE_ARRAY_ZEROIZE. Use inline functions analogue instead. * Lib: Remove 'jsoncpp' library dependency from the public API.