API 参考

包装模块 gmalglib.wrapped 模块内所有函数已经自动导入 gmalglib 命名空间, 可以按面向过程方式直接使用, 与调用算法对象效果一致.

继续向下阅读 gmalglib 中涉及的所有算法对象及其参数说明.


gmalglib

国密算法库

Raises:

gmalglib.sm3_digest(msg)

计算 SM3 哈希值.

gmalglib.sm3_kdf(sbytes, klen)

SM3 密钥派生函数.

gmalglib.sm3_mac(msg, key)

SM3 消息认证码.

gmalglib.sm4_encrypt(key, block)

SM4 数据块加密.

gmalglib.sm4_decrypt(key, block)

SM4 数据块解密.

gmalglib.zuc_generate(key, iv, klen)

ZUC 伪随机密钥流生成.

gmalglib.sm2_is_sk_valid(sk)

测试私钥是否合法.

gmalglib.sm2_is_pk_valid(pk)

测试公钥是否合法.

gmalglib.sm2_is_keypair(sk, pk)

检查是否是合法密钥对.

gmalglib.sm2_get_pk(sk, pc_mode='raw')

由私钥得到公钥.

gmalglib.sm2_convert_pk(pk, pc_mode='raw')

转换公钥格式.

gmalglib.sm2_generate_keypair(pc_mode='raw')

生成密钥对.

Returns:

gmalglib.sm2_get_entity_info(pk, uid=__sm2.SM2_DEFAULT_UID)

获取实体信息.

gmalglib.sm2_sign_digest(sk, digest, uid=__sm2.SM2_DEFAULT_UID)

对摘要进行签名.

gmalglib.sm2_sign(sk, msg, uid=__sm2.SM2_DEFAULT_UID)

对消息进行签名.

gmalglib.sm2_verify_digest(pk, digest, uid=__sm2.SM2_DEFAULT_UID)

对摘要进行验签.

gmalglib.sm2_verify(pk, msg, uid=__sm2.SM2_DEFAULT_UID)

对消息进行验签.

gmalglib.sm2_encrypt(pk, plain, pc_mode='raw')

加密数据.

gmalglib.sm2_decrypt(sk, cipher)

解密数据.

gmalglib.sm2_begin_key_exchange(sk, pc_mode='raw')

开始密钥交换.

Returns:
  • t( bytes ) –

    t 值.

  • random_pt( bytes ) –

    随机点 R.

gmalglib.sm2_end_key_exchange(pk, t, random_pt, pk_another, is_responder, klen, uid=__sm2.SM2_DEFAULT_UID, uid_another=__sm2.SM2_DEFAULT_UID)

结束密钥交换.

Parameters:
  • pk (bytes) –

    自己的公钥.

  • t (bytes) –

    从 begin_key_exchange 得到的 t 值.

  • random_pt (bytes) –

    对方的随机点 R.

  • pk_another (bytes) –

    对方的公钥.

  • is_responder (bool) –

    自己是否是响应方, 否则是发起方.

  • klen (int) –

    要生成的密钥长度.

  • uid (bytes, default: SM2_DEFAULT_UID ) –

    自己的用户 ID.

  • uid_another (bytes, default: SM2_DEFAULT_UID ) –

    对方的用户 ID.

Returns:
  • key( bytes ) –

    交换的密钥.


gmalglib.wrapped

算法包装模块, 提供过程式调用方式.

gmalglib.wrapped.sm3_digest(msg)

计算 SM3 哈希值.

gmalglib.wrapped.sm3_kdf(sbytes, klen)

SM3 密钥派生函数.

gmalglib.wrapped.sm3_mac(msg, key)

SM3 消息认证码.

gmalglib.wrapped.sm4_encrypt(key, block)

SM4 数据块加密.

gmalglib.wrapped.sm4_decrypt(key, block)

SM4 数据块解密.

gmalglib.wrapped.zuc_generate(key, iv, klen)

ZUC 伪随机密钥流生成.

gmalglib.wrapped.sm2_is_sk_valid(sk)

测试私钥是否合法.

gmalglib.wrapped.sm2_is_pk_valid(pk)

测试公钥是否合法.

gmalglib.wrapped.sm2_is_keypair(sk, pk)

检查是否是合法密钥对.

gmalglib.wrapped.sm2_get_pk(sk, pc_mode='raw')

由私钥得到公钥.

gmalglib.wrapped.sm2_convert_pk(pk, pc_mode='raw')

转换公钥格式.

