6.1 File Share

The simplest distribution method: A network drive.


Why File Share?

Advantages:

  • ✓ No additional server needed
  • ✓ Quick to set up
  • ✓ Permissions via Windows ACLs
  • ✓ Everyone knows how to use folders

Disadvantages:

  • ✗ No automatic versioning
  • ✗ No dependency management
  • ✗ Manual copying required

Directory Structure

A recommended structure for the share:

\\server\builds\openssl\
├── 3.6.0\
│   ├── win-x64\
│   │   ├── bin\
│   │   │   ├── libcrypto-3-x64.dll
│   │   │   ├── libssl-3-x64.dll
│   │   │   └── openssl.exe
│   │   ├── ssl\
│   │   │   └── openssl.cnf
│   │   └── README.txt
│   ├── win-x64-fips\
│   │   └── ... (with FIPS Provider)
│   ├── linux-x64\
│   │   └── ... (Shared Objects)
│   └── wasm\
│       └── ... (JS + WASM)
├── 3.5.0\
│   └── ... (older version)
└── latest -> 3.6.0\

Set up Share

1. Create Folder

# On the server
mkdir D:\Builds\OpenSSL
mkdir D:\Builds\OpenSSL\3.6.0
mkdir D:\Builds\OpenSSL\3.6.0\win-x64

2. Copy Files

# Copy build result
Copy-Item -Recurse "D:\Projects\openssl-3.6.0\bin\*" "D:\Builds\OpenSSL\3.6.0\win-x64\"

3. Create Share

# As Administrator
New-SmbShare -Name "OpenSSL" -Path "D:\Builds\OpenSSL" -ReadAccess "Domain Users"

Or via GUI:

  1. Right-click on folder
  2. Properties → Sharing
  3. Advanced Sharing → Permissions

Usage

From Developer PC

# Access share
dir \\server\openssl\3.6.0\win-x64\bin\
 
# Copy to project
copy "\\server\openssl\3.6.0\win-x64\bin\*.dll" C:\MyProject\

Mount as Drive

# Permanently as O: (for OpenSSL)
net use O: \\server\openssl /persistent:yes
 
# Then simply:
copy O:\3.6.0\win-x64\bin\*.dll C:\MyProject\

Permissions

Group Permission
——-————
Build Server Full Control (writes new builds)
Developers Read (copy DLLs)
CI/CD Agents Read

PowerShell

# Set permissions (NTFS)
$acl = Get-Acl "D:\Builds\OpenSSL"
 
# Developers: Read only
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "DOMAIN\Developers", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
 
# Build account: Full Control
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "DOMAIN\BuildService", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
 
Set-Acl "D:\Builds\OpenSSL" $acl

For easy access to the current version:

# Create junction (like symlink)
cmd /c mklink /J "D:\Builds\OpenSSL\latest" "D:\Builds\OpenSSL\3.6.0"
 
# Then works:
# \\server\openssl\latest\win-x64\...

Update the symlink when a new version is released!


Automation

A PowerShell script for new releases:

# publish-openssl.ps1
 
param(
    [string]$Version = "3.6.0",
    [string]$SourceDir = "D:\Projects\openssl-3.6.0\bin",
    [string]$SharePath = "\\server\openssl"
)
 
$TargetDir = "$SharePath\$Version\win-x64"
 
# Create folder if not present
if (!(Test-Path $TargetDir)) {
    New-Item -ItemType Directory -Path $TargetDir -Force
}
 
# Copy files
Copy-Item -Recurse -Force "$SourceDir\*" $TargetDir
 
# Add README
@"
OpenSSL $Version
================
Build date: $(Get-Date -Format 'yyyy-MM-dd HH:mm')
Platform: Windows x64 (VC-WIN64A)
 
Contains:
- libcrypto-3-x64.dll
- libssl-3-x64.dll
- openssl.exe
 
Post-Quantum: ML-DSA, ML-KEM
"@ | Out-File "$TargetDir\README.txt"
 
Write-Host "Published: $TargetDir"

Continue to


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

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