Skip to content

国密支持

linj edited this page Nov 23, 2022 · 1 revision

国密支持

简介

chain33联盟链支持国密标准,集成了国密SM2(非对称加解密,签名,验签)算法, SM3哈希算法, SM4对称加解密算法等一系列国家密码局认定的商用密码算法,适用于所有常用的国密应用场景。

使用方法

用户通过chain33-sdk生成国密公私钥对,构造交易使用国密签名,然后发送到chain33区块链,chain33节点通过国密算法验证签名。

环境搭建

根据具体需要,选择搭建chain33单节点,私链或者联盟链,搭建方法请参考:

节点不需要对国密有额外的配置,节点会根据签名类型自适应验签方式。

构造国密交易

// 生成公私钥对
SM2KeyPair keyPair = SM2Util.generateKeyPair();

// 构造交易
Transaction transation = createTxRaw(toAddress, execer.getBytes(), payLoad, DEFAULT_FEE);

// 交易签名
byte[] msg = encodeProtobuf(transation)
byte[] priv = keyPair.getPrivateKey().toByteArray()
byte[] uid = "gm test".getBytes()
sign(SignType.SM2, msg, priv, uid, transation);

// 交易发送
byte[] encodeProtobufWithSign = encodeProtobufWithSign(transation);
String transationHash = HexUtil.toHexString(encodeProtobufWithSign);
String hash = chain33client.submitTransaction(transactionHash);

国密签名结合证书校验

国密签名可以结合证书一起使用,使用示例参考chain33 ca

国密接口说明

国密的接口文档,请参考chain33-sdk

Clone this wiki locally