OpenSSL

Status

Status 06 January 2023

  • Building normally with both clang-cl and VS.

  • It is now possible to use clang-cl as assembler which enhances performance of several crypto functions.

  • Downloads

  • Available LTS in OpenSSL 3.0 and later.

  • Clang-cl assembler support is available from OpenSSL 3.1

Environment

  • To build all versions you need Strawberry Perl.

  • To build the emulated version you will also need NASM.

Source Code

https://github.com/openssl/openssl

Packaged source from the OpenSSL website: /source/index.html (openssl.org)

Compiling (Native)

  • Configure with perl Configure VC-WIN64-ARM

  • Compile with nmake

Compiling (Emulated)

  • Configure with perl Configure VC-WIN64A

  • Compile with nmake

Compiling with clang-cl as assembler/compiler

  • Configure with perl Configure VC-WIN64-CLANGASM-ARM for clang-cl as just the assembler.

  • Configure with perl Configure VC-CLANG-WIN64-CLANGASM-ARM for clang-cl as the assembler and compiler.

  • Compile with nmake

Installing

  • To have two different easily accessible binaries install with nmake install DESTDIR=...

Benchmarking

  • Run a fast benchmarking suite with openssl.exe speed rsa4096

  • There are several different algorithms/number of bits you can try like aes or rsa512.

  • You can also run without extra arguments for the full benchmark suite, it takes a considerable amount of time.

Blog Post

You can find the blog post for the investigation here: https://www.linaro.org/blog/openssl-for-windows-on-arm/