Skip to main content

Punchboot tools

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

punchboot-2.3.0.tar.gz (36.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

punchboot-2.3.0-cp313-cp313-win_amd64.whl (115.4 kB view details)

Uploaded CPython 3.13Windows x86-64

punchboot-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (540.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

punchboot-2.3.0-cp313-cp313-macosx_12_0_x86_64.whl (94.5 kB view details)

Uploaded CPython 3.13macOS 12.0+ x86-64

punchboot-2.3.0-cp313-cp313-macosx_12_0_arm64.whl (92.5 kB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

punchboot-2.3.0-cp312-cp312-win_amd64.whl (115.4 kB view details)

Uploaded CPython 3.12Windows x86-64

punchboot-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (540.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

punchboot-2.3.0-cp312-cp312-macosx_12_0_x86_64.whl (95.0 kB view details)

Uploaded CPython 3.12macOS 12.0+ x86-64

punchboot-2.3.0-cp312-cp312-macosx_12_0_arm64.whl (92.5 kB view details)

Uploaded CPython 3.12macOS 12.0+ ARM64

punchboot-2.3.0-cp311-cp311-win_amd64.whl (115.4 kB view details)

Uploaded CPython 3.11Windows x86-64

punchboot-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (541.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

punchboot-2.3.0-cp311-cp311-macosx_12_0_x86_64.whl (95.0 kB view details)

Uploaded CPython 3.11macOS 12.0+ x86-64

punchboot-2.3.0-cp311-cp311-macosx_12_0_arm64.whl (92.5 kB view details)

Uploaded CPython 3.11macOS 12.0+ ARM64

punchboot-2.3.0-cp310-cp310-win_amd64.whl (115.4 kB view details)

Uploaded CPython 3.10Windows x86-64

punchboot-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (541.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

punchboot-2.3.0-cp310-cp310-macosx_12_0_x86_64.whl (95.0 kB view details)

Uploaded CPython 3.10macOS 12.0+ x86-64

punchboot-2.3.0-cp310-cp310-macosx_12_0_arm64.whl (92.5 kB view details)

Uploaded CPython 3.10macOS 12.0+ ARM64

punchboot-2.3.0-cp39-cp39-win_amd64.whl (116.1 kB view details)

Uploaded CPython 3.9Windows x86-64

punchboot-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (541.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

punchboot-2.3.0-cp39-cp39-macosx_12_0_x86_64.whl (95.0 kB view details)

Uploaded CPython 3.9macOS 12.0+ x86-64

punchboot-2.3.0-cp39-cp39-macosx_12_0_arm64.whl (92.5 kB view details)

Uploaded CPython 3.9macOS 12.0+ ARM64

punchboot-2.3.0-cp38-cp38-win_amd64.whl (116.1 kB view details)

Uploaded CPython 3.8Windows x86-64

punchboot-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (541.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

punchboot-2.3.0-cp38-cp38-macosx_12_0_x86_64.whl (95.0 kB view details)

Uploaded CPython 3.8macOS 12.0+ x86-64

punchboot-2.3.0-cp38-cp38-macosx_12_0_arm64.whl (92.5 kB view details)

Uploaded CPython 3.8macOS 12.0+ ARM64

File details

Details for the file punchboot-2.3.0.tar.gz.

File metadata

  • Download URL: punchboot-2.3.0.tar.gz
  • Upload date:
  • Size: 36.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0.tar.gz
Algorithm Hash digest
SHA256 f9d3bf3d2b6c3abbf5cf614bb51545aefacda32a39e6135181cbe6700421dece
MD5 6908b8d5dabc9775a2ed1bdb53d9d65c
BLAKE2b-256 780c0a9e011137a3993abb6e79f44c543a6cd81d3af368cd09e708da193351f1

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: punchboot-2.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 115.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fa673904eeca21432404f09fe046f07bf7f03eaf9b9e2e81003d07db995c883e
MD5 25c0eb17f3562573ea806fd94f48128e
BLAKE2b-256 b2e5ce0c3abccb3de37fb9e4cc07513d64fdae6db7c828b14ced6f1bbf84a09d

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16295d0cc8e0e6e4688ae1e32bfcf8de8c8ef675f73abf4fad50a9ba52750453
MD5 44a99292700e5018eecf0f9d4a0b3978
BLAKE2b-256 95afdde6bd733da65126fc31bf02806413e46a7f9407794fd67af4c16074564a

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp313-cp313-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp313-cp313-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 f63d8fa6e13c94fbba942a8ccbae0181845fc90f498fa22a12423f43b2c0c662
MD5 73315b3f97d4d14858e6a4b4bee5e4c8
BLAKE2b-256 65a22a35c7b3dd9fa87828fe5543013882d1c0bf5f937511e94aa40f4c58b77e

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp313-cp313-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 66a88b73a1ae878074a674ccdf3d51783bfc2392132e54fa08fad9a8634aa8d6
MD5 a94a4517cd72630fa5d1a9f430a1445d
BLAKE2b-256 cd719ca106d318a606a5e66ac4335b03765e831ef022f38458399d4d41279eaf

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: punchboot-2.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 115.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c3d7426ddd1b01b831ad34ba99ffb870e9f99aca2cb3f8c3e278971616e0d785
MD5 9c7af9b0e48f09abc2707fef1162ef93
BLAKE2b-256 737482b7b55ad2338bde846e2f749ef03dc81a8b56e897268226970549fec305

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc07181f50e0fd202fa6a532200cf87a933c5dc19ed0113184759a601f0da605
MD5 045c68e5bbd602f4a9cdb38df64a2937
BLAKE2b-256 0266cbdff83d26ceeb4e167b4d2627ab5189bf6dfdf782e4fb84893b6b587c14

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp312-cp312-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp312-cp312-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 0eb1e9bfc9b0136b781f40fdaa7dcd338eb5cac47101fdc06f68ef925ef98349
MD5 01b910b70de47b0c5c40252c5b10d3a3
BLAKE2b-256 b9939fc9338d7ba5ece003c64fbb5737d129b06973be2591b7e0c5d1331bae77

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp312-cp312-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp312-cp312-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 72cb68c72f5b6881350d2335e1de8a67158ab68876ed5696cc312ca1be57cda5
MD5 23ed143c835ab52655e7fe3ce63398c6
BLAKE2b-256 f4dc0fe298d3ab45f6bd15acc2dec9e91fcb9858fb8bfb57017434343ce499e5

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: punchboot-2.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 115.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 29938d6a9a9a35b32fef02c0c8ea33268a03152f41fe25a3d64dfec7a6eb8fb8
MD5 f298482bada15daa938abd2a66ce37a9
BLAKE2b-256 bcb66ad8c4071ffba2d1e934c2398691bafec7d7b81440845f3e7991809aa71d

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 67c0278d1bcb8c4e6e3bcf454b605057443423ac8b934ca6d0504d35ada3f7fe
MD5 a12be62e107a7e6df35ff73eed23c876
BLAKE2b-256 00f242207459577261badb545881f39f80e17cb62baed42ed41080e7138d7430

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3511ad8fa7f51fe447c44463179e37f6c265565d4282a0ed003739bbcb82a0e4
MD5 12c568b44962f3ee2ac04deecbf59e85
BLAKE2b-256 d61d12e1df1a776cf639a88c259ab1f9c5aed05f1712532d0d28afded9a68221

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 09a4222fc20bc7345a99e6521e065c784c8cca1e8fa810f717b111aab48459c1
MD5 e0bd5641deeeafbd1bc12fab4b655959
BLAKE2b-256 f9e81ea90fadd2c02b1d4aeb1191c2f3da1544083796a0106557cf29f41cbae9

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: punchboot-2.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 115.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e2212a120303d6a26093de4e25aa536efd3fe0b03204ca3d799d647058ec1999
MD5 2f4bd5132403ac130b841215676a454b
BLAKE2b-256 31e1ae8a2a2a9dfdb7c30afda91ae41583d5bda0f72eae507a0788bbcb25295b

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0e1321f2b6992a1bd111860fc6225813d7f41d64a8cbe26e117de7bcf3f88b1
MD5 9a48d22947df0bdc1c49102748774f9e
BLAKE2b-256 4ebe97b417e2b21bd98e3e3737927b3e065c9b91991e7191503f4e29905e6e99

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 4bfaaf59369fd6ac458b8cd9d06696e9173eb0a692abad0d4848695dec29928e
MD5 496b24b8785cee3a5adddd5d18525261
BLAKE2b-256 faee1be48b6182b281ec3828026e571b4303235da3c0d397b96454488f8688b5

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 32a6e576ecc2bb8adfcbe706a430f9030ef43ebe984c811d105999a1779d322c
MD5 b2f9d28539a945c181f9ac86d39f8817
BLAKE2b-256 fe0fdaea9358f9b9c2b04340ccaba20a59e8bf887d51997f95c22f5cb0ed4155

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: punchboot-2.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 116.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 082effacac9c404fe54f610e5dfd4b12e18470fc35aea7f5a3c102c155b9c85e
MD5 0596afd2686b5ae79e025fe05e243eed
BLAKE2b-256 fe092f5186a95666428a5d8d9bbbc54f74b9173fa95855f5d561d7f7663af026

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68f909d84e149b3e210de1eee2ce9a9cb28103624921657d446eb2d8c2e0440e
MD5 f3a0cca84e8f236f39cac706c0afe011
BLAKE2b-256 f493d9826f2cd11903a2f9d1ad46220c79d57d12d09a01837a1c3c1ae6f08d74

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 f3b28506469c24a902b32592d00b9e1f7e40179aaf6db792dce847c1090293f7
MD5 b77b8cd35b89df241bbef61f48b557a5
BLAKE2b-256 a1505c6b3bd4003be84bc18b428aca32a005a86649f43a6649303804145cde96

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 c728369224b6feebda28d42258e8f86d9c471e582ac2399b1c7189ed83d04c66
MD5 f9df08adfe3e057f93d86e9c271913e7
BLAKE2b-256 247530e568263e7c2e0b826b989a9a47c840716ac7035d33b702dff76cf7e712

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: punchboot-2.3.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 116.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for punchboot-2.3.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cea7c9e57ab539a96a279d9d5d6bdcf60479465c844b6d894178c8153d3b14c4
MD5 8c01c6cd151416010f8370f0d6e58ac0
BLAKE2b-256 6699a9df00bf036b9203d00f106112b48f806ba1f23e5ae6cfcc967fd72f791a

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52cdf5fe11122dcc552677567aa32971917934d437c539f71ca96ce7014049b1
MD5 7fde259d96f125b81aa57411e579f982
BLAKE2b-256 dfc1c2cea966449c879af16fe99603d44bd1c864c65e2197c456fda14bc27f28

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp38-cp38-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp38-cp38-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 0314a2bee1f81830683a6036b008ac42b733ff4ec835630b171984bb75cb703d
MD5 96d2794c36d6885188d506fa3126cc91
BLAKE2b-256 8362b0d59a2c2456602c6f3b57563f8037cb73a7d41c3eb4149e0ca8dae77033

See more details on using hashes here.

File details

Details for the file punchboot-2.3.0-cp38-cp38-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for punchboot-2.3.0-cp38-cp38-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 c0b2a10b83530eced4e130d25c1e1d29d6e88c9efbec203c5171cd30d71daeac
MD5 1630f5cbd1082a95e076bd08355cb00a
BLAKE2b-256 52ecc48d37fbbf42bebfa4e9cfd943fced3b10d283dfb8626c9c5bf4299e82b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page