Skip to content

Commit c63fe1f

Browse files
progress windows cert store test
1 parent 0c7704d commit c63fe1f

2 files changed

Lines changed: 43 additions & 22 deletions

File tree

.github/workflows/windows-cert-store-test.yml

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
uses: microsoft/setup-msbuild@v1
4444

4545
- name: Restore wolfSSL NuGet packages
46-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssl
46+
working-directory: ${{ github.workspace }}\wolfssl
4747
run: nuget restore ${{env.WOLFSSL_SOLUTION_FILE_PATH}}
4848

4949
- name: updated user_settings.h for sshd and x509
@@ -55,19 +55,27 @@ jobs:
5555
run: get-content ${{env.USER_SETTINGS_H_NEW}} | %{$_ -replace "if 0","if 1"}
5656

5757
- name: Build wolfssl library
58-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssl
58+
working-directory: ${{ github.workspace }}\wolfssl
5959
run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{env.BUILD_PLATFORM}} /p:Configuration=${{env.WOLFSSL_BUILD_CONFIGURATION}} /t:wolfssl ${{env.WOLFSSL_SOLUTION_FILE_PATH}}
6060

6161
- name: Restore NuGet packages
62-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh\ide\winvs
62+
working-directory: ${{ github.workspace }}\wolfssh\ide\winvs
6363
run: nuget restore ${{env.SOLUTION_FILE_PATH}}
6464

