安装配置
一.ChainSQL国密版简介

ChainSQL国密版相较于标准ChainSQL,主要是将有关于公私钥生成、加解密、哈希等密码操作算法替换为我国国家密码局认定的国产密码算法,即通常所说的国密算法,常见的国密算法主要有SM2、SM3、SM4、SM7、SM9等已经成熟的密码算法。

ChainSQL国密版用到的是其中的SM2、SM3、SM4算法:

SM2:非对称加密算法,负责公私钥生成,加解密,签名验签

SM3:杂凑算法,负责对数据的哈希运算

SM4:对称加密算法,负责利用会话密钥对数据进行加解密处理

ChainSQL国密版有两种国密算法提供方式,一种是硬件加密板卡,另一种是软件加密实现。

二.编译ChainSQL国密版

1. 代码修改:

在gmencrypt/hardencrypt/HardEncrypt.h文件中将GM_ALG_PROCESS宏定义的注释取消。

2. 编译修改:

Linux:scons 编译的时候添加编译选项“--enable-gmalg”。

三.ChainSQL国密版运行

Linux:需要将工程的根目录下third_party文件夹下的gmencryptlib文件夹使用”cp -a”拷贝到可执行文件的同级目录中。

四.ChainSQL国密版与ChainSQL标准版区别

1. 由于采用了国密算法,使得其产生的公私钥长度发生变化,如创建帐号:去掉了master_key、master_seed_hex,将master_seed改为private_key,公私钥的长度增加。

之前的返回结果:


{

"result":{

    "account_id":"zHCvhtqhXuBvWt5g79gyXfpG8VcrvUm9E9",

    "key_type":"secp256k1",

    "master_key":"ODD GAUL TOM JOLT MALE CURT JAB LEW TOP NEIL DOLT CORN",

    "master_seed":"xng7BET4G7m92t6SziJ2yMqXpbzqj",

    "master_seed_hex":"D64E8761078D241FDC667BD10539512E",

    "public_key":"aBQ6x5JsanwB4d529Z3HAeXcXt32tFpD7JZhSmWA3W5C3FP3PVJV",

    "public_key_hex":"036A131B7087A03CFED3D3AAF69F7086B41676F2AC242F04EC9B6D1A4F43E7DD34",

    "status":"success"

    }

}	     		
	     	

现在的返回结果:


{

"result" : {

    "account_id" : "zJ69uqLGaEQ6cRe7uHTmRy5k1Kt6nUgZkp",

    "key_type" : "gmalg",

    "private_key":"p98y7z1MbUJSsR6g7UWC2eF6nxd4wXhoqCH82h7rBwr19ZV5rJq",

    "public_key":"pYvVtG1fg9mnu3zqDnEZv2gZmTRVkf5w6kWXQPP2WoGFeygf48ZSdw
E3Tiq5L85HX4quVL7AGQ2RoqFLdxBBjtaXmoznQna1", "public_key_hex":"47F34CA64CCBDF4E9E5660AAA6166007D8EFAFF3A6FB1849A7305D14F07448AE1
5BDFC83810523944EE4D3F997C67BCEF27F3A6E68560E28639FE94347A2CF80FE", "status" : "success" } }

2. 命令需要添加public_key,如激活账户命令:
之前的激活账户命令:

			
{

"method": "submit",

  "params": [

      {

         "offline": false,

         "secret": "zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M",

         "tx_json": {

              "Account": "zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M",

              "Amount":"10000000000",

              "Destination": "rHCvhtqhXuBvWt5g79gyXfpG8VcrvUm9E9",

              "TransactionType": "Payment"

          },

          "fee_mult_max": 1000

       }

  ]

}
		

现在的激活账户命令:

			
{

   "method": "submit",

   "params": [

       {

          "offline": false,

          "secret":"p97evg5Rht7ZB7DbEpVqmV3yiSBMsR3pRBKJyLaRWt7SL5gEeBb",

          "public_key":pYvWhW4crFwcnovo5MhL71j5PyTWSJi2NVuzPYUzE9UYcSVLp
29RhtssQB7seGvFmdjbtKRrBQ4g9bCW5hjBQSeb7LePMwFM", "tx_json": { "Account": "rN7TwUjJ899savNXZkNJ8eFFv2VLKdESxj", "Amount":"10203040506", "Destination": "r3kUqzK694onnurofurX2XvNLt9GsBJHwF", "TransactionType": "Payment" }, "fee_mult_max": 1000 } ] }

3. 表同步时配置文件的修改

使用国密算法进行加密表同步的时候需要在配置文件中添加user的私钥,例如:[sync_tables] rf9KEF7CDx5KLUSJtiCejas9WQNmLHApV9 peersafe rf9KEF7CDx5KLUSJtiCejas9WQNmLHApV9 p9iow3RqaWHgRbtqf6g9297vbH6tKSzmLtPxoqfnSyCBpDSvyrG 而对于非加密表的同步则跟ChainSQL标准版的同步规则一致,不用添加私钥。