Drop-in ssl stdlib library using BoringSSL with first-class fingerprint impersonation.
Project description
BoringSSL-backed TLS for CPython, with Chrome impersonation
Drop-in replacement for the ssl stdlib with a Fingerprint API for Chrome
impersonation. Built on stock BoringSSL through boring-sys - no vendored
patches, no curl-impersonate, no Go runtime at import time. Use it with any
known Python http client you like or used to.
Supports CPython 3.7 onward, including freethreaded builds.
Why this exists
We sat on this for a long time, kept it private as we needed to think longer about whether the world really needed one more TLS library.
The initial thinking was: why do I have to install yet whole another
http client just because we need to look like a real browser? The
Python ecosystem already ships perfectly fine http clients - urllib3,
niquests, httpx, aiohttp - and all of them ride on top of ssl. If
the impersonation lives one layer down, in the SSL layer itself, every
one of them gets it for free. No fork of curl, no Go runtime imported
at module load, no second http client to teach your codebase, no
patched BoringSSL to maintain across CVE cycles.
That is what utls is: the ClientHello machinery, plugged in exactly where the rest of Python already plugs in.
It was private until now. Enjoy it, but with care - browser impersonation has legitimate uses (interop testing, anti-bot researches, making sure your own service still answers a real Chrome correctly) and it has illegitimate ones. The license forbids nothing; your judgment does.
Contributions are welcome. New Chrome versions are one profile module plus one registry line; platform fixes, bug reports and CI cleanups are read and merged.
Getting Started
Install from PyPI (pre-built wheels for Linux, macOS, and Windows):
pip install utls
Then swap ssl for utls anywhere in your code:
import utls as ssl
ctx = ssl.create_default_context()
Or use it alongside the stdlib:
from utls import SSLContext, PROTOCOL_TLS_CLIENT
ctx = SSLContext(PROTOCOL_TLS_CLIENT)
ctx.load_default_certs()
import socket
sock = socket.create_connection(("example.com", 443))
ssock = ctx.wrap_socket(sock, server_hostname="example.com")
ssock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
print(ssock.recv(4096).decode())
It works with asyncio out of the box:
import asyncio
import utls as ssl
async def main():
ctx = ssl.create_default_context()
reader, writer = await asyncio.open_connection("example.com", 443, ssl=ctx)
writer.write(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
await writer.drain()
print((await reader.read(4096)).decode())
writer.close()
asyncio.run(main())
Browser impersonation
import utls, socket
ctx = utls.create_default_context()
ctx.set_fingerprint("chrome:stable")
with socket.create_connection(("www.google.com", 443)) as raw:
with ctx.wrap_socket(raw, server_hostname="www.google.com") as s:
s.sendall(b"GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n")
print(s.recv(4096))
The bundled profile registry can be inspected at runtime:
from utls import Fingerprint, presets
print(presets())
# ['chrome:131', 'chrome:142', 'chrome:146', 'chrome:148', 'chrome:stable']
fp = Fingerprint.from_preset("chrome:stable")
print(fp.ja3_hash, fp.ja4_hash)
Profiles ship as plain Python modules under utls.profiles.*. utls is
Chrome-only by design. Adding a new Chrome version is one .py file
plus one registry line.
What impersonation actually rewrites
set_fingerprint controls the TLS ClientHello bytes: cipher suite list
and order, extension list and order, named groups, key shares, signature
algorithms, ALPN/ALPS payloads, GREASE placement, certificate compression,
explicit ECH GREASE or real config, and so on. Everything that goes into a
JA3 or JA4 hash, utls drives.
What it does not rewrite, because they live above TLS:
- The HTTP request line, method, path, and body.
- HTTP/2 SETTINGS frames, WINDOW_UPDATE values, HEADERS frame priority
flags, and the Akamai HTTP/2 fingerprint that some bot-detection
vendors track. Those belong to your HTTP client; pair utls with
niquestsorurllib3-futureif you need them honored end-to-end.
Carrying the canonical Chrome header set
Each profile also publishes the exact HTTP request-header set Chrome sends on a top-level navigation, in the on-the-wire insertion order. The HTTP layer is yours to drive, but the headers are right there if you want matched cosmetics:
from utls import Fingerprint
fp = Fingerprint.from_preset("chrome:stable")
for name, value in fp.http_headers.items():
print(f"{name}: {value}")
# sec-ch-ua: "Chromium";v="148", "Google Chrome";v="148", "Not/A)Brand";v="99"
# sec-ch-ua-mobile: ?0
# sec-ch-ua-platform: "Linux"
# User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...
# Accept: text/html,application/xhtml+xml,...
# ...
Request- or session-dependent headers (Host, Cookie, Referer,
Content-Length, Content-Type, plus H2 pseudo-headers) are deliberately
omitted from the dict; the HTTP client is responsible for emitting those.
For HTTP/1.1, prepend Host at position 0 to preserve Chrome's wire order.
Choosing a profile
chrome:stablealways tracks the newest Chrome major shipped in a utls release. Use this if you want to drift with Chrome without code changes.chrome:148,chrome:146,chrome:142,chrome:131pin to specific Chrome majors. Use these when reproducibility matters - e.g. a long- running scraper that should not silently change shape when utls is upgraded.
The JA4 hash is the fingerprint identity that bot-detection vendors and
TLS observatories actually index on. chrome:142 / chrome:146 /
chrome:148 share the same JA4 because they share the same TLS-layer
ClientHello (the deltas are HTTP-layer); chrome:131 differs because it
uses the legacy ALPS codepoint (0x4469 vs 0x44cd).
Why JA3 varies but JA4 stays put
Chrome 110+ permutes its TLS extension order on every connection to defeat order-based fingerprinting. utls mirrors that behavior. As a result:
- JA3 hashes the wire order verbatim, so
fp.ja3_hash(and the hash you'd compute from a live capture) shifts per connection. Use the JA3 string for diffing the extension set, not the hash for equality. - JA4 sorts extension codepoints before hashing, so
fp.ja4_hashis stable and the value that matches your live capture.
Capturing a fingerprint from a live ClientHello
If you have raw ClientHello bytes (e.g. captured via tcpdump, mitmproxy,
or a custom TLS trap), you can rebuild a Fingerprint from them and feed
it back into a context:
from utls import Fingerprint, SSLContext
raw = open("clienthello.bin", "rb").read()
fp = Fingerprint.from_capture(raw)
print(fp.ja4_hash)
ctx = SSLContext()
ctx.set_fingerprint(fp)
Captured fingerprints carry no HTTP headers (fp.http_headers == {});
they only encode the TLS layer. To round-trip a full profile, use
fp.to_dict() + Fingerprint.from_dict(...) and add http_headers
manually.
Server-side and impersonation
set_fingerprint on a server-side context raises at the Rust level. The
ClientHello is, by definition, the client's choice; a server-side
fingerprint would be meaningless on the wire. Server contexts can still
inspect the peer ClientHello for diagnostics (see the Server-side
section below).
Encrypted Client Hello (ECH)
Chrome profiles ship with ECH GREASE enabled by default, matching real
Chrome. To offer real ECH - encrypting the inner ClientHello (including
the real SNI) under the server's published HPKE config - fork a per-peer
context carrying the wire-format ECHConfigList bytes:
import utls, socket
base = utls.SSLContext()
base.load_default_certs()
base.set_fingerprint("chrome:stable")
# ECH configs are peer-specific* - each origin publishes its own in a DNS
# HTTPS RR. `set_ech_configs` is non-mutating: it returns a NEW SSLContext
# that shares the underlying SSL_CTX (and CA store) with `base` via
# SSL_CTX_up_ref, so the fork is cheap. `base` is untouched and can be
# re-forked for other peers.
ech_bytes = ... # you are responsible to get it yourself!
ctx = base.set_ech_configs(ech_bytes)
with socket.create_connection(("example.com", 443)) as raw:
ssl_sock = ctx.wrap_socket(raw, server_hostname="example.com")
ssl_sock.do_handshake()
utls does not perform the DNS HTTPS RR lookup; the caller fetches the
ech= bytes (e.g. via dnspython's HTTPS rdata). Pass None to clear
the ECH override in the fork.
Niquests or urllib3-future does ECH transparently via a custom resolver (E.g. DNS over HTTPS) No effort required.
Feature parity with stdlib
utls re-exports the public names of the ssl module that matter for client
and server code paths. The Python facade is a real subclass of
ssl.SSLContext, so isinstance(ctx, ssl.SSLContext) is true and most
downstream libraries (urllib3-future, niquests, httpx with custom
transports) accept a utls context directly.
What's different from ssl:
- TLS 1.2 is the minimum version. SSLv2, SSLv3, TLS 1.0 and TLS 1.1 are not available - BoringSSL refuses to negotiate them (No decent client out there should try < TLS 1.2).
- Hostname verification uses SAN only, never the Common Name.
compression()always returnsNone(TLS compression is disabled, as it should be - BoringSSL doesn't ship it - as anyone should).- PSK callbacks are not available - BoringSSL deleted them upstream.
- A
FingerprintAPI exists and is honored on the client side. Server-sideset_fingerprintrejects at the Rust level: the ClientHello is the client's choice, not the server's.
Server-side
Server-side TLS is supported for everything BoringSSL still exposes:
- mTLS (client certificate auth via
verify_mode=CERT_REQUIRED), - ALPN selection from a server preference list,
- SNI dispatch via
set_servername_callback, - ECDH curve restriction (
set_ecdh_curve), - Session ticket count (
set_num_tickets), set_session_id_context,- Server-side ClientHello fingerprinting (read-only diagnostics).
Things you can't have on the server side because BoringSSL doesn't have them: DTLS, FFDHE parameters, SSLv2/SSLv3, TLS compression, PSK.
urllib3-future / niquests
utls is automatically picked up if installed. enjoy.
Disclaimer
Early/Beta project. The public API is stable; we do not plan to diverge
from stdlib for the ssl-compatible subset. Not pure Python - you need
either a pre-built wheel or a build environment (Rust + cmake + ninja +
Go for BoringSSL).
MIT-licensed (see LICENSE). BoringSSL is permissively licensed;
boring-sys is Apache-2.0 - bundled into the wheel.
- FIPS mode is not on the roadmap.
- Chrome only. Firefox / Safari / Edge are unlikely. Thus, contribution are welcomed.
- PyPy is not supported.
Throughput is on par with stdlib ssl: ~343 MiB/s for bulk recv vs.
stdlib's 340 MiB/s on a loopback TLS 1.3 / AES-256-GCM connection.
(yes, it is faster than rtls!)
Contributions, bug reports and feedback are welcome.
Versioning
This project uses CalVer (YYYY.0M.0D). It aims
to be a drop-in replacement for stdlib ssl, so semantic versioning
would be misleading - pin a lower bound, not an upper bound.
Prior art
rtls- same drop-in approach over rustls. utls's MemoryBIO-first design and read-batching pass are directly inspired by it; many of the compatibility tests were ported from there.uTLS- the reference Go-language TLS fingerprinting library. The spec data encoded in our Chrome profiles is checked against uTLS's published ClientHellos.curl-impersonate- the original "browser-on-the-wire" project. utls aims to give Python the same capability without a non-native Python http client or a patched BoringSSL.
JA4 pinning
The JA4 fingerprint algorithm is pinned to FoxIO-LLC/ja4 spec revision
0.18.8. The constant is duplicated in python/utls/_fingerprint.py
(JA4_SPEC_VERSION) and crates/utls-core/src/fingerprint/ja4.rs, and a
dedicated CI job asserts they agree.
Documentation
For the ssl-compatible surface, the stdlib documentation at
https://docs.python.org/3/library/ssl.html applies almost verbatim - the
notable exceptions are listed under Feature parity with stdlib.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file utls-2026.5.28-cp314-cp314t-win_arm64.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-win_arm64.whl
- Upload date:
- Size: 982.5 kB
- Tags: CPython 3.14t, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bc2053f4bac0d74eb07d4794bd3c259ede4faa858c4d35c8445d8802c2e4225
|
|
| MD5 |
d07f211dc4c776056b7c8fd9e33deb57
|
|
| BLAKE2b-256 |
d2e0744bfd0bc446de2ef5cc8893925967b49b351f0cfae745ddbdf05aff5eaa
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-win_arm64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-win_arm64.whl -
Subject digest:
6bc2053f4bac0d74eb07d4794bd3c259ede4faa858c4d35c8445d8802c2e4225 - Sigstore transparency entry: 1652692938
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-win_amd64.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.14t, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5f4f1fad1cc36a21554a4011e0240b11b5ce910925936f1fe6ded91690b8304
|
|
| MD5 |
a920f391be2756bba29f97eede333525
|
|
| BLAKE2b-256 |
c53fb92e58cc8cd3f0ec619e56671978f209ead919e13d7445f9e11d0dd78df9
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-win_amd64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-win_amd64.whl -
Subject digest:
f5f4f1fad1cc36a21554a4011e0240b11b5ce910925936f1fe6ded91690b8304 - Sigstore transparency entry: 1652693156
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-win32.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-win32.whl
- Upload date:
- Size: 964.2 kB
- Tags: CPython 3.14t, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75ecd885b50a926fc61220e94ff0b9c33cfd9af181ddad0886abfc4bf4436acb
|
|
| MD5 |
1a09d79737f22db75c311dfad323b589
|
|
| BLAKE2b-256 |
ae1f9867a8ed925866222c9db3ba9309377df7ce7583f8391961748acb4324e6
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-win32.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-win32.whl -
Subject digest:
75ecd885b50a926fc61220e94ff0b9c33cfd9af181ddad0886abfc4bf4436acb - Sigstore transparency entry: 1652693200
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 7.9 MB
- Tags: CPython 3.14t, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ece259f424a63ca9e3baa9c8fb7653093ed5bb5272dd8abde3ee4368968bd3d
|
|
| MD5 |
75a3fb96c057c5d1953bf838bf438db1
|
|
| BLAKE2b-256 |
e7af1eb5b227cfc5defbb6bf2354a7666fac583593bb2084e6f97fbe03a5930c
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-musllinux_1_1_x86_64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-musllinux_1_1_x86_64.whl -
Subject digest:
6ece259f424a63ca9e3baa9c8fb7653093ed5bb5272dd8abde3ee4368968bd3d - Sigstore transparency entry: 1652693039
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-musllinux_1_1_armv7l.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-musllinux_1_1_armv7l.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.14t, musllinux: musl 1.1+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dcba91428a970d957a4c40f8fc675d25ca82456b0bf106fc66dc75fbef3c3c0
|
|
| MD5 |
27bebb43ddf6b3647779905ab8aea2cb
|
|
| BLAKE2b-256 |
15824c912b3d156fe640b1a7ab242933e898014ab107c799cc7a776f65b516d9
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-musllinux_1_1_armv7l.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-musllinux_1_1_armv7l.whl -
Subject digest:
0dcba91428a970d957a4c40f8fc675d25ca82456b0bf106fc66dc75fbef3c3c0 - Sigstore transparency entry: 1652693226
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-musllinux_1_1_aarch64.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-musllinux_1_1_aarch64.whl
- Upload date:
- Size: 7.5 MB
- Tags: CPython 3.14t, musllinux: musl 1.1+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bbd2b7d4feed42f587c18752a612fcd50cc58f90c7c0fdc729f0d7625acfd04
|
|
| MD5 |
c53a1dfca601e09d0f23470395a6af41
|
|
| BLAKE2b-256 |
6cc0b0f58f20fe2aab849348d205753e6c3ecef810e9fcfcae921d278afbf676
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-musllinux_1_1_aarch64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-musllinux_1_1_aarch64.whl -
Subject digest:
2bbd2b7d4feed42f587c18752a612fcd50cc58f90c7c0fdc729f0d7625acfd04 - Sigstore transparency entry: 1652692955
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55945956b0f4efeb5538ef9d0a1ee803d8903f0e8ffcbd2ca8393ef0a3aa58eb
|
|
| MD5 |
0f38c48c8e8ee825282194d15152bd75
|
|
| BLAKE2b-256 |
569810bff17fedfbb7ff137ae1264270db10521e2ccc2a0e56438114e4a740b0
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-manylinux_2_28_aarch64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-manylinux_2_28_aarch64.whl -
Subject digest:
55945956b0f4efeb5538ef9d0a1ee803d8903f0e8ffcbd2ca8393ef0a3aa58eb - Sigstore transparency entry: 1652692895
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19eabccc7b3c164af48a6cbcd6c8932c29b7ded8606210201f5b3dd36b7955b0
|
|
| MD5 |
6c9643fa2953af74d548ac2f2ae1d702
|
|
| BLAKE2b-256 |
29b9ffea0e5514b9bd5d866f32ea123d9cff5d1c8fb1a45aa93a88c07bf1781e
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
19eabccc7b3c164af48a6cbcd6c8932c29b7ded8606210201f5b3dd36b7955b0 - Sigstore transparency entry: 1652692875
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp314-cp314t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.
File metadata
- Download URL: utls-2026.5.28-cp314-cp314t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.14t, macOS 10.15+ universal2 (ARM64, x86-64), macOS 10.15+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aca89c277d81bcc8d759310f5fb1a154b232f773b3b3094470b5d3f7528a3778
|
|
| MD5 |
1f07583685895487073ec72bda159663
|
|
| BLAKE2b-256 |
cc1bf6cfea9d7173c104c5dd93fb0f3c03ace037512136ef1925b3828e22e036
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp314-cp314t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp314-cp314t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl -
Subject digest:
aca89c277d81bcc8d759310f5fb1a154b232f773b3b3094470b5d3f7528a3778 - Sigstore transparency entry: 1652692921
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-win_arm64.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-win_arm64.whl
- Upload date:
- Size: 985.3 kB
- Tags: CPython 3.13t, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77f30de59fb7129b548f58b630bdb02bf984583b49ad97fdc8a144c8da24e47e
|
|
| MD5 |
d04a6c5e38d46288abe3fb2528135d30
|
|
| BLAKE2b-256 |
e3fbc1da737deae9dee39aafbff081553b0e1ee26177a53b8bcdf0e33ec1b8f0
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-win_arm64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-win_arm64.whl -
Subject digest:
77f30de59fb7129b548f58b630bdb02bf984583b49ad97fdc8a144c8da24e47e - Sigstore transparency entry: 1652692911
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-win_amd64.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.13t, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00b57f70c9dd30f731b726819b75180665d1a7974d25743fa22c1ee3d63d258b
|
|
| MD5 |
30e2b9de156b0358d02e9f4dccc16778
|
|
| BLAKE2b-256 |
4d5e7cb27e19c763a2760d947d680862413ef196939aaf77a8612048fc1198f2
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-win_amd64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-win_amd64.whl -
Subject digest:
00b57f70c9dd30f731b726819b75180665d1a7974d25743fa22c1ee3d63d258b - Sigstore transparency entry: 1652692927
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-win32.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-win32.whl
- Upload date:
- Size: 963.7 kB
- Tags: CPython 3.13t, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
893a612f588c682713fd65a6788fae9b541410a7b87dd074e273c7fb5e01a4ce
|
|
| MD5 |
832f7f3d29ecf9f1dabecc916bd5b749
|
|
| BLAKE2b-256 |
70aefaaa648e5011126297e39f22a4a1b4ed0fb82d88c690575e23b3dcda700a
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-win32.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-win32.whl -
Subject digest:
893a612f588c682713fd65a6788fae9b541410a7b87dd074e273c7fb5e01a4ce - Sigstore transparency entry: 1652693052
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 7.9 MB
- Tags: CPython 3.13t, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d66e3b47db03ce12b4a89e3caaf157e9ee1c1dfa6f0b94b73d919882ec6d051
|
|
| MD5 |
b345ff050b53983bc1a3ba8cfaca08ca
|
|
| BLAKE2b-256 |
17f81e9aed6a0af2c49f5fdad0856fddca7ee09dcb27965f98eb084e33afdd30
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-musllinux_1_1_x86_64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-musllinux_1_1_x86_64.whl -
Subject digest:
0d66e3b47db03ce12b4a89e3caaf157e9ee1c1dfa6f0b94b73d919882ec6d051 - Sigstore transparency entry: 1652693135
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-musllinux_1_1_armv7l.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-musllinux_1_1_armv7l.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.13t, musllinux: musl 1.1+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bee585bc2c93cbf2bf4322b02ac071734e7021efd772e669f6d2271d87c33746
|
|
| MD5 |
47eafd07260ed85fa2445b65587d4cdb
|
|
| BLAKE2b-256 |
56b209384e7dd88e42b60ac9db54399c6ab78b265eb227f822869b6415cd76e9
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-musllinux_1_1_armv7l.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-musllinux_1_1_armv7l.whl -
Subject digest:
bee585bc2c93cbf2bf4322b02ac071734e7021efd772e669f6d2271d87c33746 - Sigstore transparency entry: 1652693116
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-musllinux_1_1_aarch64.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-musllinux_1_1_aarch64.whl
- Upload date:
- Size: 7.5 MB
- Tags: CPython 3.13t, musllinux: musl 1.1+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e59024c8c018ab35b11a4ce619cd23604ef49d4f8624228d33503d72119667ec
|
|
| MD5 |
a3d7be23847ebea39d0801c287871fb1
|
|
| BLAKE2b-256 |
6b3cabf2aa8282e30f511c3d4ac602e9c73e0c5f72d4fbb1bd6ce70fe8a48eda
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-musllinux_1_1_aarch64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-musllinux_1_1_aarch64.whl -
Subject digest:
e59024c8c018ab35b11a4ce619cd23604ef49d4f8624228d33503d72119667ec - Sigstore transparency entry: 1652693069
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.13t, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b82a5895961b05b63fa84c98b3f2d5969e0db66e3e7ede6233f9d71de8baf03
|
|
| MD5 |
127882f0671a8af5909aaf1bdd750d63
|
|
| BLAKE2b-256 |
a9e1f36164974e6610199513154b3434452884de63817a792aa37120ffde6aca
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-manylinux_2_28_aarch64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-manylinux_2_28_aarch64.whl -
Subject digest:
5b82a5895961b05b63fa84c98b3f2d5969e0db66e3e7ede6233f9d71de8baf03 - Sigstore transparency entry: 1652693216
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.13t, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8644ba6f2a7436098d7292ab7a42d4db855f21641d523a7c918cde80279f4cf
|
|
| MD5 |
7cc4b60a899480034bde7d6cb1d6cfd1
|
|
| BLAKE2b-256 |
c6bdc5d448685fc2eec723bfc5e032337e194174d44ce4e23155593d7139d37a
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
d8644ba6f2a7436098d7292ab7a42d4db855f21641d523a7c918cde80279f4cf - Sigstore transparency entry: 1652692982
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp313-cp313t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.
File metadata
- Download URL: utls-2026.5.28-cp313-cp313t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.13t, macOS 10.15+ universal2 (ARM64, x86-64), macOS 10.15+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d60a5b30ec374899141dc47764a926601fc8e851efdbc4979a596b306dabd84
|
|
| MD5 |
157ec8d4c52b9658c8014dce7d9fec81
|
|
| BLAKE2b-256 |
ece0283023081dccec5d2ea3b9f5fb5392c21ea258e994c77050afa49cbb63c6
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp313-cp313t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp313-cp313t-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl -
Subject digest:
8d60a5b30ec374899141dc47764a926601fc8e851efdbc4979a596b306dabd84 - Sigstore transparency entry: 1652693143
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-win_arm64.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-win_arm64.whl
- Upload date:
- Size: 987.7 kB
- Tags: CPython 3.7+, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b481692a15548adf2807c583da1446bd20362a50ef87cb70559c4d7d2a28300
|
|
| MD5 |
62218e29ea19b8a4b454b4a4268b4936
|
|
| BLAKE2b-256 |
b89d81cd8b5a108f42b7064fa8e0ee169e5bef813a662170a31bb8d586a0a655
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-win_arm64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-win_arm64.whl -
Subject digest:
4b481692a15548adf2807c583da1446bd20362a50ef87cb70559c4d7d2a28300 - Sigstore transparency entry: 1652693164
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-win_amd64.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.7+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82a718f22d7af469b938fc9c0ec6a7bd24d2d465262203b4d44874703984c526
|
|
| MD5 |
721fb6d90b339a5b4ee32cb560d4aa21
|
|
| BLAKE2b-256 |
7380304adab91e4e018d01fbb1e50a2333c87ee5c569b8de78619cf288db78d8
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-win_amd64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-win_amd64.whl -
Subject digest:
82a718f22d7af469b938fc9c0ec6a7bd24d2d465262203b4d44874703984c526 - Sigstore transparency entry: 1652693192
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-win32.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-win32.whl
- Upload date:
- Size: 969.1 kB
- Tags: CPython 3.7+, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3634479995302420b0559831a694ea73ee527c61f21abb84ecdd33b0b8e7800a
|
|
| MD5 |
da42ab3fc609cc9c9c42f7e7dfb06df9
|
|
| BLAKE2b-256 |
7d5e4b31a92e7bbbc425a44ebbeed379ab71d77099f83b34044ad6cfe5044237
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-win32.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-win32.whl -
Subject digest:
3634479995302420b0559831a694ea73ee527c61f21abb84ecdd33b0b8e7800a - Sigstore transparency entry: 1652693077
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 7.9 MB
- Tags: CPython 3.7+, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
feed2bbd03c74d8d69dcc68ec6e205afc0e2e1c1796607fa7f6a75ea1c969e8c
|
|
| MD5 |
282b866fbb097e85f22e04888052b49c
|
|
| BLAKE2b-256 |
a78ca6a520923436516a1870610eefb899d14ad263c2a24cb44d8d7cfddc77c5
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-musllinux_1_1_x86_64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-musllinux_1_1_x86_64.whl -
Subject digest:
feed2bbd03c74d8d69dcc68ec6e205afc0e2e1c1796607fa7f6a75ea1c969e8c - Sigstore transparency entry: 1652693002
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-musllinux_1_1_armv7l.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-musllinux_1_1_armv7l.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.7+, musllinux: musl 1.1+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe72026373775cd1458be041b39d252123e5015189c171b8ce2afcd2bb270cac
|
|
| MD5 |
1f79e32dfb6396b30becd8a42bd47d9b
|
|
| BLAKE2b-256 |
fdbf9e43ba1d46341213265c8ff89c6cb12ba9b752aee049ffae2127437b25de
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-musllinux_1_1_armv7l.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-musllinux_1_1_armv7l.whl -
Subject digest:
fe72026373775cd1458be041b39d252123e5015189c171b8ce2afcd2bb270cac - Sigstore transparency entry: 1652693129
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-musllinux_1_1_aarch64.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-musllinux_1_1_aarch64.whl
- Upload date:
- Size: 7.6 MB
- Tags: CPython 3.7+, musllinux: musl 1.1+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83416b6ee46b7259928b300190cee5ad915ec626f67ebc8ca77493adda0e62f7
|
|
| MD5 |
874d870eacff0e4e94f8f0b19a7b0458
|
|
| BLAKE2b-256 |
53974fd3fa7cc680aa7d6ae45920582ddb141afab1b9ab849fc0973f04c2a6ce
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-musllinux_1_1_aarch64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-musllinux_1_1_aarch64.whl -
Subject digest:
83416b6ee46b7259928b300190cee5ad915ec626f67ebc8ca77493adda0e62f7 - Sigstore transparency entry: 1652693018
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.7+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5a48070d0008ad1e2031be00a9e8f782a949f9b0e32946a7a797521d93b5526
|
|
| MD5 |
2ccc5cd4a9c80ad3b91aed70d73cc8b9
|
|
| BLAKE2b-256 |
13c9e258fce043a53ee17ea1efeb884fdd9f9e1985846a2168bf8692f804a5a9
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-manylinux_2_28_aarch64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
f5a48070d0008ad1e2031be00a9e8f782a949f9b0e32946a7a797521d93b5526 - Sigstore transparency entry: 1652693177
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
555c14e8d57ae9a4ea28658e135682700e3058a05043e574a90adcd06ebee74a
|
|
| MD5 |
04aadd7d47584eb24dc48c2c2e50bcf0
|
|
| BLAKE2b-256 |
5e092a14e91963e51798352e024d1af722313f9faff6851816dfaeecd09a0b55
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
555c14e8d57ae9a4ea28658e135682700e3058a05043e574a90adcd06ebee74a - Sigstore transparency entry: 1652693098
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type:
File details
Details for the file utls-2026.5.28-cp37-abi3-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.
File metadata
- Download URL: utls-2026.5.28-cp37-abi3-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.7+, macOS 10.15+ universal2 (ARM64, x86-64), macOS 10.15+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab285e942209466891001d222a5a7680fd8963ec834dfdaa701392efda67948e
|
|
| MD5 |
d7da792a53791b484fd2c9d86179df35
|
|
| BLAKE2b-256 |
9c4a3dad617f082e7be966076a70187d31d3f51ad3d97e0bb62e6acb38b429a5
|
Provenance
The following attestation bundles were made for utls-2026.5.28-cp37-abi3-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl:
Publisher:
CI.yml on jawah/utls
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
utls-2026.5.28-cp37-abi3-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl -
Subject digest:
ab285e942209466891001d222a5a7680fd8963ec834dfdaa701392efda67948e - Sigstore transparency entry: 1652693210
- Sigstore integration time:
-
Permalink:
jawah/utls@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Branch / Tag:
refs/tags/2026.5.28 - Owner: https://github.com/jawah
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@e9233d9e14fe4689b784122c8d5ef882f862e492 -
Trigger Event:
push
-
Statement type: