使用国密¶
目前我们开源的国密密码学插件支持SM2/SM3/SM4算法,并且国密插件支持对Nist P256算法生成的地址和签名数据进行验签。
如果要创建一个基于国密算法的链,需要完成以下几个步骤:
首先确认使用了v3.7以上的XuperChain版本,并且编译产出中包含了*plugins/crypto/crypto-gm.so.1.0.0*,在插件配置*conf/plugins.conf*中确认包含如下配置内容:
1 2 3 4 5 6 7 8 9 10 11 | {
"crypto":[
....,
{
"subtype": "gm",
"path": "plugins/crypto/crypto-gm.so.1.0.0",
"version": "1.0.0",
"ondemand": false
}],
....
}
|
2. 首先对每个节点创建一个基于国密算法生成的节点私钥和地址。 注意,data/keys*目录原来保存的是默认密码学插件生成的私钥,可以删除原私钥目录,或者使用-f*参数强制覆盖原私钥。如果不希望覆盖原节点密钥,可以在*–output*参数后面指定新的私钥目录。私钥生成后,可以查看私钥文件,其中*Curvname*应该是**SM2-P-256**。
1 | xchain-cli account newkeys --output data/keys --cryptotype gm
|
修改待创建链的创世块配置,通过**crypto**字段指定默认密码学插件为国密插件,并修改矿工地址为新生成的国密私钥对应的地址。一般默认创世块配置位于*data/config/xuper.json*,修改创世块配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | {
...,
"predistribution": [
{
"address": "此处替换为国密address",
"quota": "100000000000000000000"
}
],
"crypto": "gm",
...,
"genesis_consensus": {
"name": "tdpos",
"config": {
...,
"init_proposer": {
"1": [
"此处替换为国密address"
]
}
}
}
}
|
创建链并启动:
1 2 | xchain-cli createChain
nohup ./xchain &
|
使用命令行进行操作时,需要通过*–cryptotype*参数指定加密类型为国密,例如transfer命令。
1 | xchain-cli transfer --to alice --amount 1 --keys data/keys --cryptotype gm
|
目前国密只支持使用Go SDK调用,后续会支持更多SDK。