Skip to main content

PB Logo

Coverity Build Status pre-commit.ci status codecov Documentation Status Donate

Introduction

Punchboot is a secure and fast bootloader for embedded systems. It is designed to:

  • Boot as fast as possible
  • Integrate with the SoC's secure boot functionality
  • Authenticate the next piece of software in the boot chain
  • Support A/B system partitions for atomic updates
  • Support automatic rollbacks
  • Minimize software download time in production
  • Be useful for day-to-day development

Punchboot is designed for embedded systems and therefore it has a minimalistic apporach. There is no run-time configuration, everything is configured in the board files.

Punchboot could be useful if you care about the following:

  • Boot speed
  • Secure boot
  • Downloading software quickly in production

Design

Punchboot is written in C and some assembler. Currently armv7a and armv8 is supported.

The directory layout is as follows:

Folder Description  
/doc Documentation
/pki Crypto keys for testing
/ Bootloader source
/src/board Board support
/src/arch Architecture support
/src/plat Platform support
/src/drivers Drivers
/tools Tools

Supported architectures:

Architecture Supported
armv7a Yes
armv8a Yes
armv7m Yes

Supported platforms:

Platform Supported USB EMMC HW Crypto Secure Boot Fusebox
NXP imx6ul Yes Yes Yes Yes Yes Yes
NXP imx8m Yes Yes Yes Yes No Yes
NXP imx8x Yes Yes Yes Yes Yes Yes

Supported boards:

Board Supported More info
Jiffy Fully supported https://github.com/jonasblixt/jiffy
Bebop Fully supported https://github.com/jonasblixt/bebop
Technexion PICO-IMX8M Partial support https://www.technexion.com/products/system-on-modules/pico/pico-compute-modules/detail/PICO-IMX8M
NXP IMX8QXP MEK Fully supported https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-8-processors/i.mx-8-multisensory-enablement-kit:i.MX8-MEK

Hardware accelerated signature verification

Platform RSA4096 EC secp256r1 EC secp384r1 EC secp521
NXP imx6ul Yes Yes No No
NXP imx8m Yes Yes No No
nxp imx8x yes yes yes yes
nxp imx RT no no no no

Hardware accelerated hash algorithms

Platform MD5 SHA256 SHA384 SHA512
NXP imx6ul Yes Yes No No
NXP imx8m Yes Yes No No
NXP imx8x Yes Yes Yes Yes
NXP imx RT No No No No

Secure Boot

Typical and simplified secure boot flow

  • ROM loads a set of public keys, calculates the checksum of the keys and compares the result to a fused checksum
  • ROM loads punchboot, calculates checksum and verifies signature using key's in step one
  • Run punchboot
  • Punchboot loads a PBI bundle, calculates the checksum and verifies the signature using built in keys
  • Run next step in boot chain

Most SoC:s have a boot rom that includes meachanisms for calculating a checksum of the bootloader and cryptographically verifying a signature using a public key fused to the device.

Normally fuses are a limited resource and therefor a common way is to calculate a sha256 checksum of the public key(s) and then store this checksum in fuses, this way many different public keys can be stored in a flash memory and every time the device boots it will compute a sha256 checksum and compare it to the fused checksum.

Punchboot is designed to be a part of a secure boot chain. This means that the bootloader is cryptographically signed, the ROM code of the SoC must support a mechanism to validate this signature, otherwise there is no root of trust.

When punchboot has been verified it, in turn, will load and verify the next software component in the boot chain. The bootloader only supports signed binaries.

Testing and integration tests

Punchboot uses QEMU for all module and integration tests. The 'test' platform and board target relies on virtio serial ports and block devices. The punchboot cli can be built with a domain socket transport instead of USB for communicating with an QEMU environment.

The test platform code includes gcov code that calls the QEMU semihosting API for storing test coverage data on the host.

Building and running tests:

$ cp configs/test_defconfig .config
$ make
$ make check

Device identity

Most modern SoC's provide some kind of unique identity, that is guaranteed to be unique for that particular type of SoC / Vendor etc but can not be guarateed to be globally unique.

Punchboot provides a UUID3 device identity based on a combination of the unique data from the SoC and an allocated, random, namspace UUID per platform.

When booting a linux system this information is relayed to linux through in-line patching of the device-tree. The device identity can be found in '/proc/device-tree/chosen/device-uuid'

Command mode

Command mode is entered when the system can't boot or if the bootloader is forced by a configurable, external event to do so.

