gmssl_pyx
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)
其他
如果要查看所有可用的 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)
| File | Size | Uploaded | |
|---|---|---|---|
| gmssl_pyx-2.1.0.tar.gz | 30.0 kB | Details |
Built distributions (wheels)
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
|