gmalglib.wrapped.sm2_generate_keypair(pc_mode='raw')

生成密钥对.

Returns:

gmalglib.wrapped.sm2_get_entity_info(pk, uid=__sm2.SM2_DEFAULT_UID)

获取实体信息.

gmalglib.wrapped.sm2_sign_digest(sk, digest, uid=__sm2.SM2_DEFAULT_UID)

对摘要进行签名.

gmalglib.wrapped.sm2_sign(sk, msg, uid=__sm2.SM2_DEFAULT_UID)

对消息进行签名.

gmalglib.wrapped.sm2_verify_digest(pk, digest, uid=__sm2.SM2_DEFAULT_UID)

对摘要进行验签.

gmalglib.wrapped.sm2_verify(pk, msg, uid=__sm2.SM2_DEFAULT_UID)

对消息进行验签.

gmalglib.wrapped.sm2_encrypt(pk, plain, pc_mode='raw')

加密数据.

gmalglib.wrapped.sm2_decrypt(sk, cipher)

解密数据.

gmalglib.wrapped.sm2_begin_key_exchange(sk, pc_mode='raw')

开始密钥交换.

Returns:
  • t( bytes ) –

    t 值.

  • random_pt( bytes ) –

    随机点 R.

gmalglib.wrapped.sm2_end_key_exchange(pk, t, random_pt, pk_another, is_responder, klen, uid=__sm2.SM2_DEFAULT_UID, uid_another=__sm2.SM2_DEFAULT_UID)

结束密钥交换.

Parameters:
  • pk (bytes) –

    自己的公钥.

  • t (bytes) –

    从 begin_key_exchange 得到的 t 值.

  • random_pt (bytes) –

    对方的随机点 R.

  • pk_another (bytes) –

    对方的公钥.

  • is_responder (bool) –

    自己是否是响应方, 否则是发起方.

  • klen (int) –

    要生成的密钥长度.

  • uid (bytes, default: SM2_DEFAULT_UID ) –

    自己的用户 ID.

  • uid_another (bytes, default: SM2_DEFAULT_UID ) –

    对方的用户 ID.

Returns:
  • key( bytes ) –

    交换的密钥.


gmalglib.sm2

SM2 算法实现.

Attributes:
  • SM2_PARAMS_LENGTH (int) –

    SM2 参数长度

  • SM2_PARAMS_P (bytes) –

    SM2 参数 p

  • SM2_PARAMS_A (bytes) –

    SM2 参数 a

  • SM2_PARAMS_B (bytes) –

    SM2 参数 b

  • SM2_PARAMS_G (Tuple[bytes, bytes]) –

    SM2 参数 G

  • SM2_PARAMS_N (bytes) –

    SM2 参数 n

  • SM2_PCMODE_RAW (int) –

    未压缩模式

  • SM2_PCMODE_COMPRESS (int) –

    压缩模式

  • SM2_PCMODE_MIX (int) –

    混合模式

  • SM2_DEFAULT_UID (bytes) –

    默认 uid

  • SM2_UID_MAX_LENGTH (int) –

    uid 最大长度

  • SM2_ENTITYINFO_LENGTH (int) –

    实体信息长度

  • SM2_SK_LENGTH (int) –

    私钥长度

  • SM2_PK_HALF_LENGTH (int) –

    压缩公钥长度

  • SM2_PK_FULL_LENGTH (int) –

    未压缩公钥长度

  • SM2_MSG_MAX_LENGTH (int) –

    签名消息最大长度

  • SM2_SIGN_R_LENGTH (int) –

    签名值 r 长度

  • SM2_SIGN_S_LENGTH (int) –

    签名值 s 长度

  • SM2_SIGNATURE_LENGTH (int) –

    签名长度

  • SM2_ENCRYPT_C1_HALF_LENGTH (int) –

    密文 C1 压缩长度

  • SM2_ENCRYPT_C1_FULL_LENGTH (int) –

    密文 C1 未压缩长度

  • SM2_ENCRYPT_C3_LENGTH (int) –

    密文 C3 长度

gmalglib.sm2.SM2(sk=None, pk=None, uid=SM2_DEFAULT_UID, *, pc_mode=SM2_PCMODE_RAW, rnd_fn=None)

SM2 算法对象.

Parameters:
  • sk (Optional[bytes], default: None ) –

    私钥.

  • pk (Optional[bytes], default: None ) –

    公钥, sk 参数有效时忽略 pk.

  • uid (bytes, default: SM2_DEFAULT_UID ) –

    用户 ID.

  • pc_mode (int) –

    点压缩模式.

  • rnd_fn (Optional[Callable[[int], bytes]]) –

    可选的用于产生指定长度随机字节函数.

