package
0.0.0-20231224052254-3c905e5ef12b
Repository: https://github.com/assetcloud/chain.git
Documentation: pkg.go.dev

# README

crypto

功能

  • 支持 ed25519, secp256k1, sm2
  • 统一的 PrivKey,Pubkey, Signature 接口, 详见 crypto.go

依赖

  • sm2 编译依赖 gmssl 2.0 版本
  • 安装:bash ./deps/install_gmssl.sh

配置

支持加密插件使能开启, 分叉高度等配置

EnableTypes

指定开启若干加密插件(插件名称),不配置默认启用所有

[crypto] #示例
enableTypes=["secp256k1", "sm2"]

EnableHeight

分叉高度配置, 即区块高度达到配置高度后启用插件, 不配置采用内置的启用高度, 负数表示不启用

[crypto] #示例
[crypto.enableHeight]
"secp256k1" = 0
"sm2"= 100

cryptoID

加密插件 ID 值, int32 类型

手动指定

注册插件时, 支持手动指定插件 ID(crypto.WithRegOptionTypeID(manualID))

  • 手动指定 ID 范围, (0, 4096), 低位 12 位
  • 建议单元测试调用 CryptoGetCryptoList 接口查看已注册 ID 情况.

自动生成

注册时未指定手动 ID, 将根据插件名称随机生成, 存在冲突时需要手动指定解决

相关说明

cryptoID 主要用于交易签名算法类型判定, cryptoID 不等同于交易 SignatureID

  • 接口 chain/types/ExtractCryptoID, 基于 signID 解析 cryptoID
  • 底层设计, 参考 chain/types/sign.md

# Packages

Package client 实现系统消息队列事件处理,新增client包避免循环引用.
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.

# Functions

BasicValidation 公私钥数据签名验证基础实现.
CRandBytes This uses the OS and the Seed(s).
CRandHex RandHex(24) gives 96 bits of randomness, strong enough for most purposes.
CReader Returns a crand.Reader mixed with user-supplied entropy.
GenDriverTypeID 根据名称生成driver type id.
GetCryptoList 获取加密插件列表,名称和对应的类型值.
GetName 获取name.
GetType 获取type.
Init init crypto.
Load 加载加密插件, 内部会检测在指定区块高度是否使能 不考虑使能情况, 只做插件加载, blockHeight传负值, 如-1.
MixEntropy Mix additional bytes of randomness, e.g.
Register 注册加密算法,支持选项,设置typeID相关参数.
Ripemd160 加密算法.
Sha256 加密算法.
Sm3Hash 加密算法.
ToAggregate 判断签名是否可以支持聚合签名,并且返回聚合签名的接口.
WithLoadOptionEnableCheck 在New阶段根据当前区块高度进行插件使能检测.
WithRegOptionCGO 设置为CGO版本.
WithRegOptionDefaultDisable 设置默认不启用.
WithRegOptionInitFunc 设置插件初始化接口.
WithRegOptionTypeID 手动指定typeID, 不指定情况,系统将根据name自动生成typeID.

# Constants

MaxManualTypeID 手动指定ID最大值 4095.

# Variables

ErrDriverNotEnable 加密插件未开启.
ErrNotSupportAggr 不支持聚合签名.
ErrSign 签名错误.
ErrUnknownDriver 未注册加密插件.

# Structs

CertSignature 签名.
Config crypto模块配置.
Driver 加密插件及相关信息.

# Interfaces

AggregateCrypto 聚合签名.
Crypto 加密.
PrivKey 私钥.
PubKey 公钥.
Signature 签名.

# Type aliases

DriverInitFunc 插件初始化接口,参数是序列化的json数据,需要unmarshal为自定义的结构.
LoadOption load crypto可选参数.
RegOption Register Driver可选参数,设置相关参数默认值.