In the command mode it is possible to update the bootloader, write data to partitions and install default settings. From v0.3 and forward an 'authentication cookie' must be used to interact with the bootloader to prevent malicious activity. The only command that can be executed without authentication is listing the device information (including the device UUID)

The authentication cookie consists of the device UUID encrypted with one of the active key pair's private key.

punchboot tool

The punchboot CLI is used for interacting with the command mode. A summary of the features available:

  • Update the bootloader it self
  • Manually start system A or B
  • Activate boot partitions
  • Load image to ram and execute it
  • Display basic device info
  • Configure fuses and GPT parition tables
  • Call board specific functions

The tool is written in Python and some parts in C to allow bindings for other languages. The tool is built on top of a library to make it possible to integrate with other tooling and environments.

The tool is distributed through PyPi. Binary wheels are available for Windows, Linux and macos (x86_64 and arm64).

Install using pypi:

$ pip install punchboot

Image format

Punchboot uses the bitpacker file format (https://github.com/jonasblixt/bpak)

Authentication token

Punchboot enforces authentication when the SLC (Security Life Cycle) is locked. To interact with Punchboot the session must be authenticated by using a password or a signed token.

The authentication token is generated by hashing the device UUID and signing it with one of the active key pairs.

Example:

$ punchboot dev show
Bootloader version: v0.6.1-40-ga47f-dirty
Device UUID:        0b177094-6b62-3572-902e-c1de339ecb01
Board name:         pico8ml

Creating the authentication token using the 'createtoken.sh' script located in the tools folder. In this example the private key is stored on a yubikey 5 HSM.

$ ./createtoken.sh 0B177094-6B62-3572-902E-C1DE339ECB01 pkcs11 -sha256 "pkcs11:id=%02;type=private"
engine "pkcs11" set.
Enter PKCS#11 token PIN for PIV Card Holder pin (PIV_II):
Enter PKCS#11 key PIN for SIGN key:

Authenticating the session:

$ punchboot auth token ./0B177094-6B62-3572-902E-C1DE339ECB01.token <name of a key>
Signature format: secp256r1
Hash: sha256
Authenticating using key index 0 and './0B177094-6B62-3572-902E-C1DE339ECB01.token'
Read 103 bytes
Authentication successful

Now the command mode is fully unlocked. The token is of course only valid for the individual unit with that perticular UUID.

Metrics

Measurements taken on IMX6UL, running at 528 MHz loading a 400kByte binary.

Using hardware accelerators for SHA and RSA signatures:

Parameter Value Unit
Power On Reset 28 ms
Bootloader init 7 ms
Blockdev read 13 ms
SHA256 Hash 4 ms
RSA 4096 Signaure 5 ms
Total 57 ms

Using libtomcrypt for SHA and RSA:

Parameter Value Unit
Power On Reset 28 ms
Bootloader init 7 ms
Blockdev read 13 ms
SHA256 Hash 431 ms
RSA 4096 Signaure 567 ms
Total 1046 ms

Measurements taken on IMX8QXP, loading a 14296kByte binary.

Using hardware accelerators for SHA and RSA signatures:

Parameter Value Unit
Power On Reset 175 ms
Bootloader init 6.358 ms
Blockdev read / hash 107 ms
RSA 4096 Signature 0.676 ms
Total 288 ms

The POR time is off due to some unidentified problem with the SCU firmware. A guess would be that this metric should be in the 20ms -range.

Contributing

  1. Fork the repository
  2. Implement new feature or bugfix on a branch
  3. Implement test case(s) to ensure that future changes do not break legacy
  4. Run checks: cp configs/test_defconfig .config && make check
  5. Create pull request

Metadata

Release files for punchboot 2.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for punchboot 2.7.0
File Size Uploaded Provenance Actions
punchboot-2.7.0.tar.gz 36.2 kB Without provenance Details for punchboot-2.7.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for punchboot 2.7.0
File Actions
punchboot-2.7.0-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details for punchboot-2.7.0-cp315-cp315-win_amd64.whl
punchboot-2.7.0-cp315-cp315-manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ x86-64 Details for punchboot-2.7.0-cp315-cp315-manylinux_2_28_x86_64.whl
punchboot-2.7.0-cp315-cp315-macosx_12_0_x86_64.whl CPython 3.15 CPython 3.15 macOS 12.0+ x86-64 Details for punchboot-2.7.0-cp315-cp315-macosx_12_0_x86_64.whl
punchboot-2.7.0-cp315-cp315-macosx_12_0_arm64.whl CPython 3.15 CPython 3.15 macOS 12.0+ ARM64 Details for punchboot-2.7.0-cp315-cp315-macosx_12_0_arm64.whl
punchboot-2.7.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for punchboot-2.7.0-cp314-cp314-win_amd64.whl
punchboot-2.7.0-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for punchboot-2.7.0-cp314-cp314-manylinux_2_28_x86_64.whl
punchboot-2.7.0-cp314-cp314-macosx_12_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 12.0+ x86-64 Details for punchboot-2.7.0-cp314-cp314-macosx_12_0_x86_64.whl
punchboot-2.7.0-cp314-cp314-macosx_12_0_arm64.whl CPython 3.14 CPython 3.14 macOS 12.0+ ARM64 Details for punchboot-2.7.0-cp314-cp314-macosx_12_0_arm64.whl
punchboot-2.7.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for punchboot-2.7.0-cp313-cp313-win_amd64.whl
punchboot-2.7.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for punchboot-2.7.0-cp313-cp313-manylinux_2_28_x86_64.whl
punchboot-2.7.0-cp313-cp313-macosx_12_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 12.0+ x86-64 Details for punchboot-2.7.0-cp313-cp313-macosx_12_0_x86_64.whl
punchboot-2.7.0-cp313-cp313-macosx_12_0_arm64.whl CPython 3.13 CPython 3.13 macOS 12.0+ ARM64 Details for punchboot-2.7.0-cp313-cp313-macosx_12_0_arm64.whl
punchboot-2.7.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for punchboot-2.7.0-cp312-cp312-win_amd64.whl
punchboot-2.7.0-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for punchboot-2.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
punchboot-2.7.0-cp312-cp312-macosx_12_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 12.0+ x86-64 Details for punchboot-2.7.0-cp312-cp312-macosx_12_0_x86_64.whl
punchboot-2.7.0-cp312-cp312-macosx_12_0_arm64.whl CPython 3.12 CPython 3.12 macOS 12.0+ ARM64 Details for punchboot-2.7.0-cp312-cp312-macosx_12_0_arm64.whl
punchboot-2.7.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for punchboot-2.7.0-cp311-cp311-win_amd64.whl
punchboot-2.7.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for punchboot-2.7.0-cp311-cp311-manylinux_2_28_x86_64.whl
punchboot-2.7.0-cp311-cp311-macosx_12_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 12.0+ x86-64 Details for punchboot-2.7.0-cp311-cp311-macosx_12_0_x86_64.whl
punchboot-2.7.0-cp311-cp311-macosx_12_0_arm64.whl CPython 3.11 CPython 3.11 macOS 12.0+ ARM64 Details for punchboot-2.7.0-cp311-cp311-macosx_12_0_arm64.whl
punchboot-2.7.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for punchboot-2.7.0-cp310-cp310-win_amd64.whl
punchboot-2.7.0-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for punchboot-2.7.0-cp310-cp310-manylinux_2_28_x86_64.whl
punchboot-2.7.0-cp310-cp310-macosx_12_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 12.0+ x86-64 Details for punchboot-2.7.0-cp310-cp310-macosx_12_0_x86_64.whl
punchboot-2.7.0-cp310-cp310-macosx_12_0_arm64.whl CPython 3.10 CPython 3.10 macOS 12.0+ ARM64 Details for punchboot-2.7.0-cp310-cp310-macosx_12_0_arm64.whl

Total release size: 8.8 MB

Release files / punchboot-2.7.0.tar.gz

Download URL punchboot-2.7.0.tar.gz
Size 36.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f24a6138ede8497b8ec59c17816abdc06e9c64202ef969316a40a81b4830ee7e
BLAKE2b-256 checksum
How to use checksums
dd1f8de3b4621bc4362152842e494b57784b5b3973c6d4d68445aed7999974a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp315-cp315-win_amd64.whl

Download URL punchboot-2.7.0-cp315-cp315-win_amd64.whl
Size 116.5 kB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
e0e085fc7e9a6708934fb60ef22f511402b44c88884d1b988a5f3eb002cd8c81
BLAKE2b-256 checksum
How to use checksums
ec80356b3aae21bd4d2f6cb8cc6aae738593822c77737418c44487dbe18ae131
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp315-cp315-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.0-cp315-cp315-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
69f1a9160e0518320945768c3035570b7a0b322308559a003d5213ec1fd7d458
BLAKE2b-256 checksum
How to use checksums
0d6264ce67b19ada9f81e1becb20647c2f6156b48078f922bac83540e55a91b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp315-cp315-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.0-cp315-cp315-macosx_12_0_x86_64.whl
Size 94.9 kB
Tags CPython 3.15 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
2e35ecc6389531e100f8b4ad4f830ec095415209e18af237185bbdc5ae2995cc
BLAKE2b-256 checksum
How to use checksums
7fd22e2700793d2ac07a6d79463d75f3eaf1315f482a71f1a2c721c6d57ae712
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp315-cp315-macosx_12_0_arm64.whl

Download URL punchboot-2.7.0-cp315-cp315-macosx_12_0_arm64.whl
Size 92.5 kB
Tags CPython 3.15 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
8a2c0476eaa17ec8c0dcc8973c34fd2ce5016322486c7954dcf7ed12554b5003
BLAKE2b-256 checksum
How to use checksums
156d7e30d7f87cecdb65c0c0656d4d6a5eb5d35c50979eb028695c0090e0a585
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp314-cp314-win_amd64.whl

Download URL punchboot-2.7.0-cp314-cp314-win_amd64.whl
Size 116.5 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
5b621888395d27b847bfc9c04d07a7657c243935e0c6048478a362e606c44aeb
BLAKE2b-256 checksum
How to use checksums
572a27c55ed8579955b56a0fa9ad1892f0c412f437348dbcdf354792609bb440
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.0-cp314-cp314-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cb85a33db9398f86ecdfc549ac723a5a7eb45ab2f89520831fe023bec0bf2a96
BLAKE2b-256 checksum
How to use checksums
80240008beb344fe10c796b1ef553ed996cacc1470efddc3f98ae28cb4433acb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp314-cp314-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.0-cp314-cp314-macosx_12_0_x86_64.whl
Size 94.9 kB
Tags CPython 3.14 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
ea159ca8deaf3d8950256f44a4ae4c89dafa7f5181a7eb309f938c1161bf8bd5
BLAKE2b-256 checksum
How to use checksums
d04ad24fac9609e8a9393382b38a85f26f2b5ccc3bc995a2bec69072a3fd655c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp314-cp314-macosx_12_0_arm64.whl

Download URL punchboot-2.7.0-cp314-cp314-macosx_12_0_arm64.whl
Size 92.4 kB
Tags CPython 3.14 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
14a6d926f31f1e145b7b0b51ec31c6a5ba3f1cfd46831c59ab2823d924c94617
BLAKE2b-256 checksum
How to use checksums
0498fd3a15cbf40d25b0589b9877b1b10b73921ac46ff3a6882db248faab9f56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp313-cp313-win_amd64.whl

Download URL punchboot-2.7.0-cp313-cp313-win_amd64.whl
Size 113.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6042a9391b0b7caacb697735749e07b8089f97b8e8154bd0ad92ae44990aa8fa
BLAKE2b-256 checksum
How to use checksums
4a9cb6b914d5cefdfd56115d44f3e749b468162bf08a9b988ef00533d77c9896
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2b259e543b4f9daaf63e5fb8277ae75b40de0293aaeca89389b2859bf50a86ca
BLAKE2b-256 checksum
How to use checksums
7f8cbaf099e38e0ad1ad0d341a0c4af97bf5a16ec07e0f29001288db7ca5a76c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp313-cp313-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.0-cp313-cp313-macosx_12_0_x86_64.whl
Size 94.8 kB
Tags CPython 3.13 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
09a68be514b93cb71be8ecba9a6c07047eab1333920c5ccdfc820c28aafee556
BLAKE2b-256 checksum
How to use checksums
6835a5ae03f9802b5ba5ed91c3157a19eb4ef14e7d48f4584ed89b695bcb44ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp313-cp313-macosx_12_0_arm64.whl

Download URL punchboot-2.7.0-cp313-cp313-macosx_12_0_arm64.whl
Size 92.4 kB
Tags CPython 3.13 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
e51f76e7b007aad522980ea4df3f8daacafa52930f1db6d2fcf0c3a31094f387
BLAKE2b-256 checksum
How to use checksums
73f7af16bb5727037a7316e8f6d4acc862e569bd295a53183a327a6a5a9c0be6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp312-cp312-win_amd64.whl

Download URL punchboot-2.7.0-cp312-cp312-win_amd64.whl
Size 113.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
004c4ce40a0409ba875cf914e9e4c3607148e2858e6d8d1e2b20be7058f98a83
BLAKE2b-256 checksum
How to use checksums
14bdbfcbe05ffd377817ac6828067809a521eb3dd8b26be9477f9492a9de77e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a606d654da2249f10c5e755fbfeb8152a60d35a427d668be1847560b140b6fb5
BLAKE2b-256 checksum
How to use checksums
84bb1ff766112e75f62a78f000617f01f1cdc774f1c5367dbe52dfe204dff525
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp312-cp312-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.0-cp312-cp312-macosx_12_0_x86_64.whl
Size 94.9 kB
Tags CPython 3.12 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
cfc373c750601586aacdea7144c84bc5382a3d56ed906a8f3c2bf26dcc74f4c8
BLAKE2b-256 checksum
How to use checksums
9431d3ee006debd033a97e0cb61d224c60da3b7898bc0c0409ddb464d418cfee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp312-cp312-macosx_12_0_arm64.whl

Download URL punchboot-2.7.0-cp312-cp312-macosx_12_0_arm64.whl
Size 92.4 kB
Tags CPython 3.12 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
5adcccb1490d6e5b4d66db348596d7d1c1f5ed80a26119c132340abaa4fefe91
BLAKE2b-256 checksum
How to use checksums
e411a2cead704f428d08a60911e8e629729f9b8ad38dbee83b3adf93bc043868
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp311-cp311-win_amd64.whl

Download URL punchboot-2.7.0-cp311-cp311-win_amd64.whl
Size 113.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
474192a04fbfb63bd184e3b4674b33711fd83ac4a989524c9746b084d8d5b6db
BLAKE2b-256 checksum
How to use checksums
23cec183b568be6803d9f4e45b3a6fb261be334ba3ba3df488234e7822740e91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
624b794d64d1f2476bb4e66cf992ca53af26173f8fc9a580ad097cf4d469297b
BLAKE2b-256 checksum
How to use checksums
1d158a46370bf1c8c9008e6341edd9f19e729e4d59130d584e26f68022592290
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp311-cp311-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.0-cp311-cp311-macosx_12_0_x86_64.whl
Size 94.2 kB
Tags CPython 3.11 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
9f9da7be6e6612d488ef98dd2495f92fe4da91c4795403db1b2d9e756deb7547
BLAKE2b-256 checksum
How to use checksums
5cb831859994242aac3513e4023cb9232205e55b5d565c514b4a490c154ab56d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp311-cp311-macosx_12_0_arm64.whl

Download URL punchboot-2.7.0-cp311-cp311-macosx_12_0_arm64.whl
Size 91.7 kB
Tags CPython 3.11 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
f19ba4ae1836ab3ac6528ea0c3e4be296fb86dbda5707010581fd5b9aabf76f4
BLAKE2b-256 checksum
How to use checksums
8fc17df28773549dbbca200245d679ae1d1e296e957636a88e1aac9e34e08851
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp310-cp310-win_amd64.whl

Download URL punchboot-2.7.0-cp310-cp310-win_amd64.whl
Size 113.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b10857378bb15a8a917b9534c5aecc577e643325f99197ea6f4f12fe848a9ee1
BLAKE2b-256 checksum
How to use checksums
8f054f0e0510bfeee82bb0958c4621c6bafeb8f5b8b6096611695a6f20ee7d90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c0a1e3f60b16cc2b3079fabb331355e1464a1312b63b21c056cf7feb0f2816c3
BLAKE2b-256 checksum
How to use checksums
1d05fa70aa446800da5a787d52973319f3792e6829c1a3d7a0e8c36efc9bc9a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp310-cp310-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.0-cp310-cp310-macosx_12_0_x86_64.whl
Size 94.2 kB
Tags CPython 3.10 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
292930d949917e1dbb2bdc988571a2cc2770d7c994013b3b1b96423ac3ddb1d8
BLAKE2b-256 checksum
How to use checksums
2556917440f0d0ebfbc926ae092ae81c1d9f4e41d5c781bba7961f05449dad09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / punchboot-2.7.0-cp310-cp310-macosx_12_0_arm64.whl

Download URL punchboot-2.7.0-cp310-cp310-macosx_12_0_arm64.whl
Size 91.7 kB
Tags CPython 3.10 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
a03665a32bcb44aa5240118419053f340ef5232fb608d1f678e07d3b378a8c62
BLAKE2b-256 checksum
How to use checksums
dc56a47430603990ba80be719627b824d58e3fc9797927d6daa48efc0ca4b392
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for punchboot 2.7.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page