Skip to main content

gmssl_pyx

image image image Actions status

python wrapper (C extension) of GmSSL

使用的版本是 GmSSL-3.2.0

安装

pip install gmssl-pyx

SM2

加密和解密

from gmssl_pyx import sm2_key_generate, sm2_encrypt, sm2_decrypt


# 生成 SM2 公私钥
public_key, private_key = sm2_key_generate()
# 加密
plaintext = b"hello world"
ciphertext = sm2_encrypt(public_key, plaintext)
print("ciphertext", ciphertext)
# 解密
plaintext = sm2_decrypt(private_key, ciphertext)
print("plaintext", plaintext)

签名和验签

from gmssl_pyx import sm2_key_generate, sm2_sign, sm2_verify


# 生成 SM2 公私钥
public_key, private_key = sm2_key_generate()

# 没有 signer_id 和 SM3 杂凑值 z
# 签名
message = b"hello world"
signature = sm2_sign(private_key, public_key, message, signer_id=None)
print("signature", signature)
# 验证签名
verify = sm2_verify(public_key, message, signature, signer_id=None)
print("verify", verify)

# 默认 signer_id 和 SM3 杂凑值 z
signature = sm2_sign(private_key, public_key, message)
print("signature", signature)
# 验证签名
verify = sm2_verify(public_key, message, signature)
print("verify", verify)

# 自定义 signer_id 和 SM3 杂凑值 z
signer_id = b"signer_id"
signature = sm2_sign(private_key, public_key, message, signer_id=signer_id)
print("signature", signature)
# 验证签名
verify = sm2_verify(public_key, message, signature, signer_id=signer_id)
print("verify", verify)

ASN.1 DER 编码

加密和签名的结果都是 ASN.1 DER 编码,如果要得到原始的密文和签名,可以参考下面的例子

需要安装 pycryptodomex 库

pip install pycryptodomex
from Cryptodome.Util.asn1 import DerSequence, DerOctetString, DerInteger
from gmssl_pyx import sm2_key_generate, sm2_encrypt, sm2_decrypt, sm2_sign, sm2_verify


# 生成 SM2 公私钥
public_key, private_key = sm2_key_generate()
# 加密
plaintext = b"hello world"
ciphertext = sm2_encrypt(public_key, plaintext)
print("ciphertext", ciphertext)
seq_der = DerSequence()
decoded_ciphertext = seq_der.decode(ciphertext)
# ASN.1 DER 解码
# c1: point(x, y) 64bytes
# c2: ciphertext len(data)
# c3: hash 32bytes
# der order: c1x c1y hash ciphertext
c1x = decoded_ciphertext[0]
c1y = decoded_ciphertext[1]
c3 = DerOctetString().decode(decoded_ciphertext[2]).payload
c2 = DerOctetString().decode(decoded_ciphertext[3]).payload
# 模式为 C1C3C2
raw_ciphertext = c1x.to_bytes(32, "big") + c1y.to_bytes(32, "big") + c3 + c2

# 如果需要解密原始密文,需要先进行 ASN.1 DER 编码
seq_der = DerSequence()
c1x = raw_ciphertext[:32]
x = DerInteger(int.from_bytes(c1x, byteorder='big'))
seq_der.append(x)
c1y = raw_ciphertext[32:64]
y = DerInteger(int.from_bytes(c1y, byteorder='big'))
seq_der.append(y)
c3 = raw_ciphertext[64:64 + 32]
seq_der.append(DerOctetString(c3))
c2 = raw_ciphertext[64 +32:]
seq_der.append(DerOctetString(c2))
ciphertext = seq_der.encode()
plaintext = sm2_decrypt(private_key, ciphertext)
print("plaintext", plaintext)

# 签名
message = b"This is a message"
signature = sm2_sign(private_key, public_key, message)
seq_der = DerSequence()
decoded_sign = seq_der.decode(signature)
# ASN.1 DER 解码,两个 32 字节的整数
r = decoded_sign[0]
s = decoded_sign[1]
print('r', r)
print('s', s)
raw_signature = '%064x%064x' % (r, s)

