-
Notifications
You must be signed in to change notification settings - Fork 257
国密支持
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
hello world