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 | Provenance | Actions |
|---|---|---|---|---|
| gmssl_pyx-2.1.0.tar.gz | 30.0 kB | Without provenance | Details for gmssl_pyx-2.1.0.tar.gz |
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
|
Security for gmssl-pyx 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.