Skip to main content

python wrapper of GmSSL

Project description

gmssl_pyx

image image image Actions status

python wrapper (C extension) of GmSSL

使用的版本是 GmSSL-3.1.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 文件。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmssl_pyx-2.0.1.tar.gz (26.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gmssl_pyx-2.0.1-cp314-cp314-win_amd64.whl (142.0 kB view details)

Uploaded CPython 3.14Windows x86-64

gmssl_pyx-2.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (172.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp314-cp314-macosx_10_15_x86_64.whl (120.9 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gmssl_pyx-2.0.1-cp313-cp313-win_amd64.whl (139.2 kB view details)

Uploaded CPython 3.13Windows x86-64

gmssl_pyx-2.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (172.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp313-cp313-macosx_10_13_x86_64.whl (120.8 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

gmssl_pyx-2.0.1-cp312-cp312-win_amd64.whl (139.2 kB view details)

Uploaded CPython 3.12Windows x86-64

gmssl_pyx-2.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (172.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp312-cp312-macosx_10_13_x86_64.whl (120.8 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

gmssl_pyx-2.0.1-cp311-cp311-win_amd64.whl (139.1 kB view details)

Uploaded CPython 3.11Windows x86-64

gmssl_pyx-2.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (172.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl (120.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

gmssl_pyx-2.0.1-cp310-cp310-win_amd64.whl (139.1 kB view details)

Uploaded CPython 3.10Windows x86-64

gmssl_pyx-2.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (171.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl (120.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

gmssl_pyx-2.0.1-cp39-cp39-win_amd64.whl (139.1 kB view details)

Uploaded CPython 3.9Windows x86-64

gmssl_pyx-2.0.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (171.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl (120.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

gmssl_pyx-2.0.1-cp38-cp38-win_amd64.whl (139.0 kB view details)

Uploaded CPython 3.8Windows x86-64

gmssl_pyx-2.0.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (171.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

gmssl_pyx-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl (120.4 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file gmssl_pyx-2.0.1.tar.gz.

File metadata

  • Download URL: gmssl_pyx-2.0.1.tar.gz
  • Upload date:
  • Size: 26.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1.tar.gz
Algorithm Hash digest
SHA256 5e51e7cea7c57f36a16488bca7314fc2b7715f4e8ba5ee4a52f816a3c9334368
MD5 9a83b354c529e518bac6745c08e92031
BLAKE2b-256 5eaf715c60b0f47119ad2420d4ec47d3ffc929e7339c81385a1dc3e8c5571c2e

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 142.0 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 39f2f63efd6fe71dc6f7f107b2530ff217fe49c4a93013b1173b7928244d5c61
MD5 3ae56c59efa24826cf0306bcbb017c9a
BLAKE2b-256 d7450b2e691a5e5a1adfa25a3b71e76d942db23ea8450086b683319e058fd27a

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f0d80f9e78aabfa7f17e070d25427ca7465f8bcdd37fa098a2f81d9c222ce941
MD5 46debdb6e1335a24b839a8c6e48ebf71
BLAKE2b-256 6b67be2f1e4b808fc752570a917d97fb2edf97723f02e0e7a36ad5b8d27dd24d

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9fe9f2bd007d26ce2f174c52349ebb09736f539576999226adaf45dfb55cebcc
MD5 204373a573fd7edfb36b14f78c7a7193
BLAKE2b-256 e36a145c20fc4f400c10fff454f05eb78a106bf6b9be4950339735f6aac08f06

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 139.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6a424a193953e575e4bfa8801d4993f3468d6deae03d5e2736a9710f848b3b5b
MD5 fa50ca3c85e7b72667970465bcfbd606
BLAKE2b-256 d5b225cac0ecd35c5f522ca72774f40cb2397e74b5d166871f32c92e8b2ec003

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b893c9d3c10c7caf3a39c14a903539cb2006632b4f8038aa72a8438fabe98ae9
MD5 6ca1a007ed240bd5b198b4a6e9a60f7a
BLAKE2b-256 3312178608b3a3c9071e7251f12b948f910eb107d9ea413a50ee430b48a553ef

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 fde2d49b892c41dbc9a1a341e0d77e338e12b0e1da2575d5715a1b4f5d86106e
MD5 d925c83f4242f067f8799f272e15d658
BLAKE2b-256 99a50a40ff490279c97e72ed890ea38d25ac4107e9aadc0d513c3bab07e342a4

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 139.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8d4ea9208ffbba1642cdb7f9bb3206b6bbcc2358ce6d9a1059c57257f925b045
MD5 74ac66dedde875140680c7323a97e6d7
BLAKE2b-256 1b46019d03a2d68a62a5db03e4811cac6e9dd42f1845ee16a15232a0ef99da73

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3a05da1ac02830949686a33c8690def61aaa9f556bb7785af3f9230a27bc5293
MD5 9323aae1860e79432bf1ea4d2fb27adc
BLAKE2b-256 d90abe4a95ed1526da9a8120d39aa3b573145edf7be4f3ca91ab2a6351824603

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d8132b990befeda85498dba220f388baa721165bd1dfc1d644a230a479634ea1
MD5 e7f5846ebf7ce13a3fa3843c323ae2f1
BLAKE2b-256 b13b9aea6f8ce3d2cc951e74de7dc945b9ef68c7387b06f0a4827f519770bd69

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 139.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 52db3923201cbb9a51f228af9eac24d81dbc09551999c98858058fdb2df249ad
MD5 bce00783e12bde7ad0cf4a9ad9fc46a8
BLAKE2b-256 06600aa7c4dd7f1b2b47014e921ae9a32894d4260242fd7ef6c3cfe0f3adfce6

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 8844882a422fb0c8b6acaafd35beac3d877972f7d1c6f2709ead1f7e7d41b4ae
MD5 e4b45867e4908ea7f6f9becbfe4c1329
BLAKE2b-256 b2a7397495116b742237ed30cc3b793978d62be1e178cd66309d72daf9c39258

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3af31a19083908d657f84f18d714968a2862f755a2d036140fd22862b813823c
MD5 a6dab3ccdc8e7c49fc893f1586083765
BLAKE2b-256 a08e2f61668c67a31c11fc90631e25de3d3ec6369a0767bab6a3b19a0ccfa91a

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 139.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bc4945758025521f20ffe6e3bccad885bff8367cbeb9ffc3ed8637530a4ee0ba
MD5 b9b514a2f0e08ad6ee8c2d8773e2574e
BLAKE2b-256 a08daa0510ac095d82e46bc30b01aa2e200ebf212e24f471aae5eb933ce016c3

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2dcb89fce18260ba3256347062dd5c86916538ab54a5e3f2fa3da4cce80d40ea
MD5 c75a1c94a15853840baa1a87f29d8198
BLAKE2b-256 d48ce8260846ab07dfceb9b51dfc3cbe35b3ed5979b64d6fe594a2e70f001675

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e775905c706d57c4939d08622775ad446a0084878feb8c7edd08a77762ca57f8
MD5 07c334e5d607b70a92c1dcabf98ecb40
BLAKE2b-256 1c09fd5832918b809f5e4198e6ae13409c25a89c405f54139591ca7432d73666

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 139.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1b0ff7d080abe10de9b5d2c207d54e7a2a628b9a3715e82ef0a72a07c88d906c
MD5 499a4e1c1dd15c88c37f111fac7f29b6
BLAKE2b-256 af14216699a162a9430a558aa86f271ea42c36bf0a7f7ced38de2b6d1dd7c0cc

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 25acc0ecfe6c469a0f628a07ad1af4d3149537c88c15b18ee35a38a5eef0fb05
MD5 673982fe694466928359084cc094679b
BLAKE2b-256 45616b55dfd743d1609b32662a4b56407f3d798217243589e39b9d12e0bf4541

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 52882debede5c584b313146f730b9d6e17585fc7e94abe5d4cb9a9178fd2705e
MD5 6d982e97777e55097158a1e23bbfba89
BLAKE2b-256 0efe3a9734889981f5e073a22a3cc0a5fa224348d814abb8ab268b54a2e4e74f

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: gmssl_pyx-2.0.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 139.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for gmssl_pyx-2.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 61f1faa5c995cee2b8cb71612f5fdeaccf52d3b3ddbf7602badc7a6e2c3352f1
MD5 33d5b1a4ce933bdbd3154fcab8ed80a9
BLAKE2b-256 66270b285c3ddcbe300dbcae3532fff45278a2bb38d88d67c6bb72c501fed823

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3ce8d6119fc1f868863e71fbfd3aa768ccab4f331cd7cf59a52b5b58c604a28b
MD5 23da5877eb23da42d3aac7c20d04ae59
BLAKE2b-256 bb6a5f6f42314afc1251b96b703c40159074cc450c0e11348fa66d0fea58c0da

See more details on using hashes here.

File details

Details for the file gmssl_pyx-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gmssl_pyx-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b26363b9defca9f6441406e158142e6d6aab6db013eba91a1d89470f5c5eeb17
MD5 e501ec13d1d509bf0ddf8ebda8b730d7
BLAKE2b-256 304107dad4e2df4abd0a38e1e2c82af822c5a4a3430fc694b0e63374760123f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page