# 验证原始签名同样需要先进行 ASN.1 DER 编码
r = int(raw_signature[:64], base=16)
s = int(raw_signature[64:], base=16)
seq_der = DerSequence()
seq_der.append(DerInteger(r))
seq_der.append(DerInteger(s))
signature = seq_der.encode()
verify = sm2_verify(public_key, message, signature)
print('verify', verify)

公私钥的一些补充说明

公钥长度为 64 字节,是两个 32 字节的整数 x y 拼接而成。

如果公钥长度为 65 字节,那么第一个字节为 '\x04' ,表示后面的 64 字节就是公钥。

如果公钥长度为 33 字节,那么第一个字节为 '\x02' 或者 '\x03' , 这是一种压缩格式,后面的 32 字节为整数 x , y 可以根据 x 计算出来。

私钥长度为 32 字节,没有其他变化。

from gmssl_pyx import sm2_key_generate, normalize_sm2_public_key


raw_public_key, _ = sm2_key_generate()
k1 = normalize_sm2_public_key(raw_public_key)
assert k1 == raw_public_key
k1 = normalize_sm2_public_key(b'\x04' + raw_public_key)
assert k1 == raw_public_key

# 压缩版公钥
y = int.from_bytes(raw_public_key[32:], byteorder='big')
if y % 2 == 0:
    # y 是偶数
    compressed_public_key = b'\x02' +raw_public_key[:32]
else:
    compressed_public_key = b'\x03' + raw_public_key[:32]
k1 = normalize_sm2_public_key(compressed_public_key)
assert k1 == raw_public_key

SM3

hash 计算

from gmssl_pyx import sm3_hash


message = b'hello world'
signature = sm3_hash(message)
print('message', message)
print('signature', signature.hex())

hmac 计算

import secrets
from gmssl_pyx import sm3_hmac


key = secrets.token_bytes(32)
message = b"sm3_hmac"
hmac_data = sm3_hmac(key, message)
print("message", message)
print("hmac_data", hmac_data)

kdf 计算

import secrets
from gmssl_pyx import sm3_kdf


key = secrets.token_bytes(32)
new_key = sm3_kdf(key, 32)
print('kdf new_key', new_key)

SM4

CBC 模式加密和解密

import secrets
from gmssl_pyx import (
    sm4_cbc_padding_encrypt,
    sm4_cbc_padding_decrypt,
    SM4_KEY_SIZE,
    SM4_BLOCK_SIZE,
)


key = secrets.token_bytes(SM4_KEY_SIZE)
iv = secrets.token_bytes(SM4_BLOCK_SIZE)
plaintext = b"hello world"
# 加密
ciphertext = sm4_cbc_padding_encrypt(key, iv, plaintext)
print("ciphertext", ciphertext.hex())

# 解密
decrypted = sm4_cbc_padding_decrypt(key, iv, ciphertext)
print("decrypted", decrypted)

CTR 模式加密和解密

import secrets
from gmssl_pyx import (
    sm4_ctr_encrypt,
    sm4_ctr_decrypt,
    SM4_KEY_SIZE,
    SM4_BLOCK_SIZE,
)


key = secrets.token_bytes(SM4_KEY_SIZE)
ctr = secrets.token_bytes(SM4_BLOCK_SIZE)
plaintext = b"hello world"
# 加密
ciphertext = sm4_ctr_encrypt(key, ctr, plaintext)
print("ciphertext", ciphertext.hex())

# 解密
decrypted = sm4_ctr_decrypt(key, ctr, ciphertext)
print("decrypted", decrypted)

GCM 模式加密和解密

import secrets
from gmssl_pyx import sm4_gcm_encrypt, sm4_gcm_decrypt, SM4_KEY_SIZE, SM4_BLOCK_SIZE


plaintext = b'hello world'
key = secrets.token_bytes(SM4_KEY_SIZE)
iv = secrets.token_bytes(SM4_BLOCK_SIZE)
aad = secrets.token_bytes(16)
# 加密
ciphertext, tag = sm4_gcm_encrypt(key, iv, aad, plaintext=plaintext)
print('ciphertext', ciphertext)

# 解密
plaintext = sm4_gcm_decrypt(key, iv=iv, aad=aad, ciphertext=ciphertext, tag=tag)
print('plaintext', plaintext)

其他

SM9