6565
- name: Build wolfssh
66-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh\ide\winvs
66+
working-directory: ${{ github.workspace }}\wolfssh\ide\winvs
6767
run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{env.BUILD_PLATFORM}} /p:WindowsTargetPlatformVersion=${{env.TARGET_PLATFORM}} /p:Configuration=${{env.WOLFSSH_BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}
6868

69+
- name: Upload wolfSSH build artifacts
70+
uses: actions/upload-artifact@v4
71+
with:
72+
name: wolfssh-windows-build
73+
if-no-files-found: error
74+
path: |
75+
wolfssh/ide/winvs/**/Release/**
76+
6977
- name: Create PowerShell script to import cert to store
70-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
78+
working-directory: ${{ github.workspace }}\wolfssh
7179
run: |
7280
@"
7381
# Import certificate and key to Windows Certificate Store
@@ -128,7 +136,7 @@ jobs:
128136
"@ | Out-File -FilePath import-cert.ps1 -Encoding UTF8
129137
130138
- name: Build import script
131-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
139+
working-directory: ${{ github.workspace }}\wolfssh
132140
shell: pwsh
133141
run: |
134142
# Note: This step is informational - actual import happens in test job
@@ -159,8 +167,14 @@ jobs:
159167
with:
160168
path: wolfssh
161169

170+
- name: Download wolfSSH build artifacts
171+
uses: actions/download-artifact@v4
172+
with:
173+
name: wolfssh-windows-build
174+
path: .
175+
162176
- name: Set up test environment - ${{ matrix.test_name }}
163-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
177+
working-directory: ${{ github.workspace }}\wolfssh
164178
shell: pwsh
165179
run: |
166180
Write-Host "=== Test Configuration ==="
@@ -183,7 +197,7 @@ jobs:
183197
184198
Write-Host "Server cert created: $($serverCert.Subject)"
185199
Write-Host "Server cert thumbprint: $($serverCert.Thumbprint)"
186-
Write-Host "SERVER_CERT_SUBJECT=$($serverCert.Subject)" | Out-File -FilePath $env:GITHUB_ENV -Append
200+
Add-Content -Path $env:GITHUB_ENV -Value "SERVER_CERT_SUBJECT=$($serverCert.Subject)"
187201
188202
# Create client certificate in cert store
189203
$clientCert = New-SelfSignedCertificate `
@@ -197,10 +211,10 @@ jobs:
197211
198212
Write-Host "Client cert created: $($clientCert.Subject)"
199213
Write-Host "Client cert thumbprint: $($clientCert.Thumbprint)"
200-
Write-Host "CLIENT_CERT_SUBJECT=$($clientCert.Subject)" | Out-File -FilePath $env:GITHUB_ENV -Append
214+
Add-Content -Path $env:GITHUB_ENV -Value "CLIENT_CERT_SUBJECT=$($clientCert.Subject)"
201215
202216
- name: Create wolfSSHd config file
203-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
217+
working-directory: ${{ github.workspace }}\wolfssh
204218
shell: pwsh
205219
run: |
206220
$configContent = @"
@@ -230,7 +244,7 @@ jobs:
230244
Get-Content sshd_config_test
231245
232246
- name: Find wolfSSH executables
233-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
247+
working-directory: ${{ github.workspace }}\wolfssh
234248
shell: pwsh
235249
run: |
236250
# Find wolfsshd.exe
@@ -239,7 +253,7 @@ jobs:
239253
Select-Object -First 1
240254
if ($sshdExe) {
241255
Write-Host "Found wolfsshd.exe at: $($sshdExe.FullName)"
242-
Write-Host "SSHD_PATH=$($sshdExe.FullName)" | Out-File -FilePath $env:GITHUB_ENV -Append
256+
Add-Content -Path $env:GITHUB_ENV -Value "SSHD_PATH=$($sshdExe.FullName)"
243257
} else {
244258
Write-Host "ERROR: wolfsshd.exe not found"
245259
Get-ChildItem -Recurse -Filter "*.exe" | Select-Object FullName
@@ -252,7 +266,7 @@ jobs:
252266
Select-Object -First 1
253267
if ($sftpExe) {
254268
Write-Host "Found wolfsftp.exe at: $($sftpExe.FullName)"
255-
Write-Host "SFTP_PATH=$($sftpExe.FullName)" | Out-File -FilePath $env:GITHUB_ENV -Append
269+
Add-Content -Path $env:GITHUB_ENV -Value "SFTP_PATH=$($sftpExe.FullName)"
256270
} else {
257271
Write-Host "ERROR: wolfsftp.exe not found"
258272
Get-ChildItem -Recurse -Filter "*.exe" | Select-Object FullName
@@ -265,13 +279,13 @@ jobs:
265279
Select-Object -First 1
266280
if ($sshExe) {
267281
Write-Host "Found wolfssh.exe at: $($sshExe.FullName)"
268-
Write-Host "SSH_PATH=$($sshExe.FullName)" | Out-File -FilePath $env:GITHUB_ENV -Append
282+
Add-Content -Path $env:GITHUB_ENV -Value "SSH_PATH=$($sshExe.FullName)"
269283
} else {
270284
Write-Host "WARNING: wolfssh.exe not found (SSH client test will be skipped)"
271285
}
272286
273287
- name: Start wolfSSHd in background
274-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
288+
working-directory: ${{ github.workspace }}\wolfssh
275289
shell: pwsh
276290
run: |
277291
$sshdPath = (Get-Content env:SSHD_PATH)
@@ -286,7 +300,7 @@ jobs:
286300
-PassThru -NoNewWindow
287301
288302
Write-Host "Started wolfSSHd with PID: $($sshdProcess.Id)"
289-
Write-Host "SSHD_PID=$($sshdProcess.Id)" | Out-File -FilePath $env:GITHUB_ENV -Append
303+
Add-Content -Path $env:GITHUB_ENV -Value "SSHD_PID=$($sshdProcess.Id)"
290304
291305
# Wait a bit for server to start
292306
Start-Sleep -Seconds 3
@@ -298,7 +312,7 @@ jobs:
298312
}
299313
300314
- name: Test SFTP connection
301-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
315+
working-directory: ${{ github.workspace }}\wolfssh
302316
shell: pwsh
303317
run: |
304318
$sftpPath = (Get-Content env:SFTP_PATH)
@@ -383,7 +397,7 @@ jobs:
383397
Write-Host "Test completed - key exchange appears to have worked"
384398
385399
- name: Test SSH client connection
386-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
400+
working-directory: ${{ github.workspace }}\wolfssh
387401
shell: pwsh
388402
run: |
389403
$sshPath = (Get-Content env:SSH_PATH -ErrorAction SilentlyContinue)
@@ -462,7 +476,7 @@ jobs:
462476
463477
- name: Cleanup
464478
if: always()
465-
working-directory: ${{env.GITHUB_WORKSPACE}}wolfssh
479+
working-directory: ${{ github.workspace }}\wolfssh
466480
shell: pwsh
467481
run: |
468482
# Stop wolfSSHd

apps/wolfsshd/wolfsshd.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@ static int SetupCTX(WOLFSSHD_CONFIG* conf, WOLFSSH_CTX** ctx,
423423
wc_FreeDer(&der);
424424
}
425425
}
426+
}
426427
}
427428

428429
#if defined(WOLFSSH_OSSH_CERTS) || defined(WOLFSSH_CERTS)
@@ -496,13 +497,19 @@ static int SetupCTX(WOLFSSHD_CONFIG* conf, WOLFSSH_CTX** ctx,
496497

497498
if (ret == WS_SUCCESS) {
498499
if (wolfSSHD_ConfigGetUserCAStore(conf)) {
500+
#if defined(_WIN32)
499501
if (wolfSSL_CTX_load_windows_user_CA_certs(sslCtx,
500-
wolfSSHD_ConfigGetWinUserStores(conf),
501-
wolfSSHD_ConfigGetWinUserDwFlags(conf),
502-
wolfSSHD_ConfigGetWinUserPvPara(conf)) != WOLFSSL_SUCCESS) {
502+
wolfSSHD_ConfigGetWinUserStores(conf),
503+
wolfSSHD_ConfigGetWinUserDwFlags(conf),
504+
wolfSSHD_ConfigGetWinUserPvPara(conf)) != WOLFSSL_SUCCESS) {
503505
wolfSSH_Log(WS_LOG_INFO, "[SSHD] Issue loading user CAs");
504506
ret = WS_FATAL_ERROR;
505507
}
508+
#else
509+
wolfSSH_Log(WS_LOG_INFO,
510+
"[SSHD] User CA store is only supported on Windows");
511+
ret = WS_BAD_ARGUMENT;
512+
#endif /* _WIN32 */
506513
}
507514
}
508515

0 commit comments

Comments
 (0)