gmalglib.sm2.SM2.entity_info property

获取实体信息.

gmalglib.sm2.SM2.is_sk_valid(sk) staticmethod

测试私钥是否合法.

gmalglib.sm2.SM2.is_pk_valid(pk) staticmethod

测试公钥是否合法.

gmalglib.sm2.SM2.is_keypair(sk, pk) staticmethod

检查是否是合法密钥对.

gmalglib.sm2.SM2.get_pk(sk, pc_mode=SM2_PCMODE_RAW) staticmethod

由私钥得到公钥.

gmalglib.sm2.SM2.convert_pk(pk, pc_mode=SM2_PCMODE_RAW) staticmethod

由私钥得到公钥.

gmalglib.sm2.SM2.generate_keypair()

生成密钥对.

Returns:

gmalglib.sm2.SM2.sign_digest(digest)

对摘要进行签名.

gmalglib.sm2.SM2.verify_digest(digest, signature)

对摘要及其签名验签.

gmalglib.sm2.SM2.sign(message)

对完整消息进行签名.

gmalglib.sm2.SM2.verify(message, signature)

对完整消息及其签名验签.

gmalglib.sm2.SM2.encrypt(plain)

加密数据.

gmalglib.sm2.SM2.decrypt(cipher)

解密数据.

gmalglib.sm2.SM2.begin_key_exchange()

开始密钥交换.

Returns:
  • t( bytes ) –

    t 值.

  • random_pt( bytes ) –

    随机点 R.

gmalglib.sm2.SM2.end_key_exchange(t, random_pt, pk, is_responder, klen, uid=SM2_DEFAULT_UID)

结束密钥交换.

Parameters:
  • t (bytes) –

    使用 begin_key_exchange 产生的自己的 t 值.

  • random_pt (bytes) –

    对方的随机点 R.

  • pk (bytes) –

    对方的公钥.

  • is_responder (bool) –

    自己是否是响应方, 否则是发起方.

  • klen (int) –

    要生成的密钥长度.

  • uid (bytes, default: SM2_DEFAULT_UID ) –

    对方的用户 ID.

Returns:
  • key( bytes ) –

    交换的指定长度密钥.


gmalglib.sm3

SM3 算法实现.

Attributes:
  • SM3_MAX_MSG_BITLEN (int) –

    最大消息长度

  • SM3_DIGEST_LENGTH (int) –

    摘要长度

  • SM3_KDF_MAX_LENGTH (int) –

    密钥派生最大长度

  • SM3_MAC_LENGTH (int) –

    消息认证码长度

gmalglib.sm3.SM3(data=b'')

SM3 算法对象.

Parameters:
  • data (bytes, default: b'' ) –

    初始化数据.

gmalglib.sm3.SM3.update(data)

更新内部状态.

gmalglib.sm3.SM3.digest()

获取当前状态哈希值.

gmalglib.sm3.SM3.reset()

重置内部状态.

gmalglib.sm3.SM3.copy()

拷贝当前对象及其内部状态.

gmalglib.sm3.SM3.derive_key(klen)

密钥派生函数.

gmalglib.sm3.SM3.mac(key)

消息认证码.


gmalglib.sm4

SM4 算法实现.

Attributes:
  • SM4_KEY_LENGTH (int) –

    密钥长度

  • SM4_BLOCK_LENGTH (int) –

    数据分组长度

gmalglib.sm4.SM4(key)

Parameters:
  • key (bytes) –

    密钥.

gmalglib.sm4.SM4.encrypt(block)

加密数据块.

gmalglib.sm4.SM4.decrypt(block)

解密数据块.


gmalglib.zuc

ZUC 算法实现.

Attributes:
  • ZUC_KEY_LENGTH (int) –

    密钥长度

  • ZUC_IV_LENGTH (int) –

    初始向量长度

  • ZUC_WORD_LENGTH (int) –

    伪随机字长

gmalglib.zuc.ZUC(key, iv)

ZUC 算法对象.

Parameters:
  • key (bytes) –

    密钥.

  • iv (bytes) –

    初始化向量.

gmalglib.zuc.ZUC.generate()

生成伪随机字

gmalglib.zuc.ZUC.copy()

拷贝当前对象及其内部状态.


问题没有得到解决? 不如看看源码或者提个 Issue.