如果要查看所有可用的 API ,可以看 gmsslext.pyi 文件。

注意

GmSSL v3.2.0 修改了 SM9 PEM 文件头(即 BEGIN 与 END 行中的标识字符串),变更如下:

"ENCRYPTED SM9 ENC MASTER KEY" => "ENCRYPTED PRIVATE KEY"

"ENCRYPTED SM9 ENC PRIVATE KEY" => "ENCRYPTED PRIVATE KEY"

Metadata

Release files for gmssl-pyx 2.1.0

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

Source distribution (sdist)

Source distribution for gmssl-pyx 2.1.0
File Size Uploaded
gmssl_pyx-2.1.0.tar.gz 30.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for gmssl-pyx 2.1.0
File
gmssl_pyx-2.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
gmssl_pyx-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
gmssl_pyx-2.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gmssl_pyx-2.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
gmssl_pyx-2.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gmssl_pyx-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
gmssl_pyx-2.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gmssl_pyx-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
gmssl_pyx-2.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
gmssl_pyx-2.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
gmssl_pyx-2.1.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
gmssl_pyx-2.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
gmssl_pyx-2.1.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
gmssl_pyx-2.1.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
gmssl_pyx-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details

Total release size: 9.9 MB

Release files / gmssl_pyx-2.1.0.tar.gz

