Skip to main content

PB Logo

Coverity Build Status pre-commit.ci status 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 is tested on the host. The 'host' platform and board build punchboot as a native Linux process, with a file backed disk and a unix domain socket for the command mode transport.

  • C unit tests (CMocka) in tests/unit
  • Integration tests (pytest) in tests/integration, which drive the host build through the punchboot Python package, the same way the tools talk to a device over USB

Everything runs in a docker container with the required toolchains and tools:

$ scripts/pbdev test                    # build and run all tests
$ scripts/pbdev test -DPB_SANITIZE=ON   # with AddressSanitizer and UBSan

See doc/dev/testing.md for details.

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: scripts/pbdev test && pre-commit run --all-files
  5. Create pull request

Metadata

Release files for punchboot 2.7.1

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.1
File Size Uploaded Provenance Actions
punchboot-2.7.1.tar.gz 37.4 kB Without provenance Details for punchboot-2.7.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for punchboot 2.7.1
File Actions
punchboot-2.7.1-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details for punchboot-2.7.1-cp315-cp315-win_amd64.whl
punchboot-2.7.1-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.1-cp315-cp315-manylinux_2_28_x86_64.whl
punchboot-2.7.1-cp315-cp315-macosx_12_0_x86_64.whl CPython 3.15 CPython 3.15 macOS 12.0+ x86-64 Details for punchboot-2.7.1-cp315-cp315-macosx_12_0_x86_64.whl
punchboot-2.7.1-cp315-cp315-macosx_12_0_arm64.whl CPython 3.15 CPython 3.15 macOS 12.0+ ARM64 Details for punchboot-2.7.1-cp315-cp315-macosx_12_0_arm64.whl
punchboot-2.7.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for punchboot-2.7.1-cp314-cp314-win_amd64.whl
punchboot-2.7.1-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.1-cp314-cp314-manylinux_2_28_x86_64.whl
punchboot-2.7.1-cp314-cp314-macosx_12_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 12.0+ x86-64 Details for punchboot-2.7.1-cp314-cp314-macosx_12_0_x86_64.whl
punchboot-2.7.1-cp314-cp314-macosx_12_0_arm64.whl CPython 3.14 CPython 3.14 macOS 12.0+ ARM64 Details for punchboot-2.7.1-cp314-cp314-macosx_12_0_arm64.whl
punchboot-2.7.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for punchboot-2.7.1-cp313-cp313-win_amd64.whl
punchboot-2.7.1-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.1-cp313-cp313-manylinux_2_28_x86_64.whl
punchboot-2.7.1-cp313-cp313-macosx_12_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 12.0+ x86-64 Details for punchboot-2.7.1-cp313-cp313-macosx_12_0_x86_64.whl
punchboot-2.7.1-cp313-cp313-macosx_12_0_arm64.whl CPython 3.13 CPython 3.13 macOS 12.0+ ARM64 Details for punchboot-2.7.1-cp313-cp313-macosx_12_0_arm64.whl
punchboot-2.7.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for punchboot-2.7.1-cp312-cp312-win_amd64.whl
punchboot-2.7.1-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.1-cp312-cp312-manylinux_2_28_x86_64.whl
punchboot-2.7.1-cp312-cp312-macosx_12_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 12.0+ x86-64 Details for punchboot-2.7.1-cp312-cp312-macosx_12_0_x86_64.whl
punchboot-2.7.1-cp312-cp312-macosx_12_0_arm64.whl CPython 3.12 CPython 3.12 macOS 12.0+ ARM64 Details for punchboot-2.7.1-cp312-cp312-macosx_12_0_arm64.whl
punchboot-2.7.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for punchboot-2.7.1-cp311-cp311-win_amd64.whl
punchboot-2.7.1-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.1-cp311-cp311-manylinux_2_28_x86_64.whl
punchboot-2.7.1-cp311-cp311-macosx_12_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 12.0+ x86-64 Details for punchboot-2.7.1-cp311-cp311-macosx_12_0_x86_64.whl
punchboot-2.7.1-cp311-cp311-macosx_12_0_arm64.whl CPython 3.11 CPython 3.11 macOS 12.0+ ARM64 Details for punchboot-2.7.1-cp311-cp311-macosx_12_0_arm64.whl
punchboot-2.7.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for punchboot-2.7.1-cp310-cp310-win_amd64.whl
punchboot-2.7.1-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.1-cp310-cp310-manylinux_2_28_x86_64.whl
punchboot-2.7.1-cp310-cp310-macosx_12_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 12.0+ x86-64 Details for punchboot-2.7.1-cp310-cp310-macosx_12_0_x86_64.whl
punchboot-2.7.1-cp310-cp310-macosx_12_0_arm64.whl CPython 3.10 CPython 3.10 macOS 12.0+ ARM64 Details for punchboot-2.7.1-cp310-cp310-macosx_12_0_arm64.whl

Total release size: 8.8 MB

Release files / punchboot-2.7.1.tar.gz

