1.1 Install Windows Tools

This page explains each step in detail - ideal for beginners.


1. Visual Studio 2022

What is Visual Studio?

Visual Studio is Microsoft's development environment. It includes:

  • C/C++ Compiler (cl.exe) - compiles the OpenSSL source code
  • Linker (link.exe) - creates the final DLLs
  • nmake - executes build commands

Installation

Option A: Via winget (recommended)

winget install Microsoft.VisualStudio.2022.Community

Option B: Manual Download

  1. Select „Community“ (free)
  2. Start the installer

Select Workload

After download, the Visual Studio Installer opens:

  1. Click „Modify“ (if already installed) or „Install“
  2. Select: „Desktop development with C++„
  3. In the right panel, make sure:
    • ☑ MSVC v143 - VS 2022 C++ x64/x86 Build-Tools
    • ☑ Windows 10/11 SDK (latest version)
  4. Click „Install“

Important: Installation takes about 10-20 GB and 30-60 minutes!

Verification

After installation:

# 1. Open Developer PowerShell (search in Start Menu)
#    or load VS environment manually:
 
& "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
 
# 2. Check compiler
cl

Expected output:

Microsoft (R) C/C++ Optimizing Compiler Version 19.xx.xxxxx for x64

2. Windows SDK

What is the Windows SDK?

The Windows SDK contains header files like stdlib.h, windows.h, etc. Without these, the compiler cannot find basic functions.

Installation

Normally the SDK is installed with Visual Studio. If not:

winget install Microsoft.WindowsSDK.10.0.22621

Or via Visual Studio Installer:

  1. „Individual Components“ tab
  2. Search: „Windows SDK“
  3. Select version 10.0.22621 or newer

Verification

# Check if SDK folder exists
Test-Path "C:\Program Files (x86)\Windows Kits\10\Include"

Should output True.


3. Strawberry Perl

What is Perl?

Perl is a scripting language. OpenSSL uses Perl scripts for:

  • Configure - Detects the system and creates build files
  • Code generation for different platforms

Why Strawberry Perl?

There are several Perl distributions for Windows:

  • Strawberry Perl - Recommended, includes everything needed, easy to install
  • ActivePerl - Commercial, not recommended
  • Cygwin Perl - Can work, but more complicated

Installation

winget install StrawberryPerl.StrawberryPerl

Default installation path: C:\Strawberry\perl\bin

Verification

Open new terminal, then:

perl -v

Expected output:

This is perl 5, version 38, subversion 2 (v5.38.2)

If „perl is not recognized“ appears: Restart computer or set PATH manually.


4. NASM (Netwide Assembler)

What is NASM?

NASM is an assembler - it translates assembly code into machine code.

OpenSSL contains hand-optimized assembly routines for:

  • AES encryption (up to 10x faster!)
  • SHA hash functions
  • Other cryptographic operations

Do I need NASM?

Situation NASM needed?
———–————-
Production build Yes, highly recommended
Development/test Optional
FIPS build Yes, mandatory

Without NASM: OpenSSL compiles but uses slower C implementations.

Installation

winget install NASM.NASM

Important: NASM is often not automatically added to PATH!

Set PATH manually

# Typical NASM path (may vary!)
$nasmPath = "$env:LOCALAPPDATA\bin\NASM"
 
# Check if folder exists
if (Test-Path $nasmPath) {
    Write-Host "NASM found in: $nasmPath"
} else {
    # Check alternative paths
    Get-ChildItem -Path "C:\" -Filter "nasm.exe" -Recurse -ErrorAction SilentlyContinue |
        Select-Object -First 1 -ExpandProperty DirectoryName
}

Then set PATH (temporary for this session):

$env:PATH = "$nasmPath;$env:PATH"

Verification

nasm -v

Expected output:

NASM version 2.16.01 compiled on Dec 21 2023

5. Git

What is Git?

Git is a version control system. You need it to:

  • Download OpenSSL source code from GitHub
  • Select the correct version (tag)

Installation

winget install Git.Git

Verification

git --version

Expected output:

git version 2.43.0.windows.1

Summary

After installing all tools, the following should work:

# Load Visual Studio environment
& "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
 
# Check all tools
cl          # → Microsoft (R) C/C++ Optimizing Compiler...
perl -v     # → This is perl 5...
nasm -v     # → NASM version 2.xx...
git --version # → git version 2.xx...

Tip: Save these commands in a check-tools.ps1 file for later use.


Continue to


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: on 2026/01/29 at 09:16 PM