Download URL gmssl_pyx-2.1.0.tar.gz
Size 30.0 kB
Tags Source
SHA-256 checksum
How to use checksums
260a2492f58d9fda2430034deae56766553c4cc18f4f0ee4bdb627061d033779
BLAKE2b-256 checksum
How to use checksums
6282e5005ba3e3eeaaa6866eb075a0090e9d56e7c086296df83f4f646ec14ceb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp314-cp314-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp314-cp314-win_amd64.whl
Size 453.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
8b4b701d6755e9183823003fd63c5520b05b53bf84678025b418ea61e6a7bf67
BLAKE2b-256 checksum
How to use checksums
fb7dc92aa8e51f2f7b5ef85fa96648c8f1fefd5e9c7f33888771b92c88b51a13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 497.5 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e56d3591541bb4024546e1d026476946e5e11830ce8019c40dcfd83843b7053c
BLAKE2b-256 checksum
How to use checksums
e3774306f3865ed61b5910d40f894d737dcdd3f5a92d8cc366fbcab84969aa76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 456.3 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
451935e408e4fa2d2efa80e7403f2ecc7a972ae029992ff36606b54a6b581890
BLAKE2b-256 checksum
How to use checksums
44f726391152261ab727e60558d738b7961ed237db03041847238c4d2401d6f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp313-cp313-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp313-cp313-win_amd64.whl
Size 449.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4357ded2e9971b6b83c9816a8e61063c2e0c3f6321794bc35fdefcdfab9b0113
BLAKE2b-256 checksum
How to use checksums
7d3892038fa0da648ee6508ac1b4fcf3aba6bc006962269c30a6460c3f356e5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 497.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
38bfb640ee6b8fb3f4cfc9fe53fa490bc3d9b0faddf513b1b549012e1b67ecc2
BLAKE2b-256 checksum
How to use checksums
996fff4f91ae92ea7517fcbba1a28a3f0a4c3785944afc99c4c892a3f2732abe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 456.2 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
66959310ca9b21dbc9bd84c2e4db2b21ad06c10ac6e00c5461b161a5cb7c307f
BLAKE2b-256 checksum
How to use checksums
78d99fd22dcb4c8c3a2dcc56f5bb0490767453695b84f8a2197da81acf1c4f94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp312-cp312-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp312-cp312-win_amd64.whl
Size 449.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
59dd73f361bc1749d234ecb618053348bdf6ff8025f0b1dbc1292ad98778757d
BLAKE2b-256 checksum
How to use checksums
ec0459ffa77e08ee21b0e55f396b84b02239dea0d265fcf060960512c7dee71a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 497.5 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4e64aa133db215ff5d18ae5a067e400a2f4a8c09eb9852e05fa1adf2e9b20a29
BLAKE2b-256 checksum
How to use checksums
4533f29f194d91bd247e2ebeb89681d34f5001421b365199596ae4c572c7c887
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 456.2 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
57d966ed66eb09ce97fb04e9c19fca9735feecf3d94c4497d4964b91187ee541
BLAKE2b-256 checksum
How to use checksums
fbc2206c88cddf318491a84c502a731568a85e3efa174a2e0838012a38b8e77c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp311-cp311-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp311-cp311-win_amd64.whl
Size 449.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
6d0d6ee69af3dceab2beb20005d2b5e40ce07555eb97e63afac7d98d8f53d20c
BLAKE2b-256 checksum
How to use checksums
1b9cec1418373636e2139c22d8a29d001962e705ffe75798eeb1f0d615e4fcc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 496.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
16321bdc810450617f26959a0d6241eda0215b03e68f7c9ac4603873c5d7e2f4
BLAKE2b-256 checksum
How to use checksums
5305943699d0a267f29e9b0682b6f0eacf19ec1f64ab720ef30cddaf0d099b55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 456.0 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
68c3522e4d0cc45eb97aa469616478280b9a6226227367829d65f080e6e2beff
BLAKE2b-256 checksum
How to use checksums
75e63f2e7163cf1fe662f567e9224b469e445ef15e035644e9bc3b5c2bf21c96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp310-cp310-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp310-cp310-win_amd64.whl
Size 449.6 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
cd152c2f07703279b2d316076cd42eabdf49d6eeb60f69b1af77e8b2a3452c00
BLAKE2b-256 checksum
How to use checksums
85bf8160c73d47a6afeb8ce4fdce237baa8486efbb368e901f1e9a7fef60e5f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 496.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dc396fdbf7fffcd66cb9077567c4227cae54c118b32992bc388a570875d68a75
BLAKE2b-256 checksum
How to use checksums
d085d2a96ec561360f658e8a6ea5bb6a71947c0f6e779cb2d89218dace87f981
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 456.0 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
5d6381f9b5a04303074534724770528cc9cea5b27d0312630c311b085bb5a1c7
BLAKE2b-256 checksum
How to use checksums
113d20a5c78dda97f0cbf1a0c493a150b4c0681a6e98b4bf84da81a508486d98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp39-cp39-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp39-cp39-win_amd64.whl
Size 449.7 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
57c42275e675738ab9ef1c98afb2db0921b1b81fcba7a0c1fe056efc8150d374
BLAKE2b-256 checksum
How to use checksums
0df363d937425be5b3369a0dec2094f3e414f0c7b0b8735295d34703c786939f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 496.1 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4a24f427b30a034d0cc453ad00c780377d38eb3cb64e625fe478cbce2ce076b2
BLAKE2b-256 checksum
How to use checksums
9e9fee0322a0b4b917cc179c05e86352e1584da1c488910ecd19e762513e5c39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Size 456.0 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
89758c07b4a6460f9ade85a2da372e9acbb3b4e946033305afb3f23f804cb6f1
BLAKE2b-256 checksum
How to use checksums
b98137b7285ded69678446ff96b8d2bb642c3f7c6553b581f819216f4d63449a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp38-cp38-win_amd64.whl

Download URL gmssl_pyx-2.1.0-cp38-cp38-win_amd64.whl
Size 451.4 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
c8f4cf69085ed142a4c37a9d856370d7048155cc7898d96e70dca0f36cc1aaf9
BLAKE2b-256 checksum
How to use checksums
db9b11c36b881277034ad43c8aeaf1a6253096e7243fcf8b7d8cdad718e492e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 495.9 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
64b52a9cfa1c5c357990a19bd7c955fde515b0bbe42efd88089f2481e373553b
BLAKE2b-256 checksum
How to use checksums
51d0ae5dea9450e9e12d429080523b7ccf297c1bc852512593b32c2b2a224948
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / gmssl_pyx-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl

Download URL gmssl_pyx-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Size 455.8 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
a091eb9a0712ac78fdd2a5f87e8759230fb3073195ff88d2cbaa34ac5ee04706
BLAKE2b-256 checksum
How to use checksums
8fe0ea33b4779ce1f3317491d7436829d24b78786ca76bda7d2b756ab0c028c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

2.1.0 This release

22 release files

2.0.1

22 release files

2.0.0

13 release files

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