Download URL punchboot-2.7.1.tar.gz
Size 37.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d4ec27c7cd95339213c6eebb06f8270a87f9ce0f1b5f028f4a888ba28c40749a
BLAKE2b-256 checksum
How to use checksums
d8b355e74d8b52fa009b6c7590348709b1dde541330828bf96ecbb264f6adeeb
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.1-cp315-cp315-win_amd64.whl

Download URL punchboot-2.7.1-cp315-cp315-win_amd64.whl
Size 116.7 kB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
cdc204fb9af7c6475053a6525501b196361378fecee24fb8669dbcaada60a761
BLAKE2b-256 checksum
How to use checksums
f504f8a60a53e51bf251f85de141299b058821a618bb12f427b2e1bb5c94173d
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.1-cp315-cp315-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.1-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
a7e623a04eae6132a36168e9579311e527af68eeb44c6e28b1b14379b21be586
BLAKE2b-256 checksum
How to use checksums
1515c1eab8ddf5db1cba24afa4b01d1a873fe892f7da71b9bf51359cb5bcc881
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.1-cp315-cp315-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.1-cp315-cp315-macosx_12_0_x86_64.whl
Size 95.2 kB
Tags CPython 3.15 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
f70421567d814d216777a200e909ae991491d579b5745bd6426da4ae6a00c382
BLAKE2b-256 checksum
How to use checksums
19fb2cba5c464fe8091762f5a15da2e2963ace19604317c5789d97a179b5dc36
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.1-cp315-cp315-macosx_12_0_arm64.whl

Download URL punchboot-2.7.1-cp315-cp315-macosx_12_0_arm64.whl
Size 92.8 kB
Tags CPython 3.15 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
c8ec231aff55c40dd99596fb87fc8a6dac047823d63bbe2399f51145b336e943
BLAKE2b-256 checksum
How to use checksums
129dcc4d7a45e9a00e90f45bc687a8aef4a939b82caa6f32d064ee5bfed404a0
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.1-cp314-cp314-win_amd64.whl

Download URL punchboot-2.7.1-cp314-cp314-win_amd64.whl
Size 116.7 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
33779a05a71a330a0acc56e01a9d496d00f72963e69a6dc48017b1fb5878c59b
BLAKE2b-256 checksum
How to use checksums
dd8d381dcf9ee941e09727e6c7618f3567e578ea34c537d5f6b038d0d44b5f07
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.1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.1-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
a789634114cd9df071bd431b49000d6307b3edeacd80641736fdca13ba6f3d7b
BLAKE2b-256 checksum
How to use checksums
576aa5a00a8c5c23cb0d0fe182f6fe2066bf7668de6a0c1c3e2119e8a1fcbcce
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.1-cp314-cp314-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.1-cp314-cp314-macosx_12_0_x86_64.whl
Size 95.2 kB
Tags CPython 3.14 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
c86a456debd225dd85aa55c67c0d3bd94411c20d41af1f88f52a24be93955425
BLAKE2b-256 checksum
How to use checksums
f35f7417f70eff019ff8e2d72f0ba7c3debb434b78c6c684e081ffd37851a47a
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.1-cp314-cp314-macosx_12_0_arm64.whl

Download URL punchboot-2.7.1-cp314-cp314-macosx_12_0_arm64.whl
Size 92.7 kB
Tags CPython 3.14 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
9fe989be684ba1bb3c94d1148b74b1402d686e2b67a6f4efbaf6deb9dd520ef1
BLAKE2b-256 checksum
How to use checksums
b50fb20b8f20cd3f6d70eaa4a0601b2621f7e469f293f6be823cb16609fb66ff
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.1-cp313-cp313-win_amd64.whl

Download URL punchboot-2.7.1-cp313-cp313-win_amd64.whl
Size 113.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2ad0315cb39bcc168911bd1ce3443675ee3848d0ffb4bee0b940ff788d4e93e2
BLAKE2b-256 checksum
How to use checksums
998a8cecf1554af96755752191143ebbed1ecc524ceba67c67dd5787270965d9
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.1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.1-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
6c240480929ab928c4306c4c17216810b8311bf8d7496c52a9d322244ec87eda
BLAKE2b-256 checksum
How to use checksums
8d04d25735402c26c3327492d9076f5660f6d987dc6dfe514802016c3dffa300
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.1-cp313-cp313-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.1-cp313-cp313-macosx_12_0_x86_64.whl
Size 95.1 kB
Tags CPython 3.13 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
8d7b0e473d63e0e5c52bb17358e8c017ea27973aac6739b74826667573fd2b45
BLAKE2b-256 checksum
How to use checksums
0f6e05bc6fcc27484570cc3b14534e2225624db2844ac6bf1afa2dbc9e7cda50
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.1-cp313-cp313-macosx_12_0_arm64.whl

Download URL punchboot-2.7.1-cp313-cp313-macosx_12_0_arm64.whl
Size 92.7 kB
Tags CPython 3.13 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
396a517b5c71938bdf84657784d7eb4316c5ed4eb60e9739a52a399faeb1b6e7
BLAKE2b-256 checksum
How to use checksums
6c696fb0bb68f37e94ae16a3ed947f76627c09a1607cd872e9c3e6c98a9e0499
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.1-cp312-cp312-win_amd64.whl

