Skip to content

phellams/csverify

Repository files navigation

PWSL Logo

CSVerify

Powershell Checksum Verification Module


About This Project

Powershell Module Designed to assist in ensuring the integrity of a codebase by generating and verifying a VERIFICATION.txt file, created for poweshell packages distributed via chocolatey, can be used to verify the integrity of any codebase.

Available on MacOS, Linux, and Windows
CMDLET-Reference | GitHub | PSGallery | Chocolatey

license

📚Table of Contents

Features

  • Generates and returns sha256 hash for each file within the specified folder contained within a VERIFICATION.txt file.
  • Reads the verification file and returns a PSCustomObject array containg the file, path, size and 256 hash.
  • Unitilizes New-Checksum & Read-CheckSum to generate and read the verification file.
  • Read and save checksums to VERIFICATION.txt file with New-VerificationFile.

Workflow

Verification File

New-VerificationFile generates the verification file. recersivlly compiles a list of all files present. For each file, it computes the SHA256 hash and records the file, path, size and its hash in the verification file(VERIFICATION.txt).

Default output .\tools\VERIFICATION.txt

cd /path/to/folder
New-VerificationFile 

VERIFICATION.txt output example:

VERIFICATION
Verification is intended to assist the moderators and community
in verifying that this package's contents are trustworthy.

To Verify the files in this package, please download/Install module csverify from chocalatey.org or from the powershell gallery.
Get-CheckSum -Path $Path
e
-[checksum hash]-
___________________
1.23KB | 37511B972FBE38C353B680D55EC5CFE51C04C79CA3304922301C5AB44BAC94F9 | .\README.md
1.05KB | D3FF5A1DB41D78399BD676A16C9321F127BB52B7E7EBF56B14EC5ABC21971213 | .\LICENSE
0.34KB | 813818335A37527755ABDCF200322962E340E2278BBF3E515B21D4D232D9A92A | .\csverify.psm1
4.44KB | 394B7998E79D6DDE3B6FF1318550ED21BC9671F2C8F1AA2354861A120738B422 | .\csverify.psd1

Verification

Test-Verification is used to verify the integrity of the codebase base it compares the SHA256 values from VERIFICATION.txt file and Returns file report

⚪ Verification output

Running Verification: Hashed Checksums
  └─ Verified o--(5 / 5 Files » Found 1 that could not be verified)
Status   hash                                                             Path                                Size
------   ----                                                             ----                                ----
Verified 0DC558C6B5C5B34D9B77D177AEE6130AEAF75C10A0948C635AEC98F5C445790E .\README.md                         0.95KB
Verified D3FF5A1DB41D78399BD676A16C9321F127BB52B7E7EBF56B14EC5ABC21971213 .\LICENSE                           1.05KB
Verified F5CEFD9EE2498D5A6BB80F3F26A6B07FD405F3AB3AB63917426CB31EBF5719B9 .\csverify.psm1                     0.35KB
Verified EB749553314E1280C22EB6CD2E7CF3687EBF0A8D6C259A59C33AA4DFB215D85D .\csverify.psd1                     4.44KB                1.14KB

Installation

Phellams modules are available from PowerShell Gallery and Chocolatey. you can access the raw assets via Gitlab Generic Assets or nuget repository via Gitlab Packages.

▓▓▓▓▒▒▒▒░░░ ▓▓▓▓▒▒▒▒░░░ ▓▓▓▓▒▒▒▒░░░
📦 PSGallery powershellgallery powershellgallery-downloads
📦 Chocolatey chocolatey chocolatey-downloads

Additinonal Installation Options:

▓▓▓▓▒▒▒▒░░░ ▓▓▓▓▒▒▒▒░░░ ▓▓▓▓▒▒▒▒░░░
💼 Releases/Tags gitlab-release gitlab tags

📦 GitLab Packages

Using nuget: See the packages page for installation instructions.

For instructions on adding nuget sources packages from GitLab see Releases artifacts or via the Packages page.

🧺 Generic Asset

The latest release artifacts can be downloaded from the Generic Assets Artifacts page.

💾 Git Clone

# Clone the repository
git clone https://gitlab.com/phellams/csverify.git
cd csverify
import-module .\

Build

Phellams modules are built using either the phellams-automator Docker image paired with the Automator-Devops scripts to build and publish modules to:

If you prefer not to use the Docker image, you can run the automator-devops scripts locally using PowerShell 7.x.

Dependencies must be installed manually, either from the PowerShell Gallery or by cloning the module directly from the GitHub/GitLab source repository (see below).


localbuilder Script Parameters

All build metadata is stored in the ./build_config.json file. See Build Config for additional information.

