Giter VIP home page Giter VIP logo

openssl-cng-engine's Introduction

Welcome to RTI's OpenSSL CNG Engine

This OpenSSL CNG Engine project implements an engine for transparently leveraging Windows' Cryptography API: Next Generation (CNG) with OpenSSL 1.1.1. It supports CNG's Cryptographic Primitives as well as some of its Key Storage and Retrieval mechanisms and legacy CryptoAPI (CAPI) functionality for certificates.

For questions related to using this engine in conjunction with RTI's Connext DDS Secure product, please contact [email protected].

This README provides some minimal pointers only. For a complete overview of how to build, test and use this CNG Engine, check out the User's Manual on Read the Docs.

Current build status

Whenever a modification is pushed to the develop branch of this repository, the solution is built on both VS2017 and VS2019 AppVeyor instantiations, followed by test runs on each of them.

Build Status

Quickstart

This section provides some minimal pointers only. For a complete overview of how to build, test and use this CNG Engine, check out the User's Manual on Read the Docs.

The main components that this project provides are two dynamically loadable libraries called engine-bcrypt.dll, glueing the CNG Cryptographic Primitives through OpenSSL EVP methods, and engine-ncrypt.dll, implementing an OpenSSL STORE abstraction for the Windows Certificate and Key Stores. They can be built and tested from Visual Studio, or via a provided command line script.

Using Visual Studio

Building the CNG Engine should be easy, if all prerequisites are met. One option is to use the Visual Studio IDE, just (double) clicking the solution openssl-cng-engine.sln should open your installed version of Visual Studio or, if you have multiple versions installed, will let you select which version to use. As long as you have some edition of VS2017 or VS2019, you should be good. With this approach, the latest installed version of the Window SDK should automatically be configured as well. From there, build the solution as usual.

If the build was successful, the tests can be run in the debugger. The test projects are based on GoogleTest and called gtest-engine-bcrypt and gtest-engine-ncrypt. The former is a standalone test and should succeed without failures. The latter depends on the presence of certificates with their associated private keys in the Windows certificate store. By default, it will try to access the personal certificates in the local computer store. Using its keys, like needed for the signing tests, requires running with administrator privileges.

Using the command prompt

A convenient way to build the solution is provided through the msbuild-single.bat script in the msbuild directory. This can be run in a plain CMD box, no need to start a Visual Studio shell. The scripts will try to figure out the appropriate toolchain locations. Running it will output, among others, the following lines:

MSBuild-ing x86|Debug   into bld\x86-Debug-v142
MSBuild-ing x64|Debug   into bld\x64-Debug-v142
MSBuild-ing x86|Release into bld\x86-Release-v142
MSBuild-ing x64|Release into bld\x64-Release-v142

After successfully completing the build, all elements needed to run a set of functional tests should appear in the folders mentioned here. With the above setup, the following command is an example of how to run the BCrypt EVP tests from the command line:

>bld\x64-Debug-v142\gtest-engine-bcrypt.exe

As explained above, gtest-engine-ncrypt requires administrator privileges to succeed because it tries to use private keys from the local computer's personal store for its signing functionality.

This completes the Quickstart. From this point on, it is recommended to read the User's Manual on Read the Docs.

Thanks

Many thanks go to

  • AppVeyor for their great Continuous Integration (CI) service used to continuously monitor the quality of this project
  • Read the Docs for building and hosting the documentation for this project.

openssl-cng-engine's People

Contributors

reiniert avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.