Download URL punchboot-2.7.1-cp312-cp312-win_amd64.whl
Size 113.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3b1b8417cd60a616e431fff5f4693ac2477e9d9e9730678c283402f3a2cbc07b
BLAKE2b-256 checksum
How to use checksums
cb4dd9c1f4c0b2326b7fd8f853e48390a51aa9817d52575f2a77010f259966a0
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.1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.1-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
91ccb2e6899a32ee84074c6cf7702c7903909418ef6e53238ff6aee99348319a
BLAKE2b-256 checksum
How to use checksums
fcbcdfeea0169b22c8495928289860d16918df4bb47ded22b50a723555b16da5
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.1-cp312-cp312-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.1-cp312-cp312-macosx_12_0_x86_64.whl
Size 95.1 kB
Tags CPython 3.12 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
8e945c0c578466ac0800b6dbbbe1cbfba3021379ad58b5ae4f838f16f18b7745
BLAKE2b-256 checksum
How to use checksums
7d1969063178115aa4d5f4a85ca446d06b3bd0b73d100e4bc76ff8f41083203b
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.1-cp312-cp312-macosx_12_0_arm64.whl

Download URL punchboot-2.7.1-cp312-cp312-macosx_12_0_arm64.whl
Size 92.7 kB
Tags CPython 3.12 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
fc777a78f51f48a769eefd279f0edd3283779bf3ba1c719773f32e9ae2d336b8
BLAKE2b-256 checksum
How to use checksums
1b2ac6cf3eb5423797d19880a1adbdfb91db46131fab7ff9ef77a781bc87c663
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.1-cp311-cp311-win_amd64.whl

Download URL punchboot-2.7.1-cp311-cp311-win_amd64.whl
Size 113.7 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2cf4da8833dbbef4d01d6091aff524ab90fcb86f16b784ee70b47ffde52f5ac9
BLAKE2b-256 checksum
How to use checksums
6e7f5568f610105283993562dad2b236fcb755886ab783f80ed4fb2eecf67a8e
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.1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.1-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
4a5949797ecf27743d5041587c69b2ce97dd0d97946f13d1b915c3ac3b43e630
BLAKE2b-256 checksum
How to use checksums
3a9dc000531afb9bf647d238391abac6b86dd93cb41c3307df6148aa3b70cd51
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.1-cp311-cp311-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.1-cp311-cp311-macosx_12_0_x86_64.whl
Size 94.4 kB
Tags CPython 3.11 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
6d90f65293573013de5c7d66406590d0b22ca1d35d9841803b849073efced66f
BLAKE2b-256 checksum
How to use checksums
25628f9ddd039ea382e2b2542ac8b8c37f4b720f4c0628194f5723565a9912d6
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.1-cp311-cp311-macosx_12_0_arm64.whl

Download URL punchboot-2.7.1-cp311-cp311-macosx_12_0_arm64.whl
Size 91.9 kB
Tags CPython 3.11 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
a8ada466ddb93cc3e92b658c58a77d997a63d25491a0f98b7b2e98f420cd6f02
BLAKE2b-256 checksum
How to use checksums
8fae8e413c72d912de830c82d710d19bd65594b332248670c5236a21d8c29c82
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.1-cp310-cp310-win_amd64.whl

Download URL punchboot-2.7.1-cp310-cp310-win_amd64.whl
Size 113.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
608f7ed1b053c79fc2529ee92a1aed75fc2b4fa55371a530ad4f6467e772c791
BLAKE2b-256 checksum
How to use checksums
c2308b0cf74c288575f8d00236f31765e9dffbbebe2eaf1448a43c56316c8ef2
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.1-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL punchboot-2.7.1-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
c8cec5a3c151f27feb144a5af575b1939a302354075997b4fe4dcd2c543d4959
BLAKE2b-256 checksum
How to use checksums
c410b73975ecd3ea523ab4ff2642c88670d6b7260e8ff190db272671b3ec44f9
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.1-cp310-cp310-macosx_12_0_x86_64.whl

Download URL punchboot-2.7.1-cp310-cp310-macosx_12_0_x86_64.whl
Size 94.4 kB
Tags CPython 3.10 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
7bbcc9192f3b4d7f602e8d946e5c5d7d42305e3706ca153fdcc9e908333235a3
BLAKE2b-256 checksum
How to use checksums
512135c05e1462d3ffb0bf05d0fb983ec7b5c11fd73048b06e6af3692c16d4de
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.1-cp310-cp310-macosx_12_0_arm64.whl

Download URL punchboot-2.7.1-cp310-cp310-macosx_12_0_arm64.whl
Size 91.9 kB
Tags CPython 3.10 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
783d86d75e415d3fd1037f3370c19428bd299c042e5cae88acb2a910a6384087
BLAKE2b-256 checksum
How to use checksums
0b4368f1ff3702f9aded37753df3ad5385d6b16f52736b28731e34c6680ffcb3
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.1

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