A package for the Shake and Ascon extendable-output functions (XOFs)
Project description
xoflib
A Python package for the Shake and Ascon extendable-output functions (XOFs). Built using
pyO3 bindings for the
sha3
and ascon-hash
crates.
Installation
This package is available as xoflib
on
PyPI:
pip install xoflib
Algorithms
We currently have pyO3 bindings for the four Shake XOF available in the sha3
crate as well as the Ascon XOFs from the ascon-hash
crate.
Sha3
Ascon
Documentation
For more detailed documentation see the xoflib
package documentation
Example Usage
For the Shake128
and Shake256
XOF, the intended usage is to first define a shake
object, which is then finalized to product the XOF or Sponge:
>>> from xoflib import Shake128
>>> shake128 = Shake128(b"a new XOF library")
>>> shake128.absorb(b"written using pyO3 bindings")
>>> xof = shake128.finalize()
>>> xof.read(16).hex()
'1301cd080b034973e961d585330b9e0c'
>>> xof.read(16).hex()
'1af56b984d09bce5a6c07da3f3b953bd'
The TurboShake128
and TurboShake256
XOFs additionally require a domain separation:
>>> from xoflib import TurboShake256
>>> domain_sep = 123 # should be between (1, 127)
>>> turbo256 = TurboShake256(domain_sep)
>>> turbo256.absorb(b"Turbo mode")
>>> xof = turbo256.finalize()
>>> xof.read(16).hex()
'798984af20ecc1e9e593410c23f0fe67'
>>> xof.read(16).hex()
'5aa0168bc689e89a35111d43842de214'
Sponges can also be constructed directly:
>>> from xoflib import shake128, Shake128
>>> sponge1 = Shaker128(b"a new XOF library").finalize()
>>> sponge2 = shake128(b"a new XOF library")
>>> assert sponge1.read(10) == sponge2.read(10)
Motivation
For most hashing needs, the hashlib
module is appropriate. However, the
package maintainers have
decided to not support Shake as an XOF
and simply treat it as another hash with digest. This means that if a user reads
n
bytes and then wishes for the next m
bytes of output, they must generate
n + m
bytes from a digest()
call and then slice the output for the last m
bytes.
This can be an issue for cryptographic protocols, such as the post-quantum protocols ML-KEM (Kyber) and ML-DSA (Dilithium), which rely on Shake128 and Shake256 to continuously read bytes for rejection sampling.
The purpose of this package is to implement XOF for their intended use case, with absorb()
, finalize()
and read()
methods, which allow for the correct instantiation of the XOF as well as efficient sampling of bytes.
Tests
Sha3
We rely on the testing of the sha3
crate for correctness of the Shake implementations. For API testing and consistency with hashlib
we include some unittests for the XOFs exposed in our module: tests/test_shake.py
Ascon
AsconXOF
and AsconAXof
are both tested by comparing the output with the KAT vectors generated from pyascon
. For more information, see the test file: tests/test_ascon.py
Rough Benchmarking
We find that xoflib
performs equally with hashlib
and is faster than the XOFs available pycryptodome
.
xoflib
has the additional memory cost benefit as calling c
bytes to be read from our XOF n
times only needs c
bytes of memory for each call, where as hashlib
requires the potentially colossal amount of n * c
bytes of memory which are then iterated over.
We include two timings for hashlib
-- one naive where n * c
bytes are requested and iterated over slicing over bytes and a second which uses a wrapper by David Buchanan
from this comment which helps with the API but has the same memory usage issues.
All times are derived by timing the computation of c_0 ^ c_1 ^ ... c_(n-1)
for n
chunks of c
bytes:
def benchmark_xof(shake, absorb, c, n):
xof = shake(absorb).finalize()
res = bytes([0] * c)
for _ in range(n):
chunk = xof.read(c)
res = xor_bytes(res, chunk)
return res
================================================================================
Benchmarking Shake256:
================================================================================
Requesting 1 bytes from XOF 10000 times
xoflib: 0.69s
hashlib (single call): 0.65s
hashlib (streaming): 0.82s
pycryptodome: 1.82s
Requesting 100 bytes from XOF 10000 times
xoflib: 6.65s
hashlib (single call): 6.57s
hashlib (streaming): 6.98s
pycryptodome: 7.83s
Requesting 1000 bytes from XOF 1000 times
xoflib: 6.05s
hashlib (single call): 5.90s
hashlib (streaming): 6.15s
pycryptodome: 6.15s
Requesting 10000 bytes from XOF 1000 times
xoflib: 5.82s
hashlib (single call): 5.77s
hashlib (streaming): 6.37s
pycryptodome: 5.85s
Requesting 32 bytes from XOF 100000 times
xoflib: 2.71s
hashlib (single call): 2.63s
hashlib (streaming): 2.89s
pycryptodome: 3.83s
For more information, see the file benchmarks/benchmark_xof.py
.
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
Built Distributions
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82532374e94dbba347f82039386b6800c353f369b017d6e146597414a0a29fb8 |
|
MD5 | 643c641774fd6bb62815eff15766a0fa |
|
BLAKE2b-256 | adf34ab4a0bf4e4189a813a13bde189fa7fb7066ce94f9d41f301edf9094a3d4 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e943753426a407c5722dd67d4f014600f6eafc784c8dd2067b8b71ee94e5333 |
|
MD5 | 985bfebe4d67619a6b2fc7bb09b017bf |
|
BLAKE2b-256 | c95cd617971a24ffa148ca3002daa76595f8ec80ad138396a2b442bab8034ce6 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56720a57b8792fed26667e130a547bb391ed64b84ee04bce1da24a3dff6723de |
|
MD5 | c0393acc4827c125f6d8d394142f921d |
|
BLAKE2b-256 | 2c5e11e79ad41f9717bd055cb20e1b5f1a30ec5679d5c12a695d66a3a8e38f60 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b2e8f6fc3a4fd5096aef28b827f0988746e1fe4d24370d4c919292e4e359134 |
|
MD5 | 23fd9de2993c00f1b16746d0e217bb2d |
|
BLAKE2b-256 | 82a89257feea5235ceb2c05bc2b2aa4f50b4bb97eebbf33540098c4e6c7b7b3d |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a3d3e051e07154e8a84b467e2e1e763c4f88e1b660a963fca58ba93ca2d44fd |
|
MD5 | 6faf94f2017c95107a061a7159accf95 |
|
BLAKE2b-256 | 21b3fb88e1c5910c89e02919cc6bffa70540f030f5ebefc2d1f1a077611233d2 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 410a0091d5cc0ea7505f60b2338e7e2916e9c18a4350808a979834d062f07c5d |
|
MD5 | 2b2a15bb8e1451e51e40624a4b26c041 |
|
BLAKE2b-256 | 278d914c9ef44bc18ef2815aabe8ff10084fe9523ed82476cfae4b3d94b244ca |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35f96cee3d205dfc10012dee3ab9e6e97fd4fb10ac49d53490e2cd7d6d656a18 |
|
MD5 | fb5580f012517d4dc1252f2d0704a820 |
|
BLAKE2b-256 | 941b676745fb93535dc8359240274b5d0bdd7cf3ed4a4a317e89ebb467796ad9 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2a9de2f011517fd290e1a5e1b407e3b1fa528d43e210dd545486aa75e9e88a9 |
|
MD5 | 52d1be96aeb57d9f3c8606e544906c3e |
|
BLAKE2b-256 | 6b0430cbab652e3436de593c411047ae813e335f36001ba099e680b4ad2d6e72 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a28209a1b8fb8a9906f20a9f3195089db46ae6bf18c93d2a9f7a3e6889ac29c |
|
MD5 | 5ed0456754d9685c6007f2c7e1cc364c |
|
BLAKE2b-256 | 03f32ccdeb6e4e2b6ef3788d21e9785043250d9e3a242ad079c83c7b3154e488 |
Hashes for xoflib-0.2.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ecc0a72eb4e4e69701485ef033b29a8bf44ea4e46a544cd0022f9b0a1b1d46c |
|
MD5 | f75ad63b31a1adfef4d2cf4ab080c52e |
|
BLAKE2b-256 | 7108565a12eb4666961e12bda35118bcc34c7f24e82a4541b552a5a75c9209ab |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f68366fe899eb2f9619503d12f227596f92a2d5082297b9e6a5b971093b9cef1 |
|
MD5 | 24d53955a3d3c5fc6d914c346b18a53d |
|
BLAKE2b-256 | 3a4e0a1a4046ebcb0c47e027ae289c9d510f829d4d9f07e2c80766b1d7dba6a9 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c254d2d2ddf792b905122cb0f9f2cc7abe44be5b3f590f766e6007c8246ac587 |
|
MD5 | 21e00c885a8bcf0a6abe8a1723eff1b1 |
|
BLAKE2b-256 | af77e13d05dc7156da604c6b4b5af77730965e9577e3f89ff0c54b42b9f76307 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67931a76e76359b7a75de8d3b304f2cef2813d983df0bc7477dcaf1eab997f26 |
|
MD5 | 5805cfa0110c4fbc3aa395e5b0ea981c |
|
BLAKE2b-256 | 4fb998450cf4a3959332f6a3ec670b31eebd1d0279e3d06683a11b711c203700 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bef82c433c9cadb798938e4ab390781051d91789fe8160daf4e7cf7b3157f94 |
|
MD5 | d44ad288f8f0397828600c7c97093b96 |
|
BLAKE2b-256 | 7c3d58f636f329bc70f864b1c75bbcc9a28c3e958d36330706b3dd768f785e4c |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b89970bd01f3b0d907090ba324798b1caf1eed386ff9f8dca6f2f1e6b380f25a |
|
MD5 | 5a549bc843631e53f25259bbe5730541 |
|
BLAKE2b-256 | 4c775c6b08827d2646dcd669a2917d3357b6b4ac8d8c6688c6eaa356fe625630 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 681a3dec2e66373eb9844692578395bb43f00b4a5f5917fbd1b71e326f3c37ad |
|
MD5 | 4671818ede2ad1a195796c5fa85360ab |
|
BLAKE2b-256 | 147a8b2094507b30fb9021b47d4fcf7aa226692ab40d3c8bce57161c669b8b20 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f226e0c72e7f30bdd255764467a16b381f46849b6553b39861264deabb46d979 |
|
MD5 | 048ef415850e1f37ef8762a76e2aecf4 |
|
BLAKE2b-256 | 5c314e42480d491945f6009127020c460a86f904f9ebad382ee2d1854d859ec5 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be9fc00246ae675acf6de4c292264ae9516c1d9b92b0e74450500982b47314c2 |
|
MD5 | 8dd6eb80a1a15682df64562fb6d030ce |
|
BLAKE2b-256 | 3155c87e7b2dea4b29625242e2a01ed9d670e103c29efff01caab6ea7f91992a |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca9b747cd28b1eeabac60b6e79ca4f3f9e007f383259f4026bfb9e0815d24a25 |
|
MD5 | ec625f1237839db72ddcdcbfc2d4d83b |
|
BLAKE2b-256 | 12a70eb7f5bd151276b62b27165d3a9e50f57c8dfef1d3f811d7661774ca5b64 |
Hashes for xoflib-0.2.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f313b8c94d1ace4e1a53b7f0f209dab01d78199c348acdbb479bec98351171d1 |
|
MD5 | d0f58e00ac149f8f38712617b8fec6e5 |
|
BLAKE2b-256 | 5aa6143d9ffe9705546aa02c82470baf817939e0cf01105ff33e0c5009b3c894 |
Hashes for xoflib-0.2.0-cp312-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 677c5da7e5c5195cd2d8886a1b9bcbd96d2f486012f92b17e91d9341df8d5e71 |
|
MD5 | 50f222e8dbfb03614040c495b14169b7 |
|
BLAKE2b-256 | 2140dc2d17f3410d56118103b125f6814cf7208400890433278e16fca8fb8dec |
Hashes for xoflib-0.2.0-cp312-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af20c33ab7713d0e66ebf2755023131f38ca780fc5797784d858cd4e2a46c748 |
|
MD5 | 7979c3445959f4db12052e404e68d70a |
|
BLAKE2b-256 | e7eeb0012e7776f51f4c440902989a971482cb5f6b9d0df249721593a3481e80 |
Hashes for xoflib-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59c3da0f29d422d90c135ec7fabe8916348eb2f7c48e2428fc8e8d1c26e2f2f9 |
|
MD5 | cf9685804b884c37384622c0e2591feb |
|
BLAKE2b-256 | 4701931cd57b747f6d4743d05540b294b5d33b223992a091783aa3fa4499bd19 |
Hashes for xoflib-0.2.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f65c90d15bda5e8060ee097ce1a981e57cdc305e19acdf404bfdefc2ebce740 |
|
MD5 | a15a955e0f4d4649de8fb3a8dd678492 |
|
BLAKE2b-256 | ecf2e4557e0ba67ad39d48f9ffc254500cc57c495337f61ee7a0c19dc37fb410 |
Hashes for xoflib-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e54c774b26f5fd2cd425c6c02aa7d03da672a3528e7a9b5d3ef393347822425 |
|
MD5 | da34286edaab64ffa738fa3ec096ff7c |
|
BLAKE2b-256 | f7837f77d463ceedf737e09a0dff653487960ee8782cf20118112d3ddaff8fea |
Hashes for xoflib-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d7256dbc3ac6aa8cd944ac3726cfdea116acdd64af3910fedc5a46d59344d30 |
|
MD5 | 5b6410e1331d4ec0ec79f06971348799 |
|
BLAKE2b-256 | 6f44de0c939ae54e43dacc833c91d23dd3315aa07f707ce1feb3f8e55a3d5aaa |
Hashes for xoflib-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62f6bc83cced471574217b799ef1893def843868eb080118ce850193acd3dd5b |
|
MD5 | 7d38eebcee0e26fbc83572bb06e87f34 |
|
BLAKE2b-256 | 7c7e8a96766d534d72d49a60e787f442f1ea3171140547013b2c1f1a85c3971e |
Hashes for xoflib-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17352cd27c5aefa85678fa3aa3c1bb3737345a17c77d11429d1e2c102f2a7f31 |
|
MD5 | 3d9f6cf54112d9ca73678711c3ceb407 |
|
BLAKE2b-256 | d6e577bf06c0b9b6a737d91033fc9fffee221d2050079d50c8e4d50e294201ce |
Hashes for xoflib-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7ec5c6e4136982709a8c9926503a8cadd7a7a54f9df2b59b5e5d3bd4eadc634 |
|
MD5 | 1077b7489b998dd09683938bef6e2cb7 |
|
BLAKE2b-256 | 5f4117844b4c0c00ab73bf36fa3a0ca0dd414d79fdd8e1a579529ef5f7627de7 |
Hashes for xoflib-0.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afcca10957c962ff91b27371db44548c1cbc22375e26aede6db076f0ea845c7f |
|
MD5 | a4e5b2469b3f88184b19dd2af31551b4 |
|
BLAKE2b-256 | 01c934b0c0e3fb999429afc11bb6229544dc4f5153bfffdfe0fd44057d1d3db0 |
Hashes for xoflib-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bfb3a7e5016710985717641c3702f2bf1c489ad0931321edd8b864a0c05a976 |
|
MD5 | 6d5952362dca54b1a5231928897b5c29 |
|
BLAKE2b-256 | 365dd39b707c7ddbe5d9587b508ffc04ed2bb9c247dea56adc2c042ed5e8c645 |
Hashes for xoflib-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2f4bed81189143b6ef753a9def55f4814aa9bf79798103e7c7f69719c9a3358 |
|
MD5 | 0915672bcff34a94c6787fa8c4c3863d |
|
BLAKE2b-256 | 978fc4270f31e697a65f628279cd319c9f424a836e0a7f3e2d09106e6e04ecff |
Hashes for xoflib-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d93579fb55369847012438a2f045c65a7dc7e53e4b777a5241f4c5cba4e2f467 |
|
MD5 | eccbf6c42d381d9ec4e487361cb16860 |
|
BLAKE2b-256 | 05404bcade3196759efe2d7bd0be67a4e0e697250dabc1ed41f7820eb91230dd |
Hashes for xoflib-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e87dd276878a469a8363cb1a70b0e99581e217560097564c7c053aca45c9de63 |
|
MD5 | 758f7686484e905d05763f58cb85d3f7 |
|
BLAKE2b-256 | e820eebc51aeb06d16a461a9900c0fd256a7bb4c230246b5788d2878e4efbe1f |
Hashes for xoflib-0.2.0-cp311-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d0b3ff5148fa4f19a6ce2da9381cf7fc1326d5e0ee8bd68231ffaaa21f85f62 |
|
MD5 | 19d7f7ffad0665f930ff7d225fc05d18 |
|
BLAKE2b-256 | 8c8d1191de3799d7b508dd352777b7f0956bbcd3bd4df4c95329da95a17ec656 |
Hashes for xoflib-0.2.0-cp311-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3834626b2fd6613f27d77a9395a5a38148492c3fa750e418661eca09ce3e61a7 |
|
MD5 | c70b17c66f92299ea878052822419d00 |
|
BLAKE2b-256 | 66b74a74c53454496c2a17faea7031cc377966e95c5ebd545b0780d15ac55465 |
Hashes for xoflib-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd71b7261673dad8ff535704570644cd7bd9650768b52ea21f619abdfea08ebf |
|
MD5 | 843a0bca67f9cbae9c701bb4583c5221 |
|
BLAKE2b-256 | a372a098eaaf38416b020e56cd5aa39d289f3eabcdf84e609582c835a5cc7851 |
Hashes for xoflib-0.2.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4412e186f584562438623749d54fef4dbc13b41db80bd182d2f7fca0117e13f1 |
|
MD5 | 2e7a11ac8281f4389b66ea4a6cf83802 |
|
BLAKE2b-256 | af868f03cf532ea08f092da15e4ee32bef680019a09091eab7140c7b88b9086e |
Hashes for xoflib-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f49be90c194cd22def392b3877a6915c6347bf5ffda1211892d00d4a6ab652f |
|
MD5 | 2cde7dc60b039144a2989eb34c9d45de |
|
BLAKE2b-256 | 6eb3c7c1a807bcba31e8123bb9d6e2c3d8039a9914f9d4887fb1045fa280f360 |
Hashes for xoflib-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d575d9c444153c4c919cbfeb0485e468c506e3135b5ab05b10b19c8220fe649d |
|
MD5 | 25321d89f9622e84c9e7ae05e4c30575 |
|
BLAKE2b-256 | e6c8f291ee64d0c73657cd3f18ba3034b6bba8ef8587121085afa6e2902777dd |
Hashes for xoflib-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3b6144f64c8c4c0c21b16610096714a44fb22ca2f49c6dbfbb72b9647abd972 |
|
MD5 | 4ea24404eb695ad673c369ea9e5a1761 |
|
BLAKE2b-256 | bfbc590ea0832a5d1a7303629f81164a2d10fc7cb518d4348819f4045414b887 |
Hashes for xoflib-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 052af685b33abc096f847a00ca870e8c2f0a508c61408e649ca740332176e658 |
|
MD5 | fcb619db9b76e78ca7df9a335c6d1461 |
|
BLAKE2b-256 | a78b6a11155ed0c1fed0f3c36f1000cc5b69963caaa97478f4f0c3cdc82f1613 |
Hashes for xoflib-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78a69344286fa75dae6efd9dac22e72c21b3f27da7ce9511dad7a0c8eab70326 |
|
MD5 | 34bca703b77bc2d1a1c4e3bef58e8498 |
|
BLAKE2b-256 | abd123c58670291ad523fb7f277aba0e5f54457fe10d1f78a3a9e230546c2a17 |
Hashes for xoflib-0.2.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31df063c0ebc9f360c9c4fd7997e2caea8979060329c7ed45ae7deed76853d62 |
|
MD5 | a84cb3781119fd6d38235b363145c30a |
|
BLAKE2b-256 | f3d2774207e6a2602c87d6ad7c5ef59f05edde82f4b098783b12e4ed2925a454 |
Hashes for xoflib-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76b5f1f1948d55ae98d955eb7c9bf9d856f32847942ba794bad92fcc4acb2ff7 |
|
MD5 | 6f30211d8a6a127be2177ab2b64f4c52 |
|
BLAKE2b-256 | 89d1db18d2743a3e41c05b120f2ada92c14a0f0a40eeb9ccd6245468ff90f381 |
Hashes for xoflib-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65a3fb58379ab54ee7206accd32ae056f6e015b1c59767fa5246e5ad627e58fd |
|
MD5 | a0e9a266c51528818edf55bce4be8ac5 |
|
BLAKE2b-256 | bc16a51c11c10e17ad49aba5b67d5b6e23a88890b814661f49348580ba711d2f |
Hashes for xoflib-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2361322f0a9ad04d9d832f88afa36e324dfc7bfe0a415016c7a7041e512292a |
|
MD5 | dbc923ba5814d89533231a808f81da43 |
|
BLAKE2b-256 | 18a0be202b65747f905d04390f96a9e1751be3c04b51d80b7ad700e220695dbc |
Hashes for xoflib-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ec29e7c3086f1c372ef998806b0c95fdf3c4408d31f17fd9aad2552cf074441 |
|
MD5 | 60527d4ec2c472677c3680dda82000c5 |
|
BLAKE2b-256 | 8eab8ba7b24a1df6e7ca7db44408d58dbc6a996de5b3ba022f8ef1d9305431d5 |
Hashes for xoflib-0.2.0-cp310-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 495a66d01dfa8d3ff05bf481213b3378b8e1cf5905411e0ab11eb834a887775c |
|
MD5 | e26bda4715804cf39bbefd93b739e7de |
|
BLAKE2b-256 | 31090bf11ff690e43e205cb0c168d4884dce94af3909ffd624bcc9bb8d28dddd |
Hashes for xoflib-0.2.0-cp310-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74c5285e29a0f9fee1860885276a23ee13eca39390233dcd501ef7459736ad25 |
|
MD5 | cb654a94e542e71ab749c4d38e088e22 |
|
BLAKE2b-256 | 076cf06b841bdbd4d671de8cd8305933f34e4a21138bbf9bd2a7a94e916e6368 |
Hashes for xoflib-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78d777e1a6f2100763ca0bd1d4c8b94be8def0e043d62e47e646b04905d991f2 |
|
MD5 | 4fa4e5ed6c743e5428c0f8232cfb6b9c |
|
BLAKE2b-256 | 0589c593fe5e3a24bbb49dd62ed5d16942832bf4a8bd88dcb14f3eda29155148 |
Hashes for xoflib-0.2.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de5af754253631a23101c3cd0c547334cdd512cadc2b97994f700ddc72b9fed1 |
|
MD5 | bcdb1621558c19e0bd6cba72fe82842b |
|
BLAKE2b-256 | 1ddfba6e4702712aa135d3e4fa770d4db5dc642fd8034cc0ec94635e2c4c05cb |
Hashes for xoflib-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cad9def43f799df58c7eff0068e358893ceaca7a58531c08aa759cded614164b |
|
MD5 | dbb404bc835bdf0efd270e3f8bd5ed42 |
|
BLAKE2b-256 | f5f62a9a749597fdd0919e96954c516f3f3b146eb6f10083b1b9632d6f0ea50a |
Hashes for xoflib-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c794a7b1e5c5047f39b86700d9f37129b742e67812a9f0dc6d6077d17b078bb |
|
MD5 | 97435083f0675cc03e5ad2aae3a7117c |
|
BLAKE2b-256 | de3c796f2b31eca6c29ed517687fbc37bbb6695337b97fce9ea37c3165e29e45 |
Hashes for xoflib-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f14fe64b4f8a0c383d9a9571c93aba7737c7495c3bc71fb039765b350278abc |
|
MD5 | ecdcdb294d4f3dec5d5a39ddc07d2007 |
|
BLAKE2b-256 | 38d31c6424d0d9d61f79ae4140ef93ba62b7885ede053c74c1d0f730b7ffd3be |
Hashes for xoflib-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c51d3f10806f34f53517189aae2e9dbda11d2fedaa5e1536a7d6941456670b25 |
|
MD5 | ab4e0a439c05aee008ad335f5f21b03d |
|
BLAKE2b-256 | cde78dff30cb43fdbf68f01200c83f42b8f584d6f7ff9197a989287d89fbf1fc |
Hashes for xoflib-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af8011eaee71552193bbcf53fd6d571cba889cbeec87e27acda4a6ab46c78e79 |
|
MD5 | 7b104a9360e0b9fde2c19ad4791ae125 |
|
BLAKE2b-256 | 5e06f98e6d6a44a82d316d063fcc3e47c6eda7b6635c0bd90714feb5777d6400 |
Hashes for xoflib-0.2.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05548fbd8cbf2466f836510adb9311d98174ccd5b214c43be85bbff914d18018 |
|
MD5 | 175c281e6e75f6aee920d9cc187315f4 |
|
BLAKE2b-256 | e45e8162de88f1c1edf26249bab769e32e085fd8b0543492eef9cc7916679f06 |
Hashes for xoflib-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 434b11c6d7fd2ca05e16a78445087e7536bacbf93943b5cee74bebafa1c35ac2 |
|
MD5 | 8a6fd050d2044cf660cabf13e5d67451 |
|
BLAKE2b-256 | 4d0a27b76ffe4c584344be8642d5fa6ae4160aa9e6bf71467a53385bbff91c04 |
Hashes for xoflib-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7be176bb8d160068e58ff091e138044a026c41e00199f2be64b262bb02aea57 |
|
MD5 | e8296b3ab7d41f0d028f05d363db0196 |
|
BLAKE2b-256 | 3569d8f8d925f9c17d2b37fa3cd93536a33a2ef73ba17f7498df644e0c6783b1 |
Hashes for xoflib-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72398b5d84cef4900fdb9cbb0d074750b8fd3d59c19adbcce89be99228723d82 |
|
MD5 | abac18cd4b60f9c22828b6d3fd155217 |
|
BLAKE2b-256 | 24f81d818e1bb2ff41aab7ddf5b22610624008cfa7501feffb692d54c26ca00f |
Hashes for xoflib-0.2.0-cp39-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23c8e932915b25ee16e581a2764dcc2b30771489c3d2e167ad67b30f2a7ad00d |
|
MD5 | c13c9a9b49dfb2320b3eca8811896489 |
|
BLAKE2b-256 | 410a9266ee289d37cde399316bac4f54992be7883e2a5f9c89342cb9630db7bb |
Hashes for xoflib-0.2.0-cp39-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6bfc7078d652aa7453ec74b77ae7622ab0585c314988e0c32df48f82c66a856b |
|
MD5 | 86f3674a6d7feada9e67b0577b909ff8 |
|
BLAKE2b-256 | 7cb06bbe5b23afbf2fba309a87e4ded13e8bf1f768e6188d64f2019023c436fc |
Hashes for xoflib-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b82b381fc97ee66a8abc488ba6fbf1df5f482af1e20310731e0f3d8e7aa85f7 |
|
MD5 | 4fce4458508cc335ea8121d59476ee58 |
|
BLAKE2b-256 | 8e76f96f5ad90887219a6961f10d5cd7f32804b1db6d82af854cda62f76c1c28 |
Hashes for xoflib-0.2.0-cp39-cp39-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70b16d18a339912fc6df5f8cf01d4f9fa14791019236d4a1a709f1390eded27d |
|
MD5 | 969ad8b9396e02966b5a8f24c1072310 |
|
BLAKE2b-256 | 686ce118f4ded9a689ff9e2b9eb1b0f5456ceb2ff4d6b879f1320b7bb5f90ea0 |
Hashes for xoflib-0.2.0-cp39-cp39-musllinux_1_2_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a42c27bfb48ac01e33875a43fcc2c084ce9a49f3009421086be3bde6e15d64b |
|
MD5 | 7f9ddc2673db20bef55252a43bcc54f5 |
|
BLAKE2b-256 | ca9121b385ec9f268961be26a575bca4b63bce5533f893bb0aac49a61d797642 |
Hashes for xoflib-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d687f730cd8818c09236897b6eefa4296bf399cf7c78c442f3044e294213b677 |
|
MD5 | 20cd8419d4a1457aa3641d891596d461 |
|
BLAKE2b-256 | 9aa58643a57b33d6c1f73f484c16c0f3edc316c69be0e43bd7a7f4ad0afdccd3 |
Hashes for xoflib-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09705b0c37f2b147899be71eeaa30b65ccc79cedcb7f9db89b02835a05136130 |
|
MD5 | 43340d148fa374c1e7e9b6ca3cd68e2f |
|
BLAKE2b-256 | b095e69d97b081f6603112cff137260e13b188d459bee00ac7cc86f0b9c9e7e1 |
Hashes for xoflib-0.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2da5ceccb2289a4da3a2407234099a2cba1f469e97871d38d16b75e6604a88cd |
|
MD5 | adfc1342e5d40aac6662e23220dd643d |
|
BLAKE2b-256 | 0a6a44abbe285105cbd6796831ee8bd27d8efdabea692fd970a8fee241505add |
Hashes for xoflib-0.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5d47da915437d5ad0ef8a4ea24bddfb549996240a73cfa974048e410427a4f9 |
|
MD5 | e5b5aed045ce9ed2d8fffba8507819ea |
|
BLAKE2b-256 | bf42f77b7944c10cba67d56f37330f1e565563e12cf056efc1445a5f3f87de30 |
Hashes for xoflib-0.2.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 601db2dca0df66ce5b9831122fb6487b7916876073644905fdbf71047415b1a3 |
|
MD5 | 2a800d0478229f6e1f5517d4923de75c |
|
BLAKE2b-256 | 209016106d5ed58398f12ee321ed801b525481f303d00816ee10619dfdaeb702 |
Hashes for xoflib-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccdbcc87657c563151b6ae48c2613a76bfc65dd8f0ff63a359cdf5dbcb89c85c |
|
MD5 | 9eb26e6007f5ee3cf4344d0a359e4bf3 |
|
BLAKE2b-256 | 7d9060454bbdc443784ee3da4ebae61f8ca2635c61488059fb26178a1f0ea07b |
Hashes for xoflib-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3a812b964bc09df02e20660e4b765239b223c69a6f3d03332286ceb1adbb289 |
|
MD5 | 8da99f6407cd8366ccc843c4189a61b9 |
|
BLAKE2b-256 | 732aa656dffd0976fb6066ea60dc5506a481d547bb05afb02470e45b5e3b72bf |
Hashes for xoflib-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87a64bc7da91b68bf9078a5b304498d5b8a6a90ced83e77cb4f7bee4b496c3c6 |
|
MD5 | 26d8cf81521d88ce44e35a9e5b09c8f5 |
|
BLAKE2b-256 | 4615639efa0c49f14f1468bfc06d8aae0a60f4f4c12fc9677863341aed9a46ac |