mirror of
https://github.com/Neo-Desktop/WindowsXPKg
synced 2025-07-01 09:50:22 +03:00
Compare commits
39 Commits
dos-window
...
ccf93a0089
Author | SHA1 | Date | |
---|---|---|---|
ccf93a0089 | |||
ae391a5e50 | |||
3620cf5af6 | |||
06ed5ef240 | |||
161aa2de4c | |||
a50688657d | |||
1679583e64 | |||
02c85b50b1 | |||
93732e152b | |||
95803054ba | |||
8619fccb11 | |||
06b9d937b1 | |||
453151f20f | |||
1bb00cf53d | |||
a787fc8e85 | |||
582ddf1bb8 | |||
13bf69c7e1 | |||
9fec269ad0 | |||
8e15a4f5b8 | |||
958169ccb5 | |||
63fbbd83ef | |||
de659846d4 | |||
7c4bcdc847 | |||
859a21656c | |||
4b2ef7ac72 | |||
216c9cdf9d | |||
8f685a022c | |||
e4058ddf19 | |||
45004623be | |||
a4cb524fed | |||
03ae90163a | |||
c1e9a0f021 | |||
152c03456c | |||
ea51438766 | |||
8ee1acc2be | |||
3134a6f7a3 | |||
b75d08b3be | |||
20c84661b2 | |||
fefc8552b6 |
22
.github/workflows/dos-djgpp.yml
vendored
22
.github/workflows/dos-djgpp.yml
vendored
@ -20,7 +20,11 @@
|
|||||||
|
|
||||||
name: C/C++ CI (DOS DJGPP)
|
name: C/C++ CI (DOS DJGPP)
|
||||||
|
|
||||||
on: workflow_dispatch
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CMAKE_C_COMPILER: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-gcc
|
CMAKE_C_COMPILER: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-gcc
|
||||||
@ -50,7 +54,6 @@ jobs:
|
|||||||
cd watt32/util
|
cd watt32/util
|
||||||
make clean && make linux
|
make clean && make linux
|
||||||
cd ../src
|
cd ../src
|
||||||
source ${{ github.workspace }}/djgpp/setenv.sh
|
|
||||||
./configur.sh djgpp
|
./configur.sh djgpp
|
||||||
make -f djgpp.mak
|
make -f djgpp.mak
|
||||||
ln -s ${{ github.workspace }}/djgpp/watt32/lib/libwatt.a ${{ github.workspace }}/djgpp/lib
|
ln -s ${{ github.workspace }}/djgpp/watt32/lib/libwatt.a ${{ github.workspace }}/djgpp/lib
|
||||||
@ -64,6 +67,7 @@ jobs:
|
|||||||
./Configure no-threads -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP
|
./Configure no-threads -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP
|
||||||
make && make install
|
make && make install
|
||||||
popd
|
popd
|
||||||
|
ls ${{ github.workspace }}/djgpp/i586-pc-msdosdjgpp/bin/
|
||||||
|
|
||||||
- name: Checkout Source Tree
|
- name: Checkout Source Tree
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -71,19 +75,19 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
uses: threeal/cmake-action@v1.2.0
|
uses: threeal/cmake-action@v1.2.0
|
||||||
with:
|
with:
|
||||||
c-compiler: ${{ github.workspace }}/djgpp/i586-pc-msdosdjgpp/bin/gcc
|
c-compiler: gcc
|
||||||
cxx-compiler: ${{ github.workspace }}/djgpp/i586-pc-msdosdjgpp/bin/g++
|
cxx-compiler: g++
|
||||||
options: OPENSSL_ROOT_DIR:string=${{ github.workspace }}/djgpp DJGPP_WATT32=ON
|
options: OPENSSL_ROOT_DIR:string=${{ github.workspace }}/djgpp DJGPP_WATT32=ON
|
||||||
run-build: true
|
run-build: true
|
||||||
|
|
||||||
- name: Move files to correct directory
|
- name: Test & Move files to correct directory
|
||||||
run: |
|
run: |
|
||||||
mkdir build/actions_upload
|
mkdir -p build/actions_upload
|
||||||
tar -czf WindowsXPKg_linux_x86_64.tar.gz -C build xpkey keys.json
|
mv build/umskt build/actions_upload/umskt
|
||||||
mv WindowsXPKg_linux_x86_64.tgz build/actions_upload/
|
|
||||||
|
|
||||||
- name: Upload build artifact
|
- name: Upload build artifact
|
||||||
uses: actions/upload-artifact@v3.1.2
|
uses: actions/upload-artifact@v3.1.2
|
||||||
with:
|
with:
|
||||||
name: Build
|
name: UMSKT-DOS-DJGPP
|
||||||
path: build/actions_upload
|
path: build/actions_upload
|
||||||
|
|
||||||
|
61
.github/workflows/freebsd.yml
vendored
Normal file
61
.github/workflows/freebsd.yml
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# This file is a part of the UMSKT Project
|
||||||
|
#
|
||||||
|
# Copyleft (C) 2019-2023 UMSKT Contributors (et.al.)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# @FileCreated by techguy16 on 07/23/2023
|
||||||
|
# @Maintainer techguy16
|
||||||
|
|
||||||
|
name: C/C++ CI (FreeBSD)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: macos-latest
|
||||||
|
name: build-x86_64
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Build & Test in FreeBSD
|
||||||
|
id: test
|
||||||
|
uses: vmactions/freebsd-vm@v0
|
||||||
|
with:
|
||||||
|
envs: 'MYTOKEN MYTOKEN2'
|
||||||
|
usesh: true
|
||||||
|
prepare: |
|
||||||
|
pkg install -y cmake openssl git bash
|
||||||
|
|
||||||
|
run: |
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
./umskt # Execute the test here
|
||||||
|
|
||||||
|
- name: Move files to correct directory
|
||||||
|
run: |
|
||||||
|
mkdir -p build/actions_upload
|
||||||
|
mv build/umskt build/actions_upload/umskt
|
||||||
|
|
||||||
|
- name: Upload build artifact
|
||||||
|
uses: actions/upload-artifact@v3.1.2
|
||||||
|
with:
|
||||||
|
name: UMSKT-FreeBSD
|
||||||
|
path: build/actions_upload
|
60
.github/workflows/macos.yml
vendored
Normal file
60
.github/workflows/macos.yml
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# This file is a part of the UMSKT Project
|
||||||
|
#
|
||||||
|
# Copyleft (C) 2019-2023 UMSKT Contributors (et.al.)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# @FileCreated by techguy16 on 07/23/2023
|
||||||
|
# @Maintainer techguy16
|
||||||
|
|
||||||
|
name: C/C++ CI (macOS)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-x86:
|
||||||
|
runs-on: macos-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- arch: x86_64
|
||||||
|
steps:
|
||||||
|
- name: Checkout Source Tree
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Configure and build UMSKT
|
||||||
|
run: |
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||||
|
make
|
||||||
|
|
||||||
|
- name: Move files to correct directory
|
||||||
|
run: |
|
||||||
|
mkdir -p build/actions_upload
|
||||||
|
mv build/umskt build/actions_upload/umskt
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
cd build/actions_upload
|
||||||
|
./umskt
|
||||||
|
|
||||||
|
- name: Upload build artifact
|
||||||
|
uses: actions/upload-artifact@v3.1.2
|
||||||
|
with:
|
||||||
|
name: UMSKT-macOS-${{ matrix.arch }}-static
|
||||||
|
path: build/actions_upload
|
70
.github/workflows/windows.yml
vendored
70
.github/workflows/windows.yml
vendored
@ -30,16 +30,33 @@ jobs:
|
|||||||
build-32bit:
|
build-32bit:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install v141_xp
|
# https://github.com/actions/runner-images/issues/6067#issuecomment-1213069040
|
||||||
uses: thepwrtank18/install-vs-components@v1.0.0
|
- name: Install Windows XP Support for Visual Studio
|
||||||
with:
|
run: |
|
||||||
components: Microsoft.VisualStudio.Component.WinXP
|
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
|
||||||
|
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
|
||||||
|
$componentsToAdd = @(
|
||||||
|
"Microsoft.VisualStudio.Component.WinXP"
|
||||||
|
)
|
||||||
|
[string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_}
|
||||||
|
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
|
||||||
|
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
|
||||||
|
if ($process.ExitCode -eq 0)
|
||||||
|
{
|
||||||
|
Write-Host "components have been successfully added"
|
||||||
|
Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.*
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "components were not installed"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
- name: Download And Install 32-bit OpenSSL 3.1.1
|
- name: Download And Install 32-bit OpenSSL 3.1.2
|
||||||
run: |
|
run: |
|
||||||
$installDir = "$Env:ProgramFiles\OpenSSL"
|
$installDir = "$Env:ProgramFiles\OpenSSL"
|
||||||
$installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_1.exe"
|
$installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_2.exe"
|
||||||
$installerName = "Win32OpenSSL-3_1_1.exe"
|
$installerName = "Win32OpenSSL-3_1_2.exe"
|
||||||
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
|
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
|
||||||
|
|
||||||
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
|
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
|
||||||
@ -57,14 +74,13 @@ jobs:
|
|||||||
- name: Configure UMSKT
|
- name: Configure UMSKT
|
||||||
uses: threeal/cmake-action@v1.2.0
|
uses: threeal/cmake-action@v1.2.0
|
||||||
with:
|
with:
|
||||||
working-directory: build
|
|
||||||
generator: "Visual Studio 17 2022"
|
generator: "Visual Studio 17 2022"
|
||||||
options: CMAKE_SYSTEM_VERSION="5.1.2600"
|
options: CMAKE_SYSTEM_VERSION="5.1.2600"
|
||||||
args: -A "Win32" -T v141_xp
|
args: -A "Win32" -T v141_xp
|
||||||
|
|
||||||
- name: Build UMSKT
|
- name: Build UMSKT
|
||||||
working-directory: build
|
working-directory: build
|
||||||
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release /P:XPDeprecationWarning=false
|
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release
|
||||||
|
|
||||||
- name: Upload build artifact
|
- name: Upload build artifact
|
||||||
uses: actions/upload-artifact@v3.1.2
|
uses: actions/upload-artifact@v3.1.2
|
||||||
@ -75,16 +91,32 @@ jobs:
|
|||||||
build-64bit:
|
build-64bit:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install v141_xp
|
- name: Install Windows XP Support for Visual Studio
|
||||||
uses: thepwrtank18/install-vs-components@v1.0.0
|
run: |
|
||||||
with:
|
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
|
||||||
components: Microsoft.VisualStudio.Component.WinXP
|
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
|
||||||
|
$componentsToAdd = @(
|
||||||
- name: Download And Install 64-bit OpenSSL 3.1.1
|
"Microsoft.VisualStudio.Component.WinXP"
|
||||||
|
)
|
||||||
|
[string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_}
|
||||||
|
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
|
||||||
|
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
|
||||||
|
if ($process.ExitCode -eq 0)
|
||||||
|
{
|
||||||
|
Write-Host "components have been successfully added"
|
||||||
|
Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.*
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "components were not installed"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Download And Install 64-bit OpenSSL 3.1.2
|
||||||
run: |
|
run: |
|
||||||
$installDir = "$Env:ProgramFiles\OpenSSL"
|
$installDir = "$Env:ProgramFiles\OpenSSL"
|
||||||
$installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_1.exe"
|
$installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_2.exe"
|
||||||
$installerName = "Win64OpenSSL-3_1_1.exe"
|
$installerName = "Win64OpenSSL-3_1_2.exe"
|
||||||
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
|
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
|
||||||
|
|
||||||
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
|
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
|
||||||
@ -103,11 +135,11 @@ jobs:
|
|||||||
uses: threeal/cmake-action@v1.2.0
|
uses: threeal/cmake-action@v1.2.0
|
||||||
with:
|
with:
|
||||||
generator: "Visual Studio 17 2022"
|
generator: "Visual Studio 17 2022"
|
||||||
args: -A "x64" -T v141_xp
|
args: -A "x64" -T "v141_xp"
|
||||||
|
|
||||||
- name: Build UMSKT
|
- name: Build UMSKT
|
||||||
working-directory: build
|
working-directory: build
|
||||||
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release /P:XPDeprecationWarning=false
|
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release
|
||||||
|
|
||||||
- name: Upload build artifact
|
- name: Upload build artifact
|
||||||
uses: actions/upload-artifact@v3.1.2
|
uses: actions/upload-artifact@v3.1.2
|
||||||
|
196
CMakeLists.txt
196
CMakeLists.txt
@ -18,160 +18,92 @@
|
|||||||
# @FileCreated by Andrew on 05/30/2023
|
# @FileCreated by Andrew on 05/30/2023
|
||||||
# @Maintainer Neo
|
# @Maintainer Neo
|
||||||
|
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
PROJECT(UMSKT)
|
|
||||||
SET(CMAKE_CXX_STANDARD 17)
|
|
||||||
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
||||||
OPTION(UMSKT_USE_SHARED_OPENSSL "Force linking against the system-wide OpenSSL library" OFF)
|
|
||||||
OPTION(MUSL_STATIC "Enable fully static builds in a muslc environment (i.e. Alpine Linux)" OFF)
|
|
||||||
OPTION(DJGPP_WATT32 "Enable compilation and linking with DJGPP/WATT32/OpenSSL" OFF)
|
|
||||||
OPTION(MSVC_MSDOS_STUB "Specify a custom MS-DOS stub for a 32-bit MSVC compilation" OFF)
|
|
||||||
|
|
||||||
SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS})
|
project(UMSKT)
|
||||||
SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS})
|
set(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "macOS SDK path")
|
||||||
|
|
||||||
IF(UMSKT_USE_SHARED_OPENSSL)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
SET(OPENSSL_USE_STATIC_LIBS FALSE)
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
SET(OPENSSL_MSVC_STATIC_RT FALSE)
|
|
||||||
MESSAGE(WARNING "[UMSKT] Forcing shared OpenSSL runtime")
|
|
||||||
ELSE()
|
|
||||||
SET(OPENSSL_USE_STATIC_LIBS TRUE)
|
|
||||||
SET(OPENSSL_MSVC_STATIC_RT TRUE)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(DJGPP_WATT32)
|
option(UMSKT_USE_SHARED_OPENSSL "Force linking against the system-wide OpenSSL library" OFF)
|
||||||
SET(CMAKE_SYSTEM_NAME MSDOS)
|
option(MUSL_STATIC "Enable fully static builds in a muslc environment (i.e. Alpine Linux)" OFF)
|
||||||
SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS} ${DJGPP_WATT32})
|
option(DJGPP_WATT32 "Enable compilation and linking with DJGPP/WATT32/OpenSSL" OFF)
|
||||||
SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS} ${WATT_ROOT}/lib)
|
option(MSVC_MSDOS_STUB "Specify a custom MS-DOS stub for a 32-bit MSVC compilation" OFF)
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
# find the system installed OpenSSL development library
|
find_package(OpenSSL REQUIRED)
|
||||||
FIND_PACKAGE(OpenSSL REQUIRED)
|
|
||||||
IF(NOT OPENSSL_FOUND)
|
|
||||||
MESSAGE(SEND_ERROR "OpenSSL Development Libraries Not Found")
|
|
||||||
MESSAGE(SEND_ERROR "Please consult your package manager of choice to install the prerequisite")
|
|
||||||
MESSAGE(SEND_ERROR "The package name is commonly called libssl-dev or openssl-dev depending on distribution")
|
|
||||||
MESSAGE(FATAL_ERROR "Can not continue without OpenSSL")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
# if we found shared libraries - do the following:
|
if(NOT OpenSSL_FOUND)
|
||||||
STRING(REGEX MATCH "(\\.so|\\.dll|\\.dylib)$" OPENSSL_CRYPTO_SHARED "${OPENSSL_CRYPTO_LIBRARY}")
|
message(FATAL_ERROR "OpenSSL Development Libraries Not Found. Please install the required OpenSSL development package.")
|
||||||
IF(OPENSSL_CRYPTO_SHARED)
|
endif()
|
||||||
MESSAGE(STATUS "[UMSKT] Detected Shared library version of OpenSSL")
|
|
||||||
SET(BUILD_SHARED_LIBS ON)
|
|
||||||
ELSE()
|
|
||||||
MESSAGE(STATUS "[UMSKT] Detected Static Library version of OpenSSL")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
# if we're compiling with MSVC, respect the DEBUG compile option
|
if(UMSKT_USE_SHARED_OPENSSL)
|
||||||
IF(MSVC)
|
set(OPENSSL_USE_STATIC_LIBS FALSE)
|
||||||
SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
set(OPENSSL_MSVC_STATIC_RT FALSE)
|
||||||
IF(NOT BUILD_SHARED_LIBS)
|
else()
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MT")
|
set(OPENSSL_USE_STATIC_LIBS TRUE)
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd")
|
set(OPENSSL_MSVC_STATIC_RT TRUE)
|
||||||
ELSE()
|
endif()
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MD")
|
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd")
|
|
||||||
ENDIF()
|
|
||||||
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT")
|
|
||||||
SET(CMAKE_ENABLE_EXPORTS ON)
|
|
||||||
SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc)
|
|
||||||
SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(MUSL_STATIC)
|
if(MUSL_STATIC AND NOT UMSKT_USE_SHARED_OPENSSL)
|
||||||
MESSAGE(STATUS "[UMSKT] Performing a fully static build using muslc")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
|
||||||
SET(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++")
|
||||||
SET(CMAKE_SHARED_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++")
|
||||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
|
endif()
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
# initalize cpm.CMake
|
include(cmake/CPM.cmake)
|
||||||
INCLUDE(cmake/CPM.cmake)
|
|
||||||
|
|
||||||
# fetch cpm.CMake dependencies
|
|
||||||
# Include JSON development library
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME nlohmann_json
|
NAME nlohmann_json
|
||||||
GITHUB_REPOSITORY nlohmann/json
|
GITHUB_REPOSITORY nlohmann/json
|
||||||
VERSION 3.11.2
|
VERSION 3.11.2
|
||||||
)
|
)
|
||||||
|
|
||||||
# Include fmt development library
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME fmt
|
NAME fmt
|
||||||
GITHUB_REPOSITORY fmtlib/fmt
|
GITHUB_REPOSITORY fmtlib/fmt
|
||||||
GIT_TAG 10.0.0
|
GIT_TAG 10.0.0
|
||||||
VERSION 10.0.0
|
VERSION 10.0.0
|
||||||
)
|
)
|
||||||
|
|
||||||
# Include cmrc resource compiler
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME cmrc
|
NAME cmrc
|
||||||
GITHUB_REPOSITORY vector-of-bool/cmrc
|
GITHUB_REPOSITORY vector-of-bool/cmrc
|
||||||
GIT_TAG 2.0.1
|
GIT_TAG 2.0.1
|
||||||
VERSION 2.0.1
|
VERSION 2.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
# Include Crypto++ development library
|
# For Emscripten builds, set CMAKE_TOOLCHAIN_FILE to the appropriate file
|
||||||
#CPMAddPackage(
|
set(EMSCRIPTEN_BUILD OFF CACHE BOOL "Build for Emscripten" FORCE)
|
||||||
# NAME cryptopp-cmake
|
if(EMSCRIPTEN_BUILD)
|
||||||
# GITHUB_REPOSITORY abdes/cryptopp-cmake
|
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/Emscripten.cmake" CACHE STRING "Emscripten toolchain file")
|
||||||
# GIT_TAG CRYPTOPP_8_8_0
|
endif()
|
||||||
# VERSION 8.8.0
|
|
||||||
# OPTIONS "CRYPTOPP_BUILD_TESTING OFF"
|
|
||||||
#)
|
|
||||||
|
|
||||||
#include googletest unit testing library
|
|
||||||
#CPMAddPackage(
|
|
||||||
# NAME googletest
|
|
||||||
# GITHUB_REPOSITORY google/googletest
|
|
||||||
# VERSION 1.13.0
|
|
||||||
# OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt"
|
|
||||||
#)
|
|
||||||
|
|
||||||
### Resource compilation
|
|
||||||
CMRC_ADD_RESOURCE_LIBRARY(umskt-rc ALIAS umskt::rc NAMESPACE umskt keys.json)
|
CMRC_ADD_RESOURCE_LIBRARY(umskt-rc ALIAS umskt::rc NAMESPACE umskt keys.json)
|
||||||
|
|
||||||
SET(LIBUMSKT_SRC src/libumskt/libumskt.cpp src/libumskt/pidgen3/BINK1998.cpp src/libumskt/pidgen3/BINK2002.cpp src/libumskt/pidgen3/key.cpp src/libumskt/pidgen3/util.cpp src/libumskt/confid/confid.cpp src/libumskt/pidgen2/PIDGEN2.cpp src/libumskt/debugoutput.cpp)
|
set(LIBUMSKT_SRC
|
||||||
|
src/libumskt/libumskt.cpp
|
||||||
|
src/libumskt/pidgen3/BINK1998.cpp
|
||||||
|
src/libumskt/pidgen3/BINK2002.cpp
|
||||||
|
src/libumskt/pidgen3/key.cpp
|
||||||
|
src/libumskt/pidgen3/util.cpp
|
||||||
|
src/libumskt/confid/confid.cpp
|
||||||
|
src/libumskt/pidgen2/PIDGEN2.cpp
|
||||||
|
src/libumskt/debugoutput.cpp
|
||||||
|
)
|
||||||
|
|
||||||
#### Separate Build Path for emscripten
|
if(UMSKT_USE_SHARED_OPENSSL)
|
||||||
IF (EMSCRIPTEN)
|
add_library(_umskt SHARED ${LIBUMSKT_SRC})
|
||||||
ADD_EXECUTABLE(umskt ${LIBUMSKT_SRC})
|
else()
|
||||||
TARGET_INCLUDE_DIRECTORIES(umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
|
add_library(_umskt STATIC ${LIBUMSKT_SRC})
|
||||||
TARGET_LINK_LIBRARIES(umskt -static OpenSSL::Crypto cryptopp::cryptopp fmt)
|
endif()
|
||||||
SET(CMAKE_EXECUTABLE_SUFFIX ".html")
|
|
||||||
|
|
||||||
SET_TARGET_PROPERTIES(umskt PROPERTIES COMPILE_FLAGS "-Os -sEXPORTED_RUNTIME_METHODS=ccall,cwrap")
|
target_include_directories(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||||
SET_TARGET_PROPERTIES(umskt PROPERTIES LINK_FLAGS "-Os -sWASM=1 -sEXPORT_ALL=1 -sEXPORTED_RUNTIME_METHODS=ccall,cwrap --no-entry")
|
target_link_libraries(_umskt PRIVATE OpenSSL::Crypto fmt)
|
||||||
ELSE()
|
|
||||||
IF(NOT UMSKT_USE_SHARED_OPENSSL)
|
|
||||||
### Static library compilation
|
|
||||||
ADD_LIBRARY(_umskt STATIC ${LIBUMSKT_SRC})
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
|
|
||||||
TARGET_LINK_LIBRARIES(_umskt -static OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS})
|
|
||||||
ELSE()
|
|
||||||
### Shared library compilation
|
|
||||||
ADD_LIBRARY(_umskt SHARED ${LIBUMSKT_SRC} ${UMSKT_EXE_WINDOWS_EXTRA} ${UMSKT_EXE_WINDOWS_DLL})
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
|
|
||||||
TARGET_LINK_LIBRARIES(_umskt OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS})
|
|
||||||
TARGET_LINK_DIRECTORIES(_umskt PUBLIC ${UMSKT_LINK_DIRS})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
### UMSKT executable compilation
|
add_executable(umskt src/main.cpp src/cli.cpp ${UMSKT_EXE_WINDOWS_EXTRA})
|
||||||
ADD_EXECUTABLE(umskt src/main.cpp src/cli.cpp ${UMSKT_EXE_WINDOWS_EXTRA})
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
|
|
||||||
TARGET_LINK_LIBRARIES(umskt _umskt OpenSSL::Crypto fmt nlohmann_json::nlohmann_json umskt::rc ${UMSKT_LINK_LIBS})
|
|
||||||
TARGET_LINK_DIRECTORIES(umskt PUBLIC ${UMSKT_LINK_DIRS})
|
|
||||||
IF(MSVC AND MSVC_MSDOS_STUB)
|
|
||||||
SET_PROPERTY(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
### Copy Shared Libraries and dependency files
|
target_include_directories(umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||||
IF (OPENSSL_CRYPTO_SHARED)
|
target_link_libraries(umskt PRIVATE _umskt OpenSSL::Crypto fmt nlohmann_json::nlohmann_json umskt::rc)
|
||||||
GET_FILENAME_COMPONENT(OPENSSL_CRYPTO_LIBRARY_FILENAME ${OPENSSL_CRYPTO_LIBRARY} NAME)
|
|
||||||
CONFIGURE_FILE(${OPENSSL_CRYPTO_LIBRARY} "${CMAKE_CURRENT_BINARY_DIR}/${OPENSSL_CRYPTO_LIBRARY_FILENAME}" COPYONLY)
|
|
||||||
ENDIF()
|
|
||||||
ENDIF()
|
|
||||||
|
65
README.md
65
README.md
@ -1,17 +1,29 @@
|
|||||||
# **Universal MS Key Toolkit (UMSKT)**
|
# Universal MS Key Toolkit (UMSKT)
|
||||||
|
|
||||||
|
**Connect with us**
|
||||||
|
|
||||||
[](https://umskt.zulipchat.com)
|
[](https://umskt.zulipchat.com)
|
||||||
[](https://web.libera.chat/gamja/?nick=Guest?#mspid)
|
[](https://web.libera.chat/gamja/?nick=Guest?#mspid)
|
||||||
[](../../actions/workflows/linux.yml)
|
|
||||||
|
**Build status**
|
||||||
|
|
||||||
[](../../actions/workflows/windows.yml)
|
[](../../actions/workflows/windows.yml)
|
||||||
|
|
||||||
|
[](../../actions/workflows/macos.yml)
|
||||||
|
|
||||||
### **Plan of Action / ToDo List**
|
[](../../actions/workflows/linux.yml)
|
||||||
|
|
||||||
|
[](../../actions/workflows/dos-djgpp.yml)
|
||||||
|
|
||||||
|
[](../../actions/workflows/freebsd.yml)
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
### Plan of Action / ToDo List
|
||||||
|
|
||||||
In light of the recent exponential interest in this project I've decided to put updates of this project here:
|
In light of the recent exponential interest in this project I've decided to put updates of this project here:
|
||||||
|
|
||||||
* [Please see ticket #8 for more information](../../issues/8)
|
[Please see ticket #8 for more information](https://github.com/UMSKT/UMSKT/issues/8)
|
||||||
|
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
@ -29,27 +41,32 @@ In light of the recent exponential interest in this project I've decided to put
|
|||||||
|
|
||||||
* It all comes down to four simple steps:
|
* It all comes down to four simple steps:
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
### **Usage**
|
### **Usage**
|
||||||
#### 1. Download the latest version of WindowsXPKg
|
#### 1. Download the latest version of UMSKT
|
||||||
|
|
||||||
* *(GitHub account required)*
|
* *(GitHub account required)*
|
||||||
* Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster)).
|
* Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster+is%3Asuccess), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster+is%3Asuccess), [macOS](../../actions/workflows/macos.yml?query=branch%3Amaster+is%3Asuccess), [FreeBSD](../../actions/workflows/freebsd.yml?query=branch%3Amaster+is%3Asuccess), [DOS DJGPP](../../actions/workflows/dos-djgpp.yml?query=branch%3Amaster+is%3Asuccess))
|
||||||
|
|
||||||
|
|
||||||
* *(GitHub account \*not\* required)*
|
* ~~*(GitHub account \*not\* required)*~~
|
||||||
* Download the latest release for your operating system and architecture from [the releases page](../../releases)
|
* ~~Download the latest release for your operating system and architecture from [the releases page](../../releases)~~
|
||||||
|
* No official releases right now, use the other method to get the latest version.
|
||||||
|
|
||||||
|
* **Note:** Before continuing, please ensure you have the `umskt` executable extracted and on UNIX-like systems, have execution permissions (`chmod +x umskt`).
|
||||||
|
|
||||||
* **Note:** Before continuing, please ensure you have both the `xpkey` program and the `keys.json` datum extracted and in the same directory
|
#### 2. Install OpenSSL 3.1.2.
|
||||||
|
For Windows, click [here](https://slproweb.com/products/Win32OpenSSL.html) and choose the right version. For other operating systems, consult your package manager.
|
||||||
|
*Note: This only applies if the build you download has OpenSSL embedded (static library) or not. You can usually tell if the download size is measured in KB or MB. If it's MB, you don't need this.*
|
||||||
|
|
||||||
#### 2. Run `xpkey` to generate a key, or add `--help` to see more options.
|
#### 3. Run `umskt` to generate a key, or add `--help` or `-h` to see more options.
|
||||||
|
|
||||||
#### 3. *(Activation step for `Retail` and `OEM` only)*
|
#### 4. *(Activation step for `Retail` and `OEM` only)*
|
||||||
* After installation, you will be prompted to activate Windows.
|
* After installation, you will be prompted to activate Windows.
|
||||||
|
|
||||||
|
|
||||||
* Select the **telephone activation** method, then, run `xpkey -i <Installation ID>` using the `Installation ID` the activation Wizard provides for you
|
* Select the **telephone activation** method, then, run `umskt -i <Installation ID>` using the `Installation ID` the activation Wizard provides for you
|
||||||
|
|
||||||
#### 4. Profit!
|
#### 4. Profit!
|
||||||
|
|
||||||
@ -61,7 +78,6 @@ In light of the recent exponential interest in this project I've decided to put
|
|||||||
The list of people who have helped to bring the XP generation to where it is now:
|
The list of people who have helped to bring the XP generation to where it is now:
|
||||||
* z22
|
* z22
|
||||||
* MSKey
|
* MSKey
|
||||||
* sk00ter
|
|
||||||
* diamondggg
|
* diamondggg
|
||||||
* pottzman
|
* pottzman
|
||||||
* Endermanch
|
* Endermanch
|
||||||
@ -70,6 +86,7 @@ The list of people who have helped to bring the XP generation to where it is now
|
|||||||
* TheTank20
|
* TheTank20
|
||||||
* InvoxiPlayGames
|
* InvoxiPlayGames
|
||||||
* brakmic
|
* brakmic
|
||||||
|
* techguy16
|
||||||
|
|
||||||
(the list will be updated to add more collaborators)
|
(the list will be updated to add more collaborators)
|
||||||
|
|
||||||
@ -77,20 +94,26 @@ The list of people who have helped to bring the XP generation to where it is now
|
|||||||
|
|
||||||
### **Development Requirements:**
|
### **Development Requirements:**
|
||||||
|
|
||||||
* `CMake, make, gcc` (`build-essential`)
|
* `build-essential`
|
||||||
|
* `cmake`
|
||||||
|
* `make`
|
||||||
|
* `gcc`
|
||||||
|
* `g++`
|
||||||
* `git`
|
* `git`
|
||||||
|
|
||||||
#### Build Steps:
|
#### Build Steps:
|
||||||
|
|
||||||
1. `git clone`
|
1. `git clone https://github.com/UMSKT/UMSKT`
|
||||||
2. `cd build/ && cmake ../ && make`
|
2. `cd UMSKT/build`
|
||||||
|
3. `cmake ..`
|
||||||
|
4. `make`
|
||||||
|
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
### **Known Ports**
|
### **Known Ports**
|
||||||
|
|
||||||
| Language | Author | Repo URL |
|
| Language | Author | Repo URL |
|
||||||
|----------|-----------|-------------------------------------------------------|
|
|----------|-----------|-----------------------------------------------------------|
|
||||||
| Rust | Alex Page | [anpage/umskt-rs](https://github.com/anpage/umskt-rs) |
|
| Rust | Alex Page | [anpage/umskt-rs](https://github.com/anpage/umskt-rs) |
|
||||||
|
| Python | techguy16 | [techguy16/umsktpy](https://github.com/techguy16/umsktpy) |
|
||||||
|
@ -45,6 +45,9 @@
|
|||||||
"Office XP Applications": {
|
"Office XP Applications": {
|
||||||
"BINK": ["20", "21"]
|
"BINK": ["20", "21"]
|
||||||
},
|
},
|
||||||
|
"Works Suite 2003 and 2004": {
|
||||||
|
"BINK": ["20", "21"]
|
||||||
|
},
|
||||||
"Office XP": {
|
"Office XP": {
|
||||||
"BINK": ["22", "23"]
|
"BINK": ["22", "23"]
|
||||||
},
|
},
|
||||||
@ -117,6 +120,9 @@
|
|||||||
"Office 2003 Small Business": {
|
"Office 2003 Small Business": {
|
||||||
"BINK": ["70", "71"]
|
"BINK": ["70", "71"]
|
||||||
},
|
},
|
||||||
|
"Office 2003 Student and Teacher": {
|
||||||
|
"BINK": ["70", "71"]
|
||||||
|
},
|
||||||
"Office 2003 Professional": {
|
"Office 2003 Professional": {
|
||||||
"BINK": ["72", "73"]
|
"BINK": ["72", "73"]
|
||||||
},
|
},
|
||||||
@ -1568,4 +1574,4 @@
|
|||||||
"iid_key": "1513142771"
|
"iid_key": "1513142771"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
src/cli.cpp
33
src/cli.cpp
@ -57,6 +57,7 @@ void CLI::showHelp(char *argv[]) {
|
|||||||
fmt::print("\t-l --list\tshow which products/binks can be loaded\n");
|
fmt::print("\t-l --list\tshow which products/binks can be loaded\n");
|
||||||
fmt::print("\t-c --channelid\tspecify which Channel Identifier to use (defaults to 640)\n");
|
fmt::print("\t-c --channelid\tspecify which Channel Identifier to use (defaults to 640)\n");
|
||||||
fmt::print("\t-s --serial\tspecifies a serial to use in the product ID (defaults to random, BINK1998 only)\n");
|
fmt::print("\t-s --serial\tspecifies a serial to use in the product ID (defaults to random, BINK1998 only)\n");
|
||||||
|
fmt::print("\t-u --upgrade\tspecifies the Product Key will be an \"Upgrade\" version\n");
|
||||||
fmt::print("\t-V --validate\tproduct key to validate signature\n");
|
fmt::print("\t-V --validate\tproduct key to validate signature\n");
|
||||||
fmt::print("\n");
|
fmt::print("\n");
|
||||||
}
|
}
|
||||||
@ -71,6 +72,7 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
|
|||||||
640,
|
640,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -137,6 +139,8 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
|
|||||||
options->serial = serial_val;
|
options->serial = serial_val;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
|
} else if (arg == "-u" || arg == "--upgrade") {
|
||||||
|
options->upgrade = true;
|
||||||
} else if (arg == "-f" || arg == "--file") {
|
} else if (arg == "-f" || arg == "--file") {
|
||||||
if (i == argc - 1) {
|
if (i == argc - 1) {
|
||||||
options->error = true;
|
options->error = true;
|
||||||
@ -216,6 +220,12 @@ int CLI::validateCommandLine(Options* options, char *argv[], json *keys) {
|
|||||||
int intBinkID;
|
int intBinkID;
|
||||||
sscanf(options->binkid.c_str(), "%x", &intBinkID);
|
sscanf(options->binkid.c_str(), "%x", &intBinkID);
|
||||||
|
|
||||||
|
// FE and FF are BINK 1998, but do not generate valid keys, so we throw an error
|
||||||
|
if (intBinkID >= 0xFE) {
|
||||||
|
fmt::print("ERROR: Terminal Services BINKs (FE and FF) are unsupported at this time\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (intBinkID >= 0x40) {
|
if (intBinkID >= 0x40) {
|
||||||
// set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode
|
// set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode
|
||||||
options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE;
|
options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE;
|
||||||
@ -241,7 +251,7 @@ void CLI::printID(DWORD *pid) {
|
|||||||
int i, digit = 0;
|
int i, digit = 0;
|
||||||
|
|
||||||
// Convert PID to ascii-number (=raw)
|
// Convert PID to ascii-number (=raw)
|
||||||
sprintf(raw, "%09u", pid[0]);
|
snprintf(raw, sizeof(raw), "%09u", pid[0]);
|
||||||
|
|
||||||
// Make b-part {640-....}
|
// Make b-part {640-....}
|
||||||
strncpy(b, raw, 3);
|
strncpy(b, raw, 3);
|
||||||
@ -381,6 +391,8 @@ int CLI::BINK1998Generate() {
|
|||||||
|
|
||||||
// Specify whether an upgrade version or not
|
// Specify whether an upgrade version or not
|
||||||
bool bUpgrade = false;
|
bool bUpgrade = false;
|
||||||
|
if (options.upgrade == true)
|
||||||
|
bUpgrade = true;
|
||||||
|
|
||||||
for (int i = 0; i < this->total; i++) {
|
for (int i = 0; i < this->total; i++) {
|
||||||
PIDGEN3::BINK1998::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, nRaw, bUpgrade, this->pKey);
|
PIDGEN3::BINK1998::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, nRaw, bUpgrade, this->pKey);
|
||||||
@ -432,23 +444,26 @@ int CLI::BINK2002Generate() {
|
|||||||
fmt::print("> AuthInfo: {}\n", pAuthInfo);
|
fmt::print("> AuthInfo: {}\n", pAuthInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
PIDGEN3::BINK2002::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, pChannelID, pAuthInfo, false, this->pKey);
|
// Specify whether an upgrade version or not
|
||||||
CLI::printKey(this->pKey);
|
bool bUpgrade = false;
|
||||||
fmt::print("\n");
|
if (options.upgrade == true)
|
||||||
|
bUpgrade = true;
|
||||||
|
|
||||||
|
PIDGEN3::BINK2002::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, pChannelID, pAuthInfo, bUpgrade, this->pKey);
|
||||||
|
|
||||||
bool isValid = PIDGEN3::BINK2002::Verify(this->eCurve, this->genPoint, this->pubPoint, this->pKey);
|
bool isValid = PIDGEN3::BINK2002::Verify(this->eCurve, this->genPoint, this->pubPoint, this->pKey);
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
CLI::printKey(this->pKey);
|
CLI::printKey(this->pKey);
|
||||||
if (i < this->total - 1 || this->options.verbose) {
|
if (i < this->total - 1 || this->options.verbose) { // check if end of list or verbose
|
||||||
fmt::print("\n");
|
fmt::print("\n");
|
||||||
}
|
}
|
||||||
this->count += isValid;
|
this->count += isValid; // add to count
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (this->options.verbose) {
|
if (this->options.verbose) {
|
||||||
CLI::printKey(this->pKey);
|
CLI::printKey(this->pKey); // print the key
|
||||||
fmt::print(" [Invalid]");
|
fmt::print(" [Invalid]"); // and add " [Invalid]" to the key
|
||||||
if (i < this->total - 1) {
|
if (i < this->total - 1) { // check if end of list
|
||||||
fmt::print("\n");
|
fmt::print("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user