local-builder [-Automator (switch)]
              [-build_dotnet_lib (switch)]
              [-PhWriter (switch)]
              [-Pester (switch)]
              [-Build (switch)] 
              [-PsGal (switch)]
              [-Nuget (switch)] 
              [-ChocoNuSpec (switch)] 
              [-ChocoPackage (switch)] 
              [-ChocoPackageWindows (switch)]
              [-Cleanup (switch)]
Parameter Description
-Automator Builds using the phellams-automator Docker image. If not specified, the script will use the local PowerShell installation. All dependencies must be installed locally (see below).
-build_dotnet_lib Calls build-dotnet-library.ps1, which runs dotnet build and dotnet pack to build and package .NET libraries (.nupkg). (WIP – functional but requires refinement.)
-PhWriter Generates the phwriter-metadata.ps1 file using the phwriter module.
-Pester Calls test-pester-before-build.ps1, which runs Invoke-Pester from the Pester module.
-Sa Calls test-sa-before-build.ps1, which runs Invoke-ScriptAnalyzer from the PSScriptAnalyzer module.
-Build Calls build-module.ps1 from the psmpacker module. Copies the built module to the dist folder and generates the VERIFICATION.txt file.
-Nuget Calls build-package-generic-nuget.ps1, which runs New-NuspecPackageFile and New-NupkgPackage from the nupsforge module.
-PsGal Calls build-package-psgallery.ps1, which runs New-NuspecPackageFile from the nupsforge module for PowerShell Gallery publishing.
-ChocoNuSpec Calls build-nuspec-choco.ps1, which runs New-ChocoNuspecFile from the nupsforge module.
-ChocoPackage (Docker only) Calls build-package-choco.sh (Linux only). Runs choco pack and choco push using the choco/choco:latest Docker image.
-ChocoPackageWindows (Windows only) Calls build-package-choco-windows.ps1, which runs New-ChocoNuspecFile and New-ChocoPackage from the nupsforge module. Requires Chocolatey to be installed.

Depenedencies Modules(linux/Winx64)

Dependecies Binaries(linux/Winx64)


Building Using Automator

Build the module locally using the phellams-automator Docker image.

Note: Chocolatey build and publish requires the choco Docker image to be built and published.

pwsh -c ./automator-devops/localbuilder.ps1 -Automator -Build -Nuget -ChocoNuSpec -ChocoPackage -PsGal -Cleanup

Building Using PowerShell 7.x

Note (Windows): Chocolatey can be installed easily via https://chocolatey.org/install. Note (Non-Windows): Chocolatey build and publish requires the choco Docker image if not running on Windows.

pwsh -c ./automator-devops/localbuilder.ps1 -Build -Nuget -ChocoNuSpec -ChocoPackage -PsGal -Cleanup

CMDLET Reference

List of available cmdlets provided by the module.

New-CheckSum

New-CheckSum generates and returns sha256 hash for each within the specified folder. New-Verification unitilizes New-Checksum & Read-CheckSum.

Syntax:

New-CheckSum -Path (String) [-FromString (string)] [(CommonParameters)]

Parameters:

Name Type Description Required
Path String The path to generate the checksum file for Yes
FromString String The string to generate the checksum file for No
New-CheckSum -Path ./

Example:

Read-CheckSum

Read-CheckSum reads the verification file and returns a PSCustomObject array containg the file, path, size and hash.

Syntax:

Read-CheckSum -Path (String) [(CommonParameters)]

Parameters:

Name Type Description Required
Path String The path to generate the checksum file for Yes

Example:

Read-CheckSum -RootPath ./

New-VerificationFile

New-VerificationFile generates the verification file. recersivlly compiles a list of all files present. For each file, i t computes the SHA256 hash and records the file, path, size and its hash in the verification file(VERIFICATION.txt).

Syntax:

New-VerificationFile -RootPath (String) -OutPutPath (String) [(CommonParameters)]

Parameters:

Name Type Description Required
RootPath String The path to the folder to generat Yes
OutputPath String The output path to generate the verification file to Yes

Example:

New-VerificationFile ./ ./dist/choco

Test-Verification

Test-Verification is used to verify the integrity of the codebase base it compares the SHA256 values from VERIFICATION.txt file and Returns file report.

Syntax:

Test-Verification -Path (String) [(CommonParameters)]

Parameters:

Name Type Description Required
Path String The path to the verification file Yes

Example:

Test-Verification

Contributing

Feel free to contribute! Fork the repo and submit a merge request with your improvements. Or, open an issue with the enhancement tag to discuss ideas.

  1. Fork the Project and clone it: git clone https://gitlab.com/YOUR_USERNAME/pwsl.git

  2. Switch to dev and create your branch: git checkout develop; git checkout -b feature/AmazingFeature

  3. Commit your changes: git commit -m 'Add some AmazingFeature'

  4. Push to the branch: git push origin feature/AmazingFeature

  5. Open a Merge Request:


License

This project is licensed under the MIT Licence, see the LICENSE file for details

About

CheckSum Verification module